Prometheus 操作员 AlertmanagerConfig 未知字段“webhook_configs”

Posted

技术标签:

【中文标题】Prometheus 操作员 AlertmanagerConfig 未知字段“webhook_configs”【英文标题】:Prometheus operator AlertmanagerConfig unknown field "webhook_configs" 【发布时间】:2021-05-30 18:52:42 【问题描述】:

应用这些清单后https://github.com/prometheus-operator/kube-prometheus/blob/main/kustomization.yaml 我想创建AlertManager webhook:

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: custom
spec:
  route:
    receiver: custom
    groupBy: ['job']
    groupWait: 30s
    groupInterval: 5m
    repeatInterval: 12h
  receivers:
    - name: custom
      webhook_configs:
        - send_resolved: true
          url: https://example.com

出现错误:

error: error validating "alertmanagerconfig.yaml": error validating data: ValidationError(AlertmanagerConfig.spec.receivers[0]): unknown field "webhook_configs" in com.coreos.monitoring.v1alpha1.AlertmanagerConfig.spec.receivers; if you choose to ignore these errors, turn validation off with --validate=false

如何解决?

【问题讨论】:

【参考方案1】:

以此link为参考,

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: custom
spec:
  receivers:
    - name: custom
      webhookConfigs:
        - send_resolved: true
          url: https://example.com

您也可以使用kubectl explain 命令检查字段

kubectl explain alertmanagerconfig.spec.receivers

【讨论】:

【参考方案2】:

问题在于您使用的是实际 AlertManager 应用程序的配置参考,而不是 Prometheus Operator 提供的 Kubernetes 自定义资源的配置参考。

Prometheus Operator 采用像 AlertManagerConfig 这样的自定义资源形式提供的配置,并将它们转换为实际的 AlertManager 配置,并更新应用程序使用的配置文件。这是您首先使用运算符的部分原因。它使这些事情对您来说很方便。

所以你应该在这里使用的实际配置参考是this。 Prometheus Operator 的 github 自述文件中的 part 列出了您可以使用的可用自定义资源。

【讨论】:

【参考方案3】:

除了 Kiran 的回答(谢谢!)之外,还有一点更正 - 实际上是 sendResolved 而不是 send_resolved

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: custom
spec:
  receivers:
    - name: custom
      webhookConfigs:
        - sendResolved: true
          url: https://example.com

【讨论】:

【参考方案4】:

我通过使用这个 yaml 生成名为 alertmanager-main 的 Kubernetes secret 解决了这个问题:

global:
  #skipped
route:
  group_by: ['job']
  receiver: Default
  routes:
    - receiver: Watchdog
      repeat_interval: 1m
      match:
        alertname: Watchdog  

receivers:
  - name: Watchdog
    webhook_configs:
      - url: https://my.watchdog.webhook.url

  # Other things

这是警报管理器配置。

我会在一段时间后回答我的问题,现在可能已经修复了 Prometheus Operator CRD 的这个问题。

【讨论】:

以上是关于Prometheus 操作员 AlertmanagerConfig 未知字段“webhook_configs”的主要内容,如果未能解决你的问题,请参考以下文章

轻松搭建Prometheus监控容器服务

Prometheus Labeldrop 操作背后的基本原理

如何标记 Prometheus blackbox_exporter 端点

普罗米修斯?古希腊泰坦之神?异形?不,新一代企业级监控组件—Prometheus!

普罗米修斯?古希腊泰坦之神?异形?不,新一代企业级监控组件—Prometheus!

Prometheus简介