基于docker-compose、prometheus、grafana来搭建Linux服务器的监控。

用到的几个expoter说明:

  • node-exporter: 监控整个主机所有资源
  • cadvisor: 监控容器资源

创建目录

在主机上创建一些目录, 用来持久化监控数据和配置

1
2
3
mkdir -p /opt/docker/monitor/config
mkdir -p /opt/docker/monitor/data
chmod 777 /opt/docker/monitor/data

创建docker-compose.yml

切换到/opt/docker/monitor目录, 新建docker-compose.yml, 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
version: '2'
networks:
monitor:
driver: bridge

services:
grafana:
image: grafana/grafana
container_name: monitor-grafana
hostname: grafana
restart: always
volumes:
- /opt/docker/monitor/data:/var/lib/grafana
ports:
- '11000:3000'
networks:
- monitor

prometheus:
image: prom/prometheus
container_name: monitor-prometheus
hostname: prometheus
restart: always
volumes:
- /opt/docker/monitor/config/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- '11001:9090'
networks:
- monitor

node-exporter:
image: quay.io/prometheus/node-exporter
container_name: monitor-node-exporter
hostname: node-exporter
restart: always
ports:
- '11002:9100'
networks:
- monitor

cadvisor:
image: google/cadvisor
container_name: monitor-cadvisor
hostname: cadvisor
restart: always
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
devices:
- /dev/kmsg:/dev/kmsg
ports:
- '11003:8080'
networks:
- monitor

10619

创建prometheus.yml

切换到/opt/docker/monitor/config目录, 新建prometheus.yml,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).

scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
static_configs:
- targets: ['10.0.0.239:11001']

- job_name: 'node-exporter'
static_configs:
- targets: ['10.0.0.239:11002']

- job_name: 'cadvisor'
static_configs:
- targets: ['10.0.0.239:11003']

页面配置

  1. 启动容器 docker-compose up -d

  2. 待容器成功启动之后,进入dashboard页面, 页面地址:http://10.0.0.239:11000, 第一次进入时的默认用户名和密码是:admin/admin, 然后需要设置新密码

  3. 配置datasource, 选择prometheus, 其中2处的URL填写: http://10.0.0.239:11001

  4. 从模板网站找到自己喜欢的模板, 比如模板ID为1860, 直接输入ID, 然后点击2处的load导入即可

    说明一下几个exporter用到的比较好用的模板ID

    • node-exporter: 1860
    • process-exporter: 249
    • cadvisor: 11600