kube-prometheus 规则 KubeControllerManagerDown 正在触发

问题描述 投票:0回答:2

使用 https://github.com/prometheus-operator/kube-prometheus/tree/main/manifests 手动安装 kube-prometheus,而不使用 jb。

规则正在触发:

name: KubeControllerManagerDown
expr: absent(up{job="kube-controller-manager"} == 1)

即使我创建这些服务: https://github.com/prometheus-operator/prometheus-operator/issues/1859#issuecomment-437740104

如何调试这个问题?

prometheus prometheus-operator
2个回答
7
投票

您是否在托管 Kubernetes 服务(例如 AWS EKS)上运行? 如果是这样,这些服务可能对您隐藏。


0
投票

表述

absent(up{job="kube-controller-manager"} == 1)
不正确,未实现预期功能。正确的表达方式是
absent(up{job="kube-controller-manager"})

说明 Prometheus中的absent函数用于检查指定指标是否不存在。具体来说:

  • absent(up{job="kube-controller-manager"})
    :这个表达正确 检查是否没有适合该作业的指标实例 kube-控制器-管理器。如果不存在这样的指标,则警报将是 触发了。

  • absent(up{job="kube-controller-manager"} == 1)
    :这个 表达式不正确,因为它尝试执行比较 在缺少的函数中,这是无效的。在这种情况下,缺少的功能 应该直接采用度量或标签选择器作为其参数, 不是比较操作。

see here

如果您使用的是

prometheus-community/kube-prometheus-stack
Helm 图表,您可以在 value.yaml 文件中定义正确的警报规则,如下所示:

defaultRules:
  create: true
  rules:
    kubeControllerManager: false

additionalPrometheusRulesMap:
  kubernetes-system-controller-manager:
    groups:
      - name: kubernetes-system-controller-manager
        rules:
          - alert: KubeControllerManagerDown
            annotations:
              description: KubeControllerManager has disappeared from Prometheus target discovery.
              runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubecontrollermanagerdown
              summary: Target disappeared from Prometheus target discovery.
            expr: absent(up{job="kube-controller-manager"})
            for: 15m
            labels:
              severity: critical
© www.soinside.com 2019 - 2024. All rights reserved.