之前我们使用 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。
webhook-dingtalk 默认监听8060端口(可以配置)。
AlterManager 通过webhook_config 方式配置url地址为/dingtalk/profile_name/seed
profile_name为启动webhook-dingtalk服务时设置的-ding.profile配置信息名称。
-ding.profile选项可以在一个服务启动中设置多次。对应多个钉钉报警机器人。
-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