普罗米修斯警报中缺少标签

2024-05-10

我对 Prometheus 警报规则有疑问。我设置了各种 cAdvisor 特定警报,例如:

- alert: ContainerCpuUsage
  expr: (sum(rate(container_cpu_usage_seconds_total[3m])) BY (instance, name) * 100) > 80
  for: 2m
  labels:
    severity: warning
  annotations:
    title: 'Container CPU usage (instance {{ $labels.instance }})'
    description: 'Container CPU usage is above 80%\n  VALUE = {{ $value }}\n  LABELS: {{ $labels }}'

当条件满足时,我可以在 Prometheus 的“警报”选项卡中看到警报,但是缺少一些标签,因此不允许 Alertmanager 通过 Slack 发送通知。具体来说,我将自定义“env”标签附加到每个目标:

 {
  "targets": [
   "localhost:8080",
  ],
  "labels": {
   "job": "cadvisor",
   "env": "production",
   "__metrics_path__": "/metrics"
  }
 }

但是,当基于 cadvisor 指标的警报触发时,标签为:警报名称、实例和严重性 - 无作业标签、无环境标签。 来自其他导出器(例如节点导出器)的所有其他警报都工作正常并且标签存在。


这是由于sum您使用的功能;它收集了所有存在的时间序列并将它们加在一起,摸索BY (instance, name)。如果您在 Prometheus 中运行相同的查询,您将看到sum只留下分组标签:

{instance="foo", name="bar"}    135.38819037447163

其他聚合方法如avg, max, min等,以同样的方式工作。要恢复标签,只需添加env到分组列表:by (instance, name, env).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

普罗米修斯警报中缺少标签 的相关文章

随机推荐