AlertManager 将报警消息发送到钉钉

2019-09-01 0 By admin

之前我们使用 AlertManager 组件为Prometheus 服务增加报警功能。AlertManager 组件支持多种类型的报警方式,包括邮件、微信等。
在 AlertManager 组件的配置文件中:https://prometheus.io/docs/alerting/configuration/。
可以发现email_config、webhook_config、wechat_config、pagerduty_config、victorops_config 等报警方式配置信息。

配置钉钉报警方式

如果我们想要使用钉钉软件接受报警信息的话,则我们需要多安装一个服务 prometheus-webhook-dingtalk 。
信息传输过程是AlertManager 通过webhook 方式将报警传输给prometheus-webhook-dingtalk,然后由其将报警发送到钉钉,
为什么alertmanager 不直接将报警发送到钉钉软件上呢?
好像是alertmanager 发送的格式,钉钉不支持;需要通过prometheus-webhook-dingtalk做中间转换。无奈~~~

一、prometheus-webhook-dingtalk 使用介绍

简明扼要的介绍,可以看github 上的地址:https://github.com/timonwong/prometheus-webhook-dingtalk。

  1. webhook-dingtalk 默认监听8060端口(可以配置)。
  2. AlterManager 通过webhook_config 方式配置url地址为/dingtalk/profile_name/seed
  3. profile_name为启动webhook-dingtalk服务时设置的-ding.profile配置信息名称。
  4. -ding.profile选项可以在一个服务启动中设置多次。对应多个钉钉报警机器人。
  5. -ding.profile 在系统中直接启动时,其配置值需要使用引号(加引号);但是写在Kubernetes 服务的yaml文件中,则不需要引号。

二、prometheus-webhook-dingtalk Depolyment 文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-webhook-dingtalk
  namespace: monitoring
  labels:
    app: prometheus-webhook-dingtalk
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus-webhook-dingtalk
  template:
    metadata:
      labels:
        app: prometheus-webhook-dingtalk
    spec:
      containers:
      - args:
        - --ding.profile=ops_dingding=https://oapi.dingtalk.com/robot/send?access_token=***
        name: prometheus-webhook-dingtalk
        image: quay.io/timonwong/prometheus-webhook-dingtalk
        ports:
        - containerPort: 8060

三、prometheus-webhook-dingtalk Service 文件

在完整的Kubernetes 服务集群中,配置了Service 后;AlertManager 容器就可以通过Service 名称连接webhook-dingtalk容器了。

apiVersion: v1
kind: Service
metadata:
  namespace: monitoring
  name: prometheus-webhook-dingtalk
  labels:
    app: prometheus-webhook-dingtalk
spec:
  selector:
    app: prometheus-webhook-dingtalk
  ports:
  - name: dingtalk-port
    port: 8060
    targetPort: 8060
    protocol: TCP