kubernetes - 如何在 kube-prometheus-stack helm chart 中覆盖 alertmanager 配置

标签 kubernetes kubernetes-helm prometheus-alertmanager kube-prometheus-stack

我正在从 kube-prometheus-stack 部署监控堆栈helm chart,我正在尝试配置 alertmanager,以便它具有我的自定义配置,用于在 Slack channel 中发出警报。

pod中的配置从/etc/alertmanager/config/alertmanager.yaml加载。 从 pod 描述中,这个文件是从一个自动生成的 secret 中加载的:

...
  volumeMounts:
   - mountPath: /etc/alertmanager/config
     name: config-volume
...
volumes:
  - name: config-volume
    secret:
      defaultMode: 420
      secretName: alertmanager-prometheus-community-kube-alertmanager-generated

如果我检查 secret ,它包含在 alertmanager.config 的默认值中找到的默认配置,我打算覆盖它。

如果我将以下配置传递给 alertmanager 以全新安装图表,它不会创建 alertmanager pod:

alertmanager:
  config:
    global:
      resolve_timeout: 5m
    route:
      group_by: ['job', 'alertname', 'priority']
      group_wait: 10s
      group_interval: 1m
      routes:
      - match:
          alertname: Watchdog
        receiver: 'null'
      - receiver: 'slack-notifications'
        continue: true
    receivers:
    - name: 'slack-notifications'
      slack-configs:
      - slack_api_url: <url here>
        title: '{{ .Status }} ({{ .Alerts.Firing | len }}): {{ .GroupLabels.SortedPairs.Values | join " " }}'
        text: '<!channel> {{ .CommonAnnotations.summary }}'
        channel: '#mychannel'

首先,如果我没有在 values.yaml 中传递任何配置,则成功创建了 alertmanager pod。

我怎样才能正确地覆盖 alertmanager 的配置,以便它使用我的自定义配置将正确的文件安装到 /etc/alertmanger/config/alertmanager.yaml 中?

最佳答案

alertmanager 需要某些非默认参数来覆盖默认参数,因为它似乎无声无息地失败了。错误的配置会导致 pod 不应用配置 ( https://github.com/prometheus-community/helm-charts/issues/1998 )。对我有用的是仔细配置警报管理器并添加看门狗子路由和空接收器

route:
  group_by: [ '...' ]
  group_wait: 30s
  group_interval: 10s
  repeat_interval: 10s
  receiver: 'user1'
  routes:
    - match:
        alertname: Watchdog
        receiver: 'null'
receivers:
  - name: 'null'
  - ...
 

关于kubernetes - 如何在 kube-prometheus-stack helm chart 中覆盖 alertmanager 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71924744/

相关文章:

amazon-ec2 - Kubernetes:仅在具有 GPU 的 EC2 节点上运行 Pod

elasticsearch - 具有基本身份验证的Elasticsearch Helm chart

templates - Helm 模板在 map 上循环

prometheus - Helm/kube-prometheus-stack : Can I create rules for exporters in values. yaml?

Prometheus 警报第一个计数器值

kubernetes - 重新启动 Pod 时发出警报 : Prometheus on windows containers

rest - 在S3文件上传事件后触发Java REST端点

kubernetes - Grunt watch 在 Kubernetes 中抛出同步 :dev not found error with Sails. js

php - nginx 不为 ingress-nginx 后面的 PHP 应用程序提供 JS、CSS 文件

kubernetes - Helm 回滚到以前的版本