繁体   English   中英

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

[英]Missing labels in prometheus alerts

我在使用 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 的“警报”选项卡中看到警报,但是缺少一些标签,因此不允许警报管理器通过 Slack 发送通知。 具体来说,我将自定义“env” label 附加到每个目标:

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

但是当基于 cadvisor 指标的警报触发时,标签是:警报名称、实例和严重性 - 没有作业 label,没有环境 label。 来自其他出口商(fe node-exporter)的所有其他警报都可以正常工作,并且存在 label。

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

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

其他聚合方法,如avgmaxmin等,以相同的方式工作。 要恢复 label,只需将env添加到分组列表中: by (instance, name, env)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM