繁体   English   中英

某些 Prometheus 警报最终显示为“未分组”

[英]Certain Prometheus alerts end up as "Not grouped"

我在 AKS 1.19.9 上运行 Prometheus (bitnami/prometheus:2.25.2) 和 Prometheus Alertmanager (bitnami/alertmanager:0.21.0)。
警报由 Alertmanager 处理,Alertmanager 又将警报路由到松弛通道。

我注意到最近某些警报最终出现在 Prometheus Alertmanager WebUI 的“未分组”部分,而没有进入 Slack 频道。

在此处输入图像描述

我无法解释这一点,因为它们按 [cluster, alertname] 分组并且确实包含这些标签(在模糊的屏幕截图中,但 cluster 包含相同的值)。

让事情变得更加混乱(无论如何对我来说)有一些警报也有这些标签并且被正确发送。

在此处输入图像描述

配置中的警报管理器路由树:

spec:
  route:
    groupWait: 30s
    groupInterval: 5m
    repeatInterval: 3h
    receiver: fallback
    routes:
    - matchers:
      - name: team
        value: platform-engineering
      groupBy: [cluster, alertname]
      receiver: fallback
      routes:
      - matchers:
        - name: severity
          value: critical
        groupBy: [cluster, alertname]
        receiver: alerts-critical
      - matchers:
        - name: severity
          value: warning
        groupBy: [cluster, alertname]
        receiver: alerts-warning

有人关心这里有什么问题吗? 我显然遗漏了一些东西:-)
提前谢谢了!

认为我发现了问题。 集群上运行的 Prometheus 由 Prometheus operator 提供: bitnami/prometheus-operator:0.53.1上面列出的路由树是您在部署查看 Prometheus Alert manager 配置时看到的。

但是……当您在部署后访问 Prometheus Alert 管理器 WebUI 并单击页面顶部的“状态”选项卡时,它会讲述一个不同的故事。 我发现操作员在部署期间向路由树中注入了一个额外的匹配器。

在此处输入图像描述

这显然会对警报的匹配和分组产生影响,特别是如果命中路由树的警报不是来自命名空间监视。

在我的例子中,只有监控工作负载驻留在此处,并且大部分工作负载来自监控之外的名称空间。

阅读 Prometheus Operator repo 上的 GitHub issue 3737 ,证实了这个怀疑。

作为解决方法,我尝试了 Till Adam 的建议:

kind: clustermanagement
namespace: prometheus
source_namespace: '{{ $labels.namespace }}'

有了这个,我们在 prometheus 命名空间中有一个 alertmanagerconfig 负责所有与集群相关的警报,无论指标最初具有哪个命名空间 label。

请注意,您的警报规则也应在使用时进行调整,警报源自的实际命名空间现在将位于source_namespace中。

我遇到的唯一边缘情况是当您最终丢失命名空间 label 时。这似乎是在警报表达式使用聚合运算符(例如计数)时发生的。

如果我没记错的话, PR3821将引入针对此挑战的修复程序(全局警报管理器配置)。

暂无
暂无

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

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