准备
首先确保已经安装了docker和docker-compose
介绍

首先拿出官方的生态架构图简单介绍一下整个体系架构
Prometheus 是整个监控体系的核心,它中包含了时序数据库和PromQL查询语言
Exporter是监控数据收集节点,由Prometheus根据配置主动拉取监控数据,Prometheus官方提供了一些exporter如node-exporter
Grafana是一个支持多种数据源配置的数据可视化系统,我们需要安装Grafana后将Prometheus作为数据源进行连接
除此之外Short-lived jobs和Alertmanager本文暂不涉及
开始搭建
首先可以创建一个文件夹,用于存放搭建过程中涉及到的所有文件,我这里创建一个moniter文件夹,后续均在该文件夹中进行操作
Prometheus
创建prometheus.yml
1 2 3 4 5 6 7 8 9 10 11 12
| global: scrape_interval: 15s evaluation_interval: 15s
scrape_configs: - job_name: 'job1' static_configs: - targets: ['host.docker.internal:9100']
|
targets中可以添加多个exporter的地址,我这里只监控docker所在的宿主机,docker中宿主机可通过域名host.docker.internal
进行访问
docker-compose配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| prometheus: container_name: prometheus hostname: prometheus image: "prom/prometheus:latest" ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - ./promdata:/prometheus restart: always environment: - TZ=Asia/Shanghai user: root command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--storage.tsdb.retention=30d' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' extra_hosts: - "host.docker.internal:host-gateway"
|
volumes中将宿主机中之前配置的prometheus.yml
文件映射到容器中,再映射宿主机中的promdata`文件夹到容器中,作为数据保存的文件夹
为了在容器中使用域名host.docker.internal
访问宿主机,需要使用extra_hosts参数配置
Grafana
创建空文件grafana.ini
,以后若有配置需求,可修改该文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| grafana: container_name: grafana image: "grafana/grafana:latest" hostname: grafana ports: - "3000:3000" volumes: - ./grafana.ini:/etc/grafana/grafana.ini - ./grafana:/var/lib/grafana restart: always user: root environment: - TZ=Asia/Shanghai extra_hosts: - "host.docker.internal:host-gateway"
|
docker-compose配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| grafana: container_name: grafana image: "grafana/grafana:latest" hostname: grafana ports: - "3000:3000" volumes: - ./grafana.ini:/etc/grafana/grafana.ini - ./grafana:/var/lib/grafana restart: always user: root environment: - TZ=Asia/Shanghai
|
Grafana需要连接Prometheus
故也需要配置宿主机域名
Node-Exporter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| node-exporter: container_name: node-exporter hostname: node-exporter image: "prom/node-exporter:latest" ports: - "9100:9100" privileged: true volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro network_mode: "host" pid: host restart: always environment: - TZ=Asia/Shanghai
|
启动配置
使用docker-compose up
一键启动所有服务
宿主机打开浏览器进入http://localhost:3000
即可打开Grafana前端界面,输入默认用户名密码均为admin
,提示修改密码,我们也可以直接点击SKIP
点击进入数据源配置,添加一条Prometheus数据源


点击Save & test
,测试通过后就可以添加监控图表了

添加图表
点击右上角的+号,点击Import dashboard
,可以导入其他人制出的成品图表,导入方式可以通过JSON文件导入,也可以通过ID编号导入
这里我们导入图表
Node Exporter Full | Grafana Labs
可以直接点击Copy ID to clipboard
复制ID,回到导入界面点击Load
即可
之后如果一切正常,应该就能够看到监控面板
