date:
updated:

折腾一下Prometheus集群监控


由于目前手头的服务器确实有点多,并且确实缺少一个可靠的监控+告警系统,所以我就开始折腾起了开源的集群监控解决方案

安装 prometheus

由于全程都在用Docker,所以安装过程还算顺利,直接拉取镜像,配置环境变量然后运行就行了

1
sudo docker run -d -p 9090:9090 --name prometheus -v /home/prometheus/data:/data  prom/prometheus --config.file=/data/prometheus.yml

然后改一下配置文件

下面是我的部分配置文件,可以进行一下参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
global:
scrape_interval: 5s
evaluation_interval: 10s

alerting:
alertmanagers:
- static_configs:
- targets: ['ip:port']

rule_files:
- "/prometheus-data/rule/*.yml"

scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets:
- localhost:9090
- job_name: cadvisor
static_configs:
- targets:
- ip:port

安装好之后打开网页应该会看到这样的界面

安装 cadvisor 和 node-exporter

cadvisor 可以监控Docker


node-exporter 可以监控系统信息


它们俩也可以使用docker安装,直接运行

1
docker run -d -p 8080:8080 --name cadvisor -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro google/cadvisor:latest

1
docker run -d -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" --net="host" prom/node-exporter -collector.procfs /host/proc -collector.sysfs /host/sys -collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

安装node-exporter的时候记得根据实际情况修改一下参数,否则可能会出现采集不到数据的情况


对接完成之后就可以在Prometheus里面看到数据了

安装 alertmanagers

一样是使用docker,直接运行

1
docker run -d -p 9093:9093 --name alertmanager -v /home/prometheus/alertmanager/config:/config -v /home/prometheus/alertmanager/data:/alertmanager/data prom/alertmanager:latest

就行了

配置告警

prometheus的rule_files是告警规则的文件路径,具体写法大致如下

1
2
3
4
5
6
7
8
9
10
11
groups:
- name: disk
rules:
- alert: disk
expr: predict_linear( node_filesystem_free_bytes[8h],6*3600 ) < 0
for: 1s
labels:
user: alert
annotations:
summary: "{{ $labels.instance }} 的磁盘空间预计会在6小时内被占满"
description: ""

alerting的配置可以配合alertmanagers提供告警管理,支持webhook推送,可以配合钉钉机器人使用

整个漂亮的监控面板

直接运行下面的代码,安装Grafana

1
docker run -d --name grafana -p 3000:3000 -v /data/grafana:/var/lib/grafana grafana/grafana

然后就可以开始制作监控面板了,也可以使用社区已经做好的模板进行修改

下面是我自己修改的监控面板


← Prev 浅谈TLS密钥交换 | 我常用的Chrome扩展程序 Next →