深色模式
指标断流发现 up==0
最该先配的告警不是 CPU,而是“采集是否还在”。up==0 意味着目标已失联,指标在悄悄断流。
适用环境
- 已配置多个 scrape job
- 已接入 Alertmanager(或仅本地评估)
bash
# 看当前所有 target 的存活状态
curl -s 'http://localhost:9090/api/v1/query?query=up' | head -c 5001
2
2
操作步骤
1. 理解 up 指标
Prometheus 为每个 target 自动生成 up:抓取成功为 1,失败为 0。断流、Exporter 崩溃、网络不通都会变 0。
2. 编写存活告警规则
yaml
groups:
- name: target_down
rules:
- alert: TargetDown
expr: up == 0
for: 2m
labels:
severity: critical
annotations:
summary: "采集目标失联 {{ $labels.instance }} (job={{ $labels.job }})"
description: "该 target 的 up 指标持续 2 分钟为 0,指标已断流。"1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
3. 加载规则
bash
promtool check rules /etc/prometheus/rules/target.yml
curl -X POST http://localhost:9090/-/reload1
2
2
4. 聚合视角(可选)
yaml
- alert: TooManyTargetsDown
expr: sum by (job) (up == 0) / count by (job) (up) > 0.3
for: 5m
annotations:
summary: "job {{ $labels.job }} 超过 30% 目标失联"1
2
3
4
5
2
3
4
5
验证
手动停掉一个 Exporter(如 systemctl stop node_exporter),约 2 分钟后在 Alerts 页面应看到 TargetDown 进入 Firing。
常见坑
for 太小会抖动
up 偶发一次失败很常见,设 for: 2m 避免瞬时网络抖动误报。
别只告警不处理静默
维护窗口要记得加 Silence,否则计划内重启也会触发 critical 告警刷屏。