天天看點

Prometheus +alertmanager配置釘釘告警

近期接到工作任務,需要研究監控告警。

僅以本文記錄一下整個實作過程。不足之處,歡迎指出。

因為本公司平時辦公需要用到釘釘,是以選擇研究一下釘釘告警,以供後期項目使用。

1.下載下傳釘釘pc版,擷取釘釘機器人Webhook 位址

手機端無法進行添加機器人的操作,請自行百度下載下傳安裝釘釘pc版。

由于機器人是将消息推送到群,需要預先建立好一個群,這裡先建立了一個名為“監控報警”的群作為接收消息的群。

Prometheus +alertmanager配置釘釘告警

下面我們開始添加機器人的操作,點選左上角賬号名-設定:

Prometheus +alertmanager配置釘釘告警

找到機器人管理欄,點選“前往設定”

Prometheus +alertmanager配置釘釘告警

選擇“自定義”:

Prometheus +alertmanager配置釘釘告警

設定機器人的基本資訊,這裡注意設定好ip位址(白名單),否則無法進行消息發送。這裡的ip最初我設定的是伺服器内網位址:192.xxx.xxx.xxx。【此處有坑,請看5.錯誤排查處的處理】

Prometheus +alertmanager配置釘釘告警

記錄好下面的Webhook位址。後面修改配置資訊的時候需要這個位址。

Prometheus +alertmanager配置釘釘告警

2.釘釘插件的安裝和配置

在伺服器端安裝釘釘插件。

安裝指令如下:

(1)下載下傳安裝包

wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v1.4.0/prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz

(2)解壓

tar -zxvf prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz -C /usr/local/

(3)重命名

mv prometheus-webhook-dingtalk-1.4.0.linux-amd64 /usr/local/dingtalk/

修改config.yml 檔案中的 url 後面的值資訊為複制出機器人的Webhook位址,删除消息模闆的位址處的注釋:

cp config.example.yml config.yml

vim config.yml

Prometheus +alertmanager配置釘釘告警
Prometheus +alertmanager配置釘釘告警

修改消息模闆内容:

{{ define “ding.link.title” }}{{ template “legacy.title” . }}{{ end }}

{{ define “ding.link.content” }}

{{ if gt (len .Alerts.Firing) 0 -}}

告警清單:

{{ template “__text_alert_list” .Alerts.Firing }}

{{- end }}

{{ if gt (len .Alerts.Resolved) 0 -}}

恢複清單:

{{ template “__text_resolve_list” .Alerts.Resolved }}

{{- end }}

{{- end }}

Prometheus +alertmanager配置釘釘告警

啟動插件并将日志存于dingding.log中:

/usr/local/dingtalk/prometheus-webhook-dingtalk --log.level=info > dingding.log 2>&1 &

檢查日志檔案,level=info,無level=error的日志資訊即可初步判定啟動正常:

标記處http://localhost:8060/dingtalk/webhook1/send這個位址在後面alertmanager的配置中會使用。

Prometheus +alertmanager配置釘釘告警

3.alertmanager配置

vim alertmanager.yml

route:

group_by: [‘alertname’]

group_wait: 10s

group_interval: 10s

repeat_interval: 1h

receiver: ‘ops_dingding’ #預設的接收器

#發送釘釘告警

receivers:

  • name: ‘ops_dingding’

    webhook_configs:

    • url: ‘http://192.xxx.xx.xx:8060/dingtalk/webhook1/send’

      send_resolved: true

Prometheus +alertmanager配置釘釘告警

重新開機alertmanager。

4.檢視告警

檢查釘釘消息欄。

Prometheus +alertmanager配置釘釘告警

5.錯誤排查

按以上步驟操作之後,若沒有告警資訊。

(1)檢查prometheus中的告警規則是否有告警,如沒有告警,此處不發送消息則為正常,可自己停掉某個節點,模拟一個告警。

(2)檢查alertmanager及dingtalk的啟動日志是否出現報錯。

vim dingding.log

level=error ts=2021-07-13T07:47:15.311Z caller=dingtalk.go:103 component=web target=webhook1 msg=“Failed to send notification to DingTalk” respCode=310000 respMsg=“ip 110.18x.xx.xxx not in whitelist, more: [https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq]”

Prometheus +alertmanager配置釘釘告警

翻譯一下:

msg=“向DingTalk發送通知失敗”respCode=310000 respMsg=“ip 110.18x.xxx.xxx不在白名單中。

此時很容易聯想到,釘釘設定機器人基本資訊時添加過ip位址。這時候去檢查一下:将日志中提到的ip位址加入到裡面即可。

Prometheus +alertmanager配置釘釘告警

繼續閱讀