alertmanager 通過釘釘告警&自定義告警模板


准備工作

  通過 釘釘 進行告警,首先需要有一個釘釘群。和釘釘機器人。

進入釘釘群設置中的智能群助手

 

 

添加自定義機器人

 

 

 

 

 

 

 

 

安全設置選擇加簽

  此處需要保存加簽秘鑰。

 

 

完成添加器人

  此處需要保存 webhook 地址。

部署 prometheus-webhook-dingtalk

   Github上已經有人寫好了項目可以直接使用,用於釘釘機器人推送告警信息
   項目地址https://github.com/timonwong/prometheus-webhook-dingtalk

部署dingtalk

wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v2.0.0/prometheus-webhook-dingtalk-2.0.0.linux-amd64.tar.gz

tar xf prometheus-webhook-dingtalk-2.0.0.linux-amd64.tar.gz 
ln -s prometheus-webhook-dingtalk-2.0.0.linux-amd64 prometheus-webhook

准備配置文件

mv config.example.yml config.yml
[root@ops prometheus-webhook]# cat config.yml 
## Request timeout
timeout: 5s   # 超時時間
# 模板文件
templates:
  - templates/alertmanager-dingtalk.tmpl

targets:
  webhook1:
    url: https://oapi.dingtalk.com/robot/send?access_token=xxxxx    # webhook 地址
    # secret for signature
    secret: SECdcc64f10xxxxxx                                       # 加簽秘鑰
    message:
      text: '{{ template "email.to.message" . }}'

准備模板文件

[root@ops prometheus-webhook]# cat templates/alertmanager-dingtalk.tmpl 
{{ define "email.to.message" }}

{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}

=========  **監控告警** =========  

**告警程序:**     Alertmanager   
**告警類型:**    {{ $alert.Labels.alertname }}   
**告警級別:**    {{ $alert.Labels.severity }} 級   
**告警狀態:**    {{ .Status }}   
**故障主機:**    {{ $alert.Labels.instance }} {{ $alert.Labels.device }}   
**告警主題:**    {{ .Annotations.summary }}   
**告警詳情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}   
**主機標簽:**    {{ range .Labels.SortedPairs  }}  </br> [{{ .Name }}: {{ .Value | markdown | html }} ] 
{{- end }} </br>

**故障時間:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}  
========= = end =  =========  
{{- end }}
{{- end }}

{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}

========= 告警恢復 =========  
**告警程序:**     Alertmanager   
**告警主題:**    {{ $alert.Annotations.summary }}  
**告警主機:**    {{ .Labels.instance }}   
**告警類型:**    {{ .Labels.alertname }}  
**告警級別:**    {{ $alert.Labels.severity }} 級   
**告警狀態:**    {{   .Status }}  
**告警詳情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}  
**故障時間:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}  
**恢復時間:**    {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}  

========= = **end** =  =========
{{- end }}
{{- end }}
{{- end }}

准備配置文件

[root@ops prometheus-webhook]# cat /usr/lib/systemd/system/prometheus-webhook-dingtalk.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/prometheus-webhook-dingtalk-2.0.0.linux-amd64/prometheus-webhook-dingtalk  --config.file=/usr/local/prometheus-webhook-dingtalk-2.0.0.linux-amd64/config.yml
[Install]
WantedBy=default.target

啟動程序

systemctl start prometheus-webhook-dingtalk.service 
systemctl status prometheus-webhook-dingtalk.service 
systemctl enable prometheus-webhook-dingtalk.service 

alertmanager 配置文件

route:                                      # 路由組
  group_by: ['alertname', 'app']                   # 
  group_wait: 30s
  group_interval: 40s
  repeat_interval: 1m
  receiver: webhook                 # 默認組


  
receivers:                                 # 收件人組
- name: webhook
  webhook_configs:
  - url: http://localhost:8060/dingtalk/webhook1/send     # dingtalk 地址
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match_re:
      severity: '.*'
    equal: ['instance']

測試

告警事件

 

 

告警恢復

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM