最佳实践 · 监控与可观测

待环境验证

Prometheus 告警分级与降噪实践

以业务影响定义 Prometheus 告警级别,配置 Alertmanager 分组、抑制和静默,并验证通知、恢复与值班响应。

Prometheus告警治理监控告警
阅读导引 · 理解后再操作

这篇知识解决什么问题

告警治理的目标是让值班人员在明确对象上做出正确动作,而不仅减少消息数量。阅读时沿规则、标签、分组抑制和实际接收链路逐层定位,分别检查看不见、算不出、没有发出和发错人的情况,并保留恢复通知与漏报的验证范围。

告警身份稳定才能形成同一次事件

把环境、集群、服务和责任团队作为稳定识别上下文,将变化数值和错误细节放入说明。核对同一故障的标签是否在输入、规则和路由中保持可解释关系。标签持续变化可能制造多个实例,而标签缺失也可能扩大匹配范围,两者都应进入规则评审样本。

通知数量与响应覆盖必须一起比较

减少重复消息只有在已知业务异常仍被正确识别和送达时才算改进。应限定同类业务、相近流量和明确时间窗口,分别比较触发、发送、接收及恢复记录。无数据场景需要独立判断,不能把仪表盘空白或通知暂时安静解释为服务健康。

进入文章正文
关联架构图解8 个组件 · 点击展开

在监控图中重点阅读 Prometheus 规则计算到 Alertmanager 再到值班接收组的路径,同时回查输入指标是否存在。图未展开每个路由子树、接收器渠道和维护静默规则,不能仅凭图上连通便认定消息已经送达。

查看场景架构与实施步骤
参考架构 · 非实时拓扑

采集、规则与通知的分层架构

把 Kubernetes 对象状态、节点与业务指标分别接入采集层,再连接时序存储、排障看板和通知链路,避免把单一指标来源当作完整集群健康。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

采集、规则与通知的分层架构:组件关系图把 Kubernetes 对象状态、节点与业务指标分别接入采集层,再连接时序存储、排障看板和通知链路,避免把单一指标来源当作完整集群健康。 kube-state-metrics → Kubernetes API:读取 / watch;Prometheus → kube-state-metrics:抓取 /metrics;Prometheus → 节点与业务端点:抓取运行指标;Grafana → Prometheus:查询时序;Prometheus → Alertmanager:发送规则告警;Prometheus → 时序数据卷:写入样本;Alertmanager → 值班接收组:通知与恢复。箭头说明见下方流向解读。
逻辑参考图,表示建议的职责与请求方向;不是本站真实部署拓扑,端点权限、容量与演练结果需在目标环境验证。

Kubernetes API

控制 / 治理

提供 Pod、Deployment、Node 等对象状态。监控身份只获得实际需要的读取权限;托管控制面的开放范围需单独确认。

查看关联工具
全部组件职责 8 个组件
Kubernetes API
提供 Pod、Deployment、Node 等对象状态。监控身份只获得实际需要的读取权限;托管控制面的开放范围需单独确认。工具介绍 Kubernetes API
kube-state-metrics
读取 Kubernetes API 后生成对象指标,反映期望与实际状态,不替代节点资源使用量或业务请求指标。工具介绍 kube-state-metrics
Grafana
通过查询 Prometheus 组织集群、命名空间与工作负载看板,保留对象和时间范围,并明确标记无数据状态。工具介绍 Grafana
节点与业务端点
表示另行获准暴露的节点、工作负载及控制面指标端点。一个端点抓取成功,不代表其他类别已经覆盖。
Prometheus
按发现配置主动抓取指标并计算规则;需同时监测自身抓取耗时、活跃序列、规则执行和容量。工具介绍 Prometheus
Alertmanager
接收规则告警,根据责任标签处理分组、抑制、静默和通知;它不承担指标抓取或工作负载修复。工具介绍 Alertmanager
时序数据卷
表示 Prometheus 本地时序存储所需的持久空间,不代表已经建立跨区冗余或长期归档。
值班接收组
接收包含责任对象、排障入口和恢复状态的消息,按既定升级路径人工处理;通知送达应由实际接收人确认。
流向解读 7 条连接
  1. 1

    kube-state-metrics Kubernetes API

    观测 / 查询 · 读取 / watch

    箭头表示 kube-state-metrics 发起 API 读取与 watch,请求结果用于生成对象指标。

  2. 2

    Prometheus kube-state-metrics

    观测 / 查询 · 抓取 /metrics

    由 Prometheus 发起抓取,kube-state-metrics 返回样本;不是 kube-state-metrics 主动推送。

  3. 3

    Prometheus 节点与业务端点

    观测 / 查询 · 抓取运行指标

    分别配置节点与业务目标的认证、证书和网络路径,目标清单必须能解释覆盖缺口。

  4. 4

    Grafana Prometheus

    观测 / 查询 · 查询时序

    Grafana 请求 Prometheus 查询 API,返回值用于看板,不构成独立采集链路。

  5. 5

    Prometheus Alertmanager

    观测 / 查询 · 发送规则告警

    告警条件由 Prometheus 计算后发送,规则持续时间与后续通知等待共同影响发现到通知的时限。

  6. 6

    Prometheus 时序数据卷

    数据 / 请求 · 写入样本

    保存采样数据;保留周期和标签规模共同影响磁盘及内存预算。

  7. 7

    Alertmanager 值班接收组

    观测 / 查询 · 通知与恢复

    按责任组发送分组通知与恢复消息,需验证真实接收渠道,而非仅查看组件日志。

故障域与操作边界

采集成功不等于业务健康

对象状态、主机资源和应用请求需要不同证据;托管控制面未开放的指标必须标记缺失,不用空图或零值掩盖。

监控故障域需独立评估

本图未承诺监控自身高可用。采集器、数据卷和通知通道同时故障时可能失去可见性,配置备份及备用排查入口仍需单独准备。

架构依据与版本核对 2 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

适用范围与前提

用于 Kubernetes 集群中由 Prometheus 计算规则、Alertmanager 路由通知的告警治理。开始前盘点现有规则、指标来源、服务负责人和通知渠道,并取得可回退的配置版本。本文提供待环境验证的实施流程;告警阈值、观察窗口和响应时限必须结合业务目标确定,不以某个固定 CPU 百分比代表所有服务的故障。

从响应动作定义分级

先为每条告警写出“谁应在多长时间内做什么”。影响核心请求且需要立即介入的信号进入紧急通道;容量趋势或存在明确处理期限的问题进入工作时段队列;仅用于观察的信号留在仪表盘。优先使用错误率、延迟和可用性等用户可感知症状,同时保留用于定位的基础设施指标。没有负责人、操作入口或处理动作的通知,应先补齐信息再加入呼叫渠道。

稳定标签与可用上下文

为集群、环境、服务、团队和级别建立一致的标签约定。标签用于识别与路由,避免把当前数值、时间戳或完整错误文本作为标签,以免同一问题产生不断变化的告警实例。把触发值、仪表盘链接、排查手册和业务影响说明放入注释,并检查链接可从值班入口直接访问。跨集群部署还应验证外部标签,防止同名服务混淆。

分组、抑制与维护静默

按值班人员实际处理的故障范围设计分组;先按集群和告警名称试验,再判断是否需要服务维度。分组等待时间应兼顾聚合效果和紧急响应需求。只有依赖关系可被证实时才设置抑制,例如同一服务的严重级别抑制其警告级别,并检查双方用于匹配的标签确实存在。缺失标签可能产生意外匹配。维护静默应记录负责人、原因、匹配范围和结束时间,并保留维护窗口内的指标与告警状态。

规则检查与小范围发布

在发布前检查语法,使用代表性历史时间段评估表达式,再覆盖持续故障、短暂抖动、数据缺失和恢复四类输入。以下文件名是占位符,命令仅执行本地配置校验,不验证通知是否送达。

promtool check rules RULES_FILE
amtool check-config ALERTMANAGER_CONFIG_FILE

需要持续时间条件时,验证 for 与抓取、计算周期共同产生的通知延迟。先在测试接收器或单个服务范围验证路由与恢复通知,再逐步推广,避免一次修改全部规则后无法判断影响来源。

验收要同时看噪声与漏报

用同一业务范围、相近流量条件比较调整前后通知数、重复通知比例和有明确处理动作的比例,同时检查已知故障是否仍能触发并送达。通知减少本身不代表改进。安排一条可控测试信号验证规则、Alertmanager、接收渠道的整条路径;记录触发、首次送达、确认和恢复时间,不将测试结果描述为真实故障成绩。

停止与回退条件

出现关键告警未送达、错误团队收到通知、抑制范围超过预期或恢复状态无法确认时,停止推广并恢复上一版已知配置。回退后复核告警和路由状态,检查仍然生效的静默规则,因为配置回退不等于静默自动撤销。保留当次改动、触发样本与接收记录,用于修正标签和匹配边界后再次验证。

参考资料

从现象到判断

先收集证据,再缩小范围。以下是判读路径,不代表已经确认根因或获准变更。

  1. 业务异常已经出现,但规则页面没有预期告警;看板上部分指标为空,或者规则使用的对象标签与实际采集不同。

    只读核对
    只读核对目标抓取状态、表达式输入序列、规则计算记录和对象标签,使用既有历史窗口对照实际业务症状。
    如何判读
    先判断输入缺失、表达式匹配和持续条件是否成立;没有触发不等于阈值太高,也不能直接归因于通知渠道。
  2. 规则侧已处于告警状态,接收方却没有消息,或同一事件被发给错误团队;当前还存在多条维护静默。

    只读核对
    读取当前路由、匹配标签、分组和抑制状态及静默期限,关联有限的发送记录和已有接收凭据,不创建新静默。
    如何判读
    必须先区分被正常抑制、仍在等待和发送失败;配置存在只说明路由定义过,不能证明本次事件已送到正确的人。
  3. 同一服务短时间产生大量看似不同的消息,或一个严重告警意外压住多个无关服务的警告,数量变化难以解释。

    只读核对
    比较这些告警的完整标签键集合、变化字段及抑制 equal 条件,核对分组维度和缺失标签,限定在已知事件范围。
    如何判读
    变化标签可能拆分实例,双方缺失的等值标签也可能促成意外抑制;应找到具体匹配证据后再提出配置调整。
常见误区与判断边界 2 项

用无限期静默充当降噪

静默可能适合明确维护范围,却会遮住该范围内后来发生的真实事件。缺少责任、原因和结束时间的静默不是可解释的治理结果。分析时保留它的实际匹配对象与期限,并检查恢复旧配置后是否仍生效,不把配置回退等同于撤销静默。

语法通过不是通知链路通过

本地检查能发现配置或规则格式问题,但不验证当前指标是否存在、路由是否符合责任边界,也不验证外部渠道实际接收。治理报告应区分静态检查、历史样本评估和经授权端到端测试;没有接收证据时不能填写送达成功。

交接时应留下的证据

作为记录提纲使用,不是自动检查结果;未取得的证据应标记缺口,并注明负责人。

  • 保存规则与路由版本、责任服务及稳定标签约定,列明实际表达式输入来源、时间窗口和缺失指标的处理说明。
  • 对一条已有事件关联触发、等待、发送、接收及恢复时间,标明每个时间来自哪个组件,不把发送日志当接收凭据。
  • 记录分组和抑制的具体匹配样本,包含缺失标签反例,以及当前相关静默的申请人、期限和覆盖对象范围。
  • 按可比较业务窗口汇总重复通知与已知故障覆盖,保留未送达或错误路由案例,注明尚待授权的测试及后续负责人。

记录需包含环境、版本、时间与时区;分享前脱敏,不附访问令牌、密码或完整业务敏感数据。

继续阅读与资料核对

补充相关主题,再结合当前环境的实施记录形成结论。

返回原理导读

DOUYA OPS ECOSYSTEM

贡献你的经验,帮助更多运维人

把故障复盘、标准流程和最佳实践沉淀为可检索、可复用的知识内容。