跳转至

Webhook-dingtalk

钉钉告警部署

1.创建钉钉机器人

2.记录 加签密钥

SEC5784431bd3854c2cb80e5d78148a49b3e284fa0fc434ec74927163330e******

3.记住webhook 地址

https://oapi.dingtalk.com/robot/send?access_token=0c1385c81fd3fd2cd391036d398c7ddae6e717928214b2f1daafed6cf5******

4.下载插件

wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz

4.解压

tar -zxvf /share/soft/prometheus/prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz -C /opt/

mv /opt/prometheus-webhook-dingtalk-2.1.0.linux-amd64 /opt/webhook-dingtalk

cp -rp /opt/webhook-dingtalk/config.example.yml /opt/webhook-dingtalk/config.yml

5.启动

Bash
1
2
3
screen -S webhook
cd /opt/webhook-dingtalk/
./prometheus-webhook-dingtalk --config.file=config.yml 

systemd管理服务

vim /usr/lib/systemd/system/webhook.service

Bash
[Unit]
Description=Prometheus-Server
After=network.target

[Service]
ExecStart=/opt/webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/opt/webhook-dingtalk/config.yml
User=root

[Install]
WantedBy=multi-user.target

修改配置文件

编辑配置文件,添加模版路径,添加webhook地址与密钥

vim /opt/webhook-dingtalk/config.yml

Bash
# 配置告警模版路径
templates:
  - contrib/templates/template.tmpl

# 配置webhook地址,之前记录的
targets:
  webhook1:
    url: https://oapi.dingtalk.com/robot/send?access_token=0c1385c81fd3fd2cd391036d398c7ddae6e717928214b2f1daafed6cf******
    # secret for signature
    secret: SEC5784431bd3854c2cb80e5d78148a49b3e284fa0fc434ec74927163330e******

添加钉钉报警模板

vim /opt/webhook-dingtalk/contrib/templates/template.tmpl

Bash
{{ define "__subject" }}
[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}]
{{ end }}


{{ define "__alert_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}

**告警主题**: {{ .Annotations.summary }}

**告警类型**: {{ .Labels.alertname }}

**告警级别**: {{ .Labels.severity }} 

**告警主机**: {{ .Labels.instance }} 

**告警信息**: {{ index .Annotations "description" }}

**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}

{{ define "__resolved_list" }}{{ range . }}
---
{{ if .Labels.owner }}@{{ .Labels.owner }}{{ end }}

**告警主题**: {{ .Annotations.summary }}

**告警类型**: {{ .Labels.alertname }} 

**告警级别**: {{ .Labels.severity }}

**告警主机**: {{ .Labels.instance }}

**告警信息**: {{ index .Annotations "description" }}

**告警时间**: {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}

**恢复时间**: {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}
{{ end }}{{ end }}


{{ define "default.title" }}
{{ template "__subject" . }}
{{ end }}

{{ define "default.content" }}
{{ if gt (len .Alerts.Firing) 0 }}
**====侦测到{{ .Alerts.Firing | len  }}个故障====**
{{ template "__alert_list" .Alerts.Firing }}
---
{{ end }}

{{ if gt (len .Alerts.Resolved) 0 }}
**====恢复{{ .Alerts.Resolved | len  }}个故障====**
{{ template "__resolved_list" .Alerts.Resolved }}
{{ end }}
{{ end }}


{{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
{{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}
{{ template "default.title" . }}
{{ template "default.content" . }}

配置Alertmanager服务

vim /opt/alertmanager/alertmanager.yml

Bash
route:
  group_by: ['dingding']
  # 发送告警频率,适当调整下边三个参数
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'dingding.webhook1'
  routes:
  - receiver: 'dingding.webhook1'
    match_re:
      # 正则,匹配所有告警走钉钉
      alertname: ".*"
receivers:
  - name: 'dingding.webhook1'
    webhook_configs:
      # webhook-dingtalk组件地址与端口
      - url: 'http://172.16.1.18:8060/dingtalk/webhook1/send'
        send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

重新加载配置

curl -X POST http://172.16.1.18:9093/-/reload