19.13/19.14 配置郵件告警

配置郵件告警

  • 使用163或者QQ郵箱發告警郵件
  • 首先登陸你的163郵箱,設置開啓POP三、IMAP、SMTP服務
  • 開啓並記錄受權碼
  • 而後到監控中心設置郵件告警
  • 「管理」,「報警媒介類型」,「建立媒體類型」
  • {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

輸入圖片說明

  • 建立報警腳本mail.py
  • vim /usr/lib/zabbix/alertscripts/mail.py//內容參考
  • chmod 755 /usr/lib/zabbix/alertscripts/mail.py
  • 建立一個接受告警郵件的用戶,「管理」,「用戶」,「建立用戶」,「報警媒介」,類型選擇「baojing」,注意用戶的權限,若是沒有須要到用戶組去設置權限
  • 設置動做,「配置」,「動做」,「建立動做」,名稱寫「sendmail」(自定義),「操做」頁面,內容以下
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
  • 「新的觸發條件」,A維護狀態 非在 維護,B觸發器示警度>=未分類
  • 「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」
  • 切換到「恢復操做」,把信息改爲以下
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
  • 點擊「新的」,「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」
  • 測試告警

配置郵件告警

  1. 首先須要一個郵箱,使用郵箱發郵件(163郵箱)
  2. 訪問163郵箱,在第三方平臺上調用163郵箱發郵件,須要設置開啓POP三、IMAP、SMTP服務
  • 設置——POP3/IMAP/SMTP
    • 第一次開啓POP3/IMAP/SMTP服務會有短信驗證
    • 在驗證完以後還須要設置客戶端受權密碼(須要牢記),接下來發郵件的密碼就是受權密碼
  1. 在寫腳本以前 進入zabbix的web界面——> 管理——> 報警媒介類型——>建立媒體類型
  • 在報警媒介類型裏面的自帶的 Email 使用不方便,因此本身寫python發郵件的腳本

輸入圖片說明

  • 名稱:指的是報警媒介類型的名稱,自定義,這裏叫作 baojing
  • 類型:腳本
  • 腳本名稱:自定義,這裏叫作 mail.py
  • 在py腳本參數下,三個參數都分佈在py的腳本里
    • {ALERT.SENDTO} 表示收件人
    • {ALERT.SUBJECT} 表示郵件主題
    • {ALERT.MESSAGE} 表示郵件內容
  1. 這時會看到成功添加 baojing 報警媒介類型

輸入圖片說明

  1. 要實現報警,首先py腳本能發出郵件
  2. 在服務端(A機器)建立報警腳本mail.py,查看報警腳本所在位置
A機器
[root@hf-01 ~]# vim /etc/zabbix/zabbix_server.conf

搜索 /alert
AlertScriptsPath=/usr/lib/zabbix/alertscripts
#報警腳本所在路徑
  1. 建立報警腳本mail.py,在/usr/lib/zabbix/alertscripts/目錄下是空的, 來建立,腳本內容參考
A機器
[root@hf-01 ~]# vim /usr/lib/zabbix/alertscripts/mail.py

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.163.com'
##定義發郵件類型
    gport = 25
    try:
        msg = MIMEText(unicode(content).encode('utf-8'))
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject
        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)
        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:
        print "Send mail failed. Error: %s" % err
def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
##定義QQ郵箱的帳號和密碼,你須要修改爲你本身的帳號和密碼(請不要把真實的用戶名和密碼放到網上公開,不然你會死的很慘)
    sendqqmail('163郵箱','密碼','163郵箱',to,subject,content)

if __name__ == "__main__":
    main()
    
    
#####腳本使用說明######
#1. 首先定義好腳本中的郵箱帳號和密碼
#2. 腳本執行命令爲:python mail.py 目標郵箱 "郵件主題" "郵件內容"

保存退出
  1. 更改mail.py腳本的權限(很重要!!!),不然就會沒法告警
  • chmod 755 /usr/lib/zabbix/alertscripts/mail.py
[root@hf-01 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py
[root@hf-01 ~]#
  1. 測試mail.py是否能發郵件,定義三個參數,如果給QQ的郵箱發郵件有可能會收不到
[root@hf-01 ~]# cd /usr/lib/zabbix/alertscripts/
[root@hf-01 alertscripts]# python mail.py han1118feng@163.com "ssss" "dddd"
[root@hf-01 alertscripts]#
  • 沒有任何提示就表示發郵件成功
  1. 這時打開163郵箱,會看到郵件

輸入圖片說明

  1. 如果在郵件裏面寫中文,到郵箱裏面會顯示亂碼,這是由於在zabbix使用的是utf-8的字符集,而在郵箱裏使用的是GBK字符集,因此會亂碼
[root@hf-01 alertscripts]# python mail.py han1118feng@163.com "郵件" "dddd"
[root@hf-01 alertscripts]#

輸入圖片說明

  1. 建立一個接受告警郵件的用戶(用戶是用來接收郵件的),在建立用戶的前提是建立一個用戶組,用戶組可使用已經存在的, 因此這裏直接建立用戶,管理-->用戶-->建立用戶

輸入圖片說明

  1. 再給剛剛的用戶設置郵箱,管理-->用戶-->報警媒介-->添加

輸入圖片說明

  1. 還要 注意用戶的權限,若是沒有權限,郵件是無法發的,要暫時到用戶組裏 (管理-->用戶羣組)
  • 默認的權限是無,須要去修改羣組,給予權限

輸入圖片說明

輸入圖片說明

  1. 設置動做,咱們配置了觸發器,那麼觸發後應該去作什麼,配置-->動做-->建立動做
  • 動做
    • 名稱:中英文均可以,這裏叫 發郵件
    • 條件:維護狀態 非在 維護,就表示 維護狀態機器不進行發郵件
      • 新的觸發條件,當觸發器示警度(也就是信息,警告,通常嚴重...)大於等於未分類(未分類 表示 全部狀態,都會發信息)

輸入圖片說明

  • 配置-->動做-->操做
    • 默認信息:直接刪除原有的(比較亂),粘貼下面的內容
    • 維護期間暫停操做:選擇打勾(若不打對勾也能夠,由於在動做的條件裏定義了)
默認信息定義當發生報警時,zabbix會向你的郵箱發送什麼內容
HOST:{HOST.NAME} {HOST.IP}              (定義主機名)
TIME:{EVENT.DATE}  {EVENT.TIME}          (定義事件發生時間)
LEVEL:{TRIGGER.SEVERITY}                (定義示警度)
NAME:{TRIGGER.NAME}                   (定義哪個觸發器發出的報警)
messages:{ITEM.NAME}:{ITEM.VALUE}           (發出告警會出現什麼狀態碼)
ID:{EVENT.ID}                         (發生事件的id)

輸入圖片說明

  • 配置-->動做-->恢復操做
    • 默認信息:直接刪除原有的(比較亂),粘貼下面的內容(粘貼內容和操做裏面複製進去的信息是相同的)
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}

輸入圖片說明 輸入圖片說明

  • 最後點 添加 確認

輸入圖片說明

相關文章
相關標籤/搜索