Prometheus监控告警体系的链路是:先有指标,再有告警,最后有通知。Prometheus负责采集与存储,node_exporter提供主机指标,Alertmanager把命中规则的告警转成通知。本文给出一套可以直接复制的配置,覆盖节点采集、告警规则和通知路由。
主机指标采集:部署node_exporter
用Docker方式部署node_exporter:
docker run -d --name node-exporter \
--network host \
--restart unless-stopped \
prom/node-exporter:v1.8.2
浏览器访问 http://服务器IP:9100/metrics 能看到指标说明,说明采集端就绪。在Prometheus里添加抓取任务:
scrape_configs:
- job_name: node
static_configs:
- targets:
- "192.168.1.10:9100"
- "192.168.1.11:9100"
告警规则:CPU、磁盘与探活
告警规则文件 node-alerts.yml:
groups:
- name: node-alerts
rules:
- alert: HostHighCPU
expr: 1 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]))) > 0.9
for: 10m
labels: {severity: critical}
annotations:
summary: "{{ $labels.instance }} CPU使用率超过90%"
- alert: HostDiskAlmostFull
expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) < 0.15
for: 15m
labels: {severity: warning}
annotations:
summary: "{{ $labels.instance }} {{ $labels.mountpoint }} 剩余空间不足15%"
- alert: HostDown
expr: up{job="node"} == 0
for: 1m
labels: {severity: critical}
annotations:
summary: "{{ $labels.instance }} 抓取失败"
for是去抖窗口,持续满足条件才触发,可以过滤掉瞬时抖动造成的误报。
Alertmanager:分组、路由与去重
route:
group_by: ["alertname"]
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receiver: ops-webhook
receivers:
- name: ops-webhook
webhook_configs:
- url: "http://127.0.0.1:8080/robot/send"
group_by把同一告警名下的实例合并成一条通知;repeat_interval控制重复通知的节奏,4小时一次,避免告警轰炸。
告警降噪:组合条件与观察窗口
降噪比加告警更值钱:磁盘告警组合”使用率大于85%且剩余空间小于10GB”;网络抖动类指标用5分钟窗口的平均值而不是瞬时值;for从1m提高到5m到15m可以吸收大部分抖动。收到通知却不知道怎么办的告警,直接删掉,告警和行动之间要保持闭环。
Grafana可视化与规则版本管理
Grafana接入Prometheus数据源,导入官方node_exporter大盘,CPU、内存、磁盘、网络趋势一目了然。告警规则文件放进Git仓库管理,每次变更走评审,避免线上规则越加越多、最终失去可读性。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/prometheus-jian-kong-gao-jing-shi-zhan-cong-zhu-ji-cai-ji/