首页/云/可观测性速查/Kubernetes 告警:PrometheusRule 实践
告警与响应50 条

Kubernetes 告警:PrometheusRule 实践

kube-prometheus-stack 用 PrometheusRule 管理规则、AlertmanagerConfig 管理路由与接收器;改动走 kubectl/Helm,不手改容器内文件。

可观测性速查云更新于 2026-10-13

Kubernetes 告警管理是什么

在 Kubernetes 里,规则不是改容器内文件,而是声明式资源:用 PrometheusRule 定义告警与记录规则,用 AlertmanagerConfig 管理路由与接收器,由 Operator 监听并同步到运行实例。这样做的好处是规则随集群一起版本化管理;对应的要求是必须理解标签选择器——规则资源只有带对标签才会被加载,写对了却没人发现标签不匹配,是这套体系最常见的坑。

基本信息

适用平台Prometheus Operator 与 kube-prometheus-stack
规则资源PrometheusRule(自定义资源,kind 为 PrometheusRule)
通知资源AlertmanagerConfig(管理路由与接收器)
加载条件资源标签需匹配 Operator 配置中的选择器

典型使用场景

  • 应用告警:为业务服务定义错误率与延迟规则
  • 平台告警:节点、容器资源与调度异常的统一规则
  • 多团队分治:各团队用带命名空间的规则资源各自管理
  • 记录规则:把高频查询预计算成新指标降低查询压力
  • 配置审计:规则在集群里可枚举、可评审、可回滚

PrometheusRule 示例

PrometheusRule 示例
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: app-alerts
  namespace: monitoring
  labels:
    release: kube-prometheus-stack      # 需匹配 Prometheus 实例的选择器
spec:
  groups:
    - name: app.rules
      rules:
        - alert: AppHighErrorRate
          expr: sum by (service) (rate(http_requests_total{code=~"5.."}[5m])) > 5
          for: 10m                      # 持续 10 分钟才触发,抗抖动
          labels:
            severity: warning
            team: order-platform
          annotations:
            summary: "服务 {{ $labels.service }} 错误速率偏高"
            runbook_url: https://wiki.example.com/runbook/app-error-rate

关键字段

字段作用注意事项
metadata.labels决定规则是否被加载需匹配 Operator 的选择器
groups[].rules[].expr告警表达式表达式错误只会在运行时暴露
for持续时间条件用于过滤瞬时抖动
labels.severity通知路由依据与 Alertmanager 路由保持一致
annotations通知文案与链接模板变量引用不存在的标签会渲染为空
规则资源缺标签是静默失效的典型来源:资源创建成功、集群里能看到,但 Prometheus 从未加载它,排查时先确认选择器匹配情况。
改规则请改资源而不是改运行实例内的文件:直接进入容器修改会在下一次同步时被覆盖,改动看起来生效过一段时间又消失。

易错点

  • 规则资源缺少与选择器匹配的标签,规则不会被加载,而创建与查看都不会报错
  • 直接修改运行实例内的规则文件,下一次同步即被覆盖,改动随时消失
  • 规则放在 Operator 未监听的命名空间里,资源存在但从未生效
  • 把记录规则与告警规则混在同一组内改错表达式,会连带影响依赖该记录规则的告警

数据来源与参考

  • Prometheus Operator 文档 · PrometheusRule
  • kube-prometheus-stack 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌