天天看點

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

163郵箱

可用通過郵件方式進行告警通知的發送,接着上篇文檔,我們配置發送郵件告警方式。

1. 設定163郵箱

發送郵件,需要smtp郵件伺服器,首先需要對網易郵箱進行設定。

首先登陸163郵箱,進入郵箱中心設定。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

然後開啟POP3/SMTP服務,這裡需要掃描二維碼發送短信驗證。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

開通成功後,會顯示一個授權密碼,Alertmanager發送郵件,需要使用這個密碼,而不是163郵箱的登入密碼。

運維監控系列(15)-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告警通知。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

檢視163郵箱,發現接受到了郵件。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

點看郵件,可以看到詳細資訊。

運維監控系列(15)-Alertmanager添加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,稍後檢視郵件。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

釘釘告警

1. 建立釘釘機器人

參考釘釘開發官網添加釘釘機器人,并記錄好點前的Webhook位址。

添加機器人時的安全設定,這裡選擇加簽,将生成的秘鑰複制出來。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

最後生成一個Webhook。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

2. 安裝prometheus-webhook-dingtalk

alertmanager的webhook內建了釘釘報警,是以他是本來就有的。但是釘釘對格式要求很嚴格,一會還需要使用插件進行格式轉換。

prometheus-webhook-dingtalk是Prometheus AlertManager WebHooks生成釘釘通知工具。

下載下傳系統對應的安裝包。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

到安裝包位置,将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為啟動端口。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

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,然後發現成功推送了釘釘告警資訊。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

微信告警

1. 注冊企業微信

注冊位址,沒有的可以随便填個公司名注冊一個。

注冊完成後在應用管理菜單中,點選建立應用。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

添加應用資訊

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

建立成功後,檢視Secret,這裡會發送到企業微信,然後再複制到電腦上來。。。。對應api_secret配置項。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

2. Alertmanager添加wechat通知

注冊了企業微信,添加應用之後就可以添加微信通知配置了。

官網說明中的配置如下:

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

企業微信官方API文檔參數說明如下:

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

結合這些說明,添加如下配置就可以了(不要被百度那些水文誤導了。。)

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,稍等片刻,就發現手機企業微信收到了告警通知消息。。。

運維監控系列(15)-Alertmanager添加163郵箱、釘釘、微信告警通知功能

繼續閱讀