监控系统自监控是避免盲区的关键,需确认采集端是否正常工作:prometheus的up指标为1、zabbix agent的available值为1,否则指标完全丢失或无法通信。

让监控系统自己监控自己,是避免“盲区”的关键一步。很多团队花大力气监控业务服务,却忘了监控 Prometheus、Zabbix 或 Grafana 本身——一旦它们宕了或采集失效,整个告警链就静默了,问题只能靠用户反馈才发现。
监控采集端是否在正常工作
不能只看指标数值,更要确认数据“有没有被采到”。比如:
- Prometheus 的
up{job="node-exporter"}必须为 1,否则代表某台服务器的指标完全丢失; - Zabbix Agent 连接状态需检查
zabbix[host,agent,available],值为 1 才表示 Agent 在线且可通信; - status == "online",并定期拉取
/api/status接口返回码是否为 200。
监控服务自身资源与健康状态
把监控组件当作普通服务来管,同样要盯紧它的 CPU、内存、磁盘和连接数:
- Prometheus 自身暴露
/metrics,重点关注prometheus_target_sync_length_seconds(同步耗时)、prometheus_tsdb_head_series(时间序列数突增可能预示 OOM); - Grafana 需监控
grafana_backend_http_request_duration_seconds_count和 5xx 错误率,防止看板打不开却无人知晓; - Zabbix Server 要检查
zabbix[process,watchdog,all]和数据库连接池使用率,超 90% 就该预警。
告警通路是否真正可达
告警发不出去,等于没告警。必须验证“从触发→评估→通知→接收”全链路:
- 在 Alertmanager 中配置
test_alert规则,定时触发一条测试告警,并确认钉钉/邮件/短信是否 2 分钟内收到; - 对每条 P0 级规则,设置 “无响应自动升级”:若 5 分钟内无人 Ack,自动电话呼转值班人;
- 在 Grafana 告警面板里加一个
ALERTS{alertstate="firing"}统计图,实时显示当前有多少告警正在生效——如果长期为 0,大概率是规则失效或阈值过松。
数据时效性与完整性校验
指标存在 ≠ 数据可信。要防“僵尸指标”:
- 对每个采集目标,定义
scrape_interval和预期上报频率,用count_over_time(up[1h])检查过去 1 小时是否至少有 50% 的样本点; - 对磁盘、内存等单调递增类指标(如
node_filesystem_free_bytes),用delta(node_filesystem_free_bytes[2h])判断是否长时间无变化(可能挂载异常或采集卡死); - 日志类告警(如 Filebeat + Logstash)需监控
logstash_pipeline_events_total的增量,连续 10 分钟 delta = 0 就要告警。











