企业监控需按基础设施→中间件→应用→业务四层收敛指标,每层只保留对上层有解释力的关键信号;告警治理强调降噪、归因、闭环;指标全生命周期需版本化管理;告警响应须固化为机器可执行SOP。

指标分层:从基础设施到业务价值逐层收敛
监控不是堆指标,而是建视角。企业级监控需按“基础设施 → 中间件/服务 → 应用逻辑 → 业务结果”四层组织指标,每层只暴露对上层有解释力的关键信号。
例如:CPU使用率(基础设施层)本身不直接说明问题,但当它持续 >90% 且伴随 jvm Full GC 频次突增(中间件层)、订单创建耗时 P95 上升 300ms(应用层)、支付失败率跳升 5%(业务层)——这组跨层指标联动,才能定位是数据库连接池耗尽引发的雪崩。
- 基础设施层:聚焦稳定性基线——磁盘IO等待、网络丢包率、内存页回收速率,避免采集所有/proc/stat字段
- 中间件层:关注组件健康契约——redis连接数/最大连接数比值、kafka consumer lag、nginx 5xx比率
- 应用层:绑定代码路径——http接口的status_code + handler_name + duration_ms三元组,禁用泛化指标如“API响应时间”
- 业务层:映射用户可感知结果——下单成功数/秒、搜索无结果率、首屏加载完成耗时,需与埋点系统对齐口径
告警治理:用“降噪-归因-闭环”替代“收告警-点链接-查日志”
80%的告警疲劳源于同一故障触发多层重复告警。治理核心是让告警自带上下文和处置指引,而非依赖人工串联信息。
- 降噪:在prometheus中用red”>absent()替代up == 0检测服务存活;对抖动型指标(如瞬时CPU飙升)加rate()窗口平滑,禁用点对点阈值告警
- 归因:告警规则内嵌labels传递根因线索——例如K8s Pod重启告警自动携带reason=”OOMKilled”或reason=”CrashLoopBackOff”
- 闭环:告警触发时自动执行预检脚本(如curl -I 检查健康端点),并将结果注入Alertmanager的annotations,避免值班人员重复验证
指标生命周期管理:从采集到归档的可控演进
指标不是越全越好,而是要像代码一样版本化管理。每个指标必须明确:谁定义、为什么存在、保留多久、下线条件。
- 新指标上线前需通过SLI影响评估表:是否支撑SLO计算?是否填补当前故障定位断点?
- 存量指标每季度扫描:连续30天无告警/无图表引用/无SLO关联的指标自动进入“待归档”状态
- 高基数标签(如user_id、request_id)默认禁用,确需调试时通过_debug后缀临时开启,并设置2小时自动关闭
告警响应SOP:把经验固化成机器可执行的动作
真正的治理终点不是减少告警数量,而是让每次告警触发都启动标准化响应链路。