前置操作
Grafana 安装
使用 docker-compose:
1
2
3
4
5
6
7
8
9
|
services:
grafana:
ports:
- 3010:3000
container_name: grafana
volumes:
- ./grafana-storage:/var/lib/grafana
image: grafana/grafana
restart: always
|
初始的登录用户名的密码均为 admin
。
Prometheus 安装
同样使用 docker-compose:
1
2
3
4
5
6
7
8
|
services:
prometheus:
ports:
- 9090:9090
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
image: prom/prometheus
restart: always
|
配置文件为 prometheus.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
|
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: master
- job_name: master
static_configs:
- targets: ['172.17.0.1:9100']
labels:
instance: master
- job_name: nas1
static_configs:
- targets: ['<NAS1-IP>:<PORT1>']
labels:
instance: nas1
- job_name: gpu_nas1
static_configs:
- targets: ['<NAS1-IP>:<PORT2>']
labels:
instance: nas1
# More config...
|
访问 http://<MASTER-IP>:9090 可以查看 Prometheus 是否正常启动。
硬盘监控
参考开源项目 S.M.A.R.T-disk-monitoring-for-Prometheus。
项目提供了 docker 镜像,其通过 crontab 定时使用 smartmon 收集硬盘信息,并输出到文件 /var/lib/node_exporter/textfile_collector/smart_metrics.prom
。node-exporter 读取 smart_metrics.prom
并上传硬盘信息到 Prometheus。由于同样使用 docker 搭建 node-exporter,我们修改 docker-compose 的配置文件,将两者结合起来:
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
|
services:
node-exporter:
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
- textfile:/var/lib/node_exporter/textfile_collector
#ports:
# - 9100:9100
command:
- '--collector.textfile.directory=/var/lib/node_exporter/textfile_collector'
network_mode: host
image: prom/node-exporter
restart: always
smartmon:
privileged: true
volumes:
- textfile:/var/lib/node_exporter/textfile_collector
#network_mode: host
image: ghcr.io/micha37-martins/smartmon:latest
#image: smartmon-1min:latest
restart: always
volumes:
textfile:
|
- 建立了一个新的卷 textfile。 textfile 是服务 node-exporter 和服务 smartmon 的共享卷,用来存储硬盘信息。
- 设置了 node-exporter 的信息收集目录 /var/lib/node_exporter/textfile_collector。此目录恰好为卷 textfile 的路径。参考项目 node-exporter,其支持设置参数
--collector.textfile.directory
表示从本地磁盘读取的统计信息目录。
为了能持久化监控信息,我们也可以把 textfile 挂载到本地 ./textfile
。
注意
在镜像 ghcr.io/micha37-martins/smartmon:latest 中,crontab 设置的是每五分钟执行一次,可以将其改成每分钟执行一次以得到更细粒度的统计信息。
1
|
*/1 * * * * /usr/local/bin/smartmon.sh > /var/lib/node_exporter/textfile_collector/smart_metrics.prom
|
最后在 Grafana 中加入面板 10530 即可导入硬盘监控信息(包括温度、在线时间和其他更详细的信息)。
GPU 监控
参考 Nvidia GPU Exporter 进行安装,并在 Grafana 中加入面板 14574 即可导入 GPU 监控信息。
设置开机启动:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[Unit]
Description=Nvidia GPU Exporter
After=network-online.target
[Service]
Type=simple
User=nvidia_gpu_exporter
Group=nvidia_gpu_exporter
ExecStart=/usr/bin/nvidia_gpu_exporter
SyslogIdentifier=nvidia_gpu_exporter
Restart=always
RestartSec=1
[Install]
WantedBy=multi-user.target
|