Kubernetes AlertManager未将警报转发给webhook接收器

Kubernetes AlertManager未将警报转发给webhook接收器,kubernetes,webhooks,prometheus-alertmanager,prometheus-operator,Kubernetes,Webhooks,Prometheus Alertmanager,Prometheus Operator,我们已经使用Prometheus操作符在kubernetes集群中设置了Prometheus。我们正在尝试使用AlertManagerConfig自定义资源配置AlertManager。我们尝试创建一个映射到webhook接收器的警报路由,然后触发一个测试警报。警报似乎已被AlertManager捕获,但未转发到webhook端点。AlertManager pod日志也不会打印任何关于发送给接收者的警报通知的日志。在下面共享测试配置: apiVersion: monitoring.coreos.

我们已经使用Prometheus操作符在kubernetes集群中设置了Prometheus。我们正在尝试使用AlertManagerConfig自定义资源配置AlertManager。我们尝试创建一个映射到webhook接收器的警报路由,然后触发一个测试警报。警报似乎已被AlertManager捕获,但未转发到webhook端点。AlertManager pod日志也不会打印任何关于发送给接收者的警报通知的日志。在下面共享测试配置:

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: discord-config
spec:
  receivers:
  - name: discord
    webhookConfigs:
    - url: '<webhook-url>'
      sendResolved: true
  route:
    groupBy: ['job']
    groupWait: 15s
    groupInterval: 15s
    repeatInterval: 15s
    receiver: 'discord'
---
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: test-rules
spec:
  groups:
  - name: test-rule-group
    rules:
    - alert: TestAlert
      expr: vector(1)
      labels: 
        severity: medium  
      annotations:
        description: "This is a reciever test for webhook alert"
        summary: "This is a dummy summary"
apiVersion:monitoring.coreos.com/v1alpha1 种类:AlertmanagerConfig 元数据: 名称:discord配置 规格: 接收人: -名称:迪斯科 WebHooks配置: -url:“” 森德:对 路线: groupBy:['job'] 分组等待:15秒 分组间隔:15秒 重复间隔:15秒 接收者:“不和谐” --- apiVersion:monitoring.coreos.com/v1 种类:普罗米修斯规则 元数据: 名称:测试规则 规格: 组: -名称:测试规则组 规则: -警报:TestAlert 表达式:向量(1) 标签: 严重程度:中等 注释: 描述:“这是webhook警报的接收器测试” 摘要:“这是一个虚拟摘要”
为了让接收者开始接收警报,还有什么需要注意的吗?

我找到了问题的根本原因。实际上是根本原因。有两个问题:

  • 我曾使用webhook与Discord频道集成,后来我了解到这并不简单。需要一个中间层来解析webhook警报并将其转发到兼容模板中的Discord。普罗米修斯已经提到了一个很好的解决方案,它指向应用。我使用docker映像创建了一个部署和一个服务,将alertmanager连接到discord

  • 操作员正在最顶端的警报路线中添加一个额外的
    名称标记匹配器。因此,我在创建的警报中添加了相同的标签。我使用这个R来可视化路线,并确保给定的标签集与路线匹配

  • apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: alertmanager-discord
    spec:
      selector:
        matchLabels:
          app: alertmanager-discord
      replicas: 1
      template:
        metadata:
          labels:
            app: alertmanager-discord
        spec:
          containers:
          - name: alertmanager-discord
            image: benjojo/alertmanager-discord
            resources:
              limits:
                memory: "128Mi"
                cpu: "500m"
            ports:
            - containerPort: 9094
            env:
              - name: DISCORD_WEBHOOK
                value: {{ .Values.webhookURL }}
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: alertmanager-discord
    spec:
      selector:
        app: alertmanager-discord
      ports:
      - port: 9094
        targetPort: 9094
      type: ClusterIP
    ---
    apiVersion: monitoring.coreos.com/v1alpha1
    kind: AlertmanagerConfig
    metadata:
      name: alertmanager
    spec:
      receivers:
      - name: discord
        webhookConfigs:
        - url: 'http://alertmanager-discord:9094'
          sendResolved: true
    .
    .
    .