163郵箱
可用通過郵件方式進行告警通知的發送,接着上篇文檔,我們配置發送郵件告警方式。
1. 設定163郵箱
發送郵件,需要smtp郵件伺服器,首先需要對網易郵箱進行設定。
首先登陸163郵箱,進入郵箱中心設定。

然後開啟POP3/SMTP服務,這裡需要掃描二維碼發送短信驗證。
開通成功後,會顯示一個授權密碼,Alertmanager發送郵件,需要使用這個密碼,而不是163郵箱的登入密碼。
2. alertmanager.yml配置檔案添加郵件通知
global中添加smtp相關配置。
# 全局配置,包括報警解決後的逾時時間、SMTP 相關配置、各種管道通知的 API 位址等等。
global:
# 告警逾時時間
resolve_timeout: 5m
# 發送者郵箱位址
smtp_from: '[email protected]'
# 郵箱smtp伺服器位址及端口
smtp_smarthost: 'smtp.163.com:25'
# 發送者郵箱賬号
smtp_auth_username: '[email protected]'
# 發送者郵箱密碼,這裡填入第一步中擷取的授權碼
smtp_auth_password: 'wWIXMAZCNBMW'
# 是否使用tls
smtp_require_tls: false
smtp_hello: '163.com'
# 路由配置,設定報警的分發政策,它是一個樹狀結構,按照深度優先從左向右的順序進行比對。
route:
# 用于将傳入警報分組在一起的标簽。
# 基于告警中包含的标簽,如果滿足group_by中定義标簽名稱,那麼這些告警将會合并為一個通知發送給接收器。
group_by: ['alertname']
# 發送通知的初始等待時間
group_wait: 30s
# 在發送有關新警報的通知之前需要等待多長時間
group_interval: 5m
# 如果已發送通知,則在再次發送通知之前要等待多長時間,通常約3小時或更長時間
repeat_interval: 30s
# 接受者名稱
receiver: '163.email'
# 配置告警消息接受者資訊,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
- name: '163.email'
email_configs:
# 配置接受郵箱位址
- to : '[email protected]'
3. 測試
重新開機Alertmanager,檢視控制台,已接收到Nacos告警通知。
檢視163郵箱,發現接受到了郵件。
點看郵件,可以看到詳細資訊。
4. 配置郵件模闆
在第三步,成功接收到了郵件,但是格式比較亂,這裡可以使用郵件模闆,Alertmanager 帶有預設模闆,可以自定義。後面的釘釘和微信都是可以自定義模闆的,步驟差不多,就不贅述了。
Alertmanager 的通知模闆基于Go 模闆系統,具體支援哪些變量請參照官網說明。
首先我們在Alertmanager主目錄下建立一個templates檔案夾,使用者存放模闆檔案,然後建立一個email.tmpl檔案,寫入以下内容:
{{ define "email.html" }}
{{ range .Alerts }}
告警程式: prometheus_alert <br>
告警級别: {{ .Labels.severity }} 級 <br>
告警類型: {{ .Labels.alertname }} <br>
故障主機: {{ .Labels.instance }} <br>
告警主題: {{ .Annotations.summary }} <br>
告警詳情: {{ .Annotations.description }} <br>
觸發時間: {{ .StartsAt.Format "2019-08-04 16:58:15" }} <br>
{{ end }}
{{ end }}
然後在alertmanager.yml中添加模闆掃描,及郵件使用模闆。
# 配置自定義模闆位置
templates:
- 'templates/*.tmpl'
# 配置告警消息接受者資訊,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
- name: '163.email'
email_configs:
# 配置接受郵箱位址
- to : '[email protected]'
html: '{{ template "email.html" . }}'
# 郵件主題資訊
headers: {Subject: "[WARN] 報警郵件 {{ .CommonLabels.instance }} {{ .CommonAnnotations.summary }}"}
重新開機Alertmanager,稍後檢視郵件。
釘釘告警
1. 建立釘釘機器人
參考釘釘開發官網添加釘釘機器人,并記錄好點前的Webhook位址。
添加機器人時的安全設定,這裡選擇加簽,将生成的秘鑰複制出來。
最後生成一個Webhook。
2. 安裝prometheus-webhook-dingtalk
alertmanager的webhook內建了釘釘報警,是以他是本來就有的。但是釘釘對格式要求很嚴格,一會還需要使用插件進行格式轉換。
prometheus-webhook-dingtalk是Prometheus AlertManager WebHooks生成釘釘通知工具。
下載下傳系統對應的安裝包。
到安裝包位置,将config.yml.example重命名為config.yml,删除掉全部預設配置,添加以下内容:
targets:
ding_webhook:
# 釘釘webhook位址
url: https://oapi.dingtalk.com/robot/send?access_token=a8a5c0ecea3a027de77812df0bcc0fd0d5c73cfaebebecbd35
# 第一步中擷取到的加簽秘鑰
secret: SEC8bd856c89e0635798828a0fa8ff1d26403df25fd925657
啟動prometheus-webhook-dingtalk.exe程式,檢視列印日志,可以看到圖中1為Alertmanager提供了Webhook位址,2為啟動端口。
3. 配置Alertmanager
修改alertmanager.yml配置檔案,添加路由和接受者配置,注意url填寫釘釘插件提供的webhook位址,而不是釘釘直接提供的那個webhook。
route:
#設定預設接收人
receiver: 'webhook'
#組告警等待時間。也就是告警産生後等待10s,如果有同組告警一起發出
group_wait: 10s
#兩組告警的間隔時間
group_interval: 10s
#重複告警的間隔時間,減少相同微信告警的發送頻率
repeat_interval: 30s
#采用哪個标簽來作為分組依據
group_by: [alertname]
routes:
- receiver: webhook
group_wait: 10s
# 配置自定義模闆位置
templates:
- 'templates/*.tmpl'
# 配置告警消息接受者資訊,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
- name: 'webhook'
webhook_configs:
# 釘釘插件提供的webhook位址
- url: http://localhost:8060/dingtalk/ding_webhook/send
#警報被解決之後是否通知
send_resolved: true
然後啟動Alertmanager。關閉Nacos,然後發現成功推送了釘釘告警資訊。
微信告警
1. 注冊企業微信
注冊位址,沒有的可以随便填個公司名注冊一個。
注冊完成後在應用管理菜單中,點選建立應用。
添加應用資訊
建立成功後,檢視Secret,這裡會發送到企業微信,然後再複制到電腦上來。。。。對應api_secret配置項。
2. Alertmanager添加wechat通知
注冊了企業微信,添加應用之後就可以添加微信通知配置了。
官網說明中的配置如下:
企業微信官方API文檔參數說明如下:
結合這些說明,添加如下配置就可以了(不要被百度那些水文誤導了。。)
route:
#設定預設接收人
receiver: 'wechat'
#組告警等待時間。也就是告警産生後等待10s,如果有同組告警一起發出
group_wait: 10s
#兩組告警的間隔時間
group_interval: 10s
#重複告警的間隔時間,減少相同微信告警的發送頻率
repeat_interval: 30s
#采用哪個标簽來作為分組依據
group_by: [alertname]
# 配置自定義模闆位置
templates:
- 'templates/*.tmpl'
# 配置告警消息接受者資訊,例如常用的 email、wechat、slack、webhook 等消息通知方式
receivers:
- name: 'wechat'
wechat_configs:
- send_resolved: true
# 建立應用的 AgentId
agent_id: 100xx
# 企業 id,可以在企業微信管理背景,我的企業 - 企業 ID 檢視
corp_id: 'd1f14ffea0a01a'
# 應用的 Secret
api_secret: 'ncqlL0egmjFTjFlPKKycLOvARwesqB4'
# 指定需要接收告警的使用者,@all表示全部
to_user: '@all'
3. 測試
重新開機Alertmanager,稍等片刻,就發現手機企業微信收到了告警通知消息。。。