首頁 > 後端開發 > Python教學 > 詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法

詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法

高洛峰
發布: 2017-03-23 15:40:12
原創
2061 人瀏覽過

1,找到預設存放腳本的路徑(我是在預設路徑下面放著,如果想換別的路徑,修改zabbix_server.conf設定檔)

/usr/local/zabbix-server/ share/zabbix/alertscripts 腳本存放路徑

2,在目錄新建一個mail.py的文件,腳本參考:

cd /usr/local/zabbix-server/share/zabbix/alertscripts

vim mail.py

#!/usr/bin/python

#coding:utf-8

#author: itnihao

#mail: itnihao@qq.com

#url:https://github.com/itnihao/zabbix-book/edit/master/06-chapter/zabbix_sendmail_v2.py   腳本直接down修改下複製會出現格式問題~

import smtplib

from email.mime.text import MIMEText

import os

import argparse

#import logging

import datetime

#QQ enterprise

#smtp_server = 'smtp.exmail.qq.com'

##smtp_port = 25

#smtp_user = 'itnihao_zabbix@itnihao.com'

#smtp_pass = '1234567890'

163 Mail

#smtp_server = 'smtp.163.com'

#smtp_port = 25

#smtp_user = 'itnihao_zabbix@163.com'

#smtp_pass = '1234567890'

#QQ Mail

smtp_server ='smtp.qq.com'

smtp_port = 25

smtp_user   ='itnihao_zabbix@qq.com'

smtp_pass##  ='1234567890'

##smtp_pass

#def send_mail(mail_to,subject,content):

    msg = MIMEText(content,_subtype='plain', _charset='utf-8')

    msg['Subject'] = unicode(subject,'UTF-8')

    msg['From'] = smtp_user

    msg['to'] = mail_to

   ##csg s['to'] = mail_to

##  

    global senderr

    try:

        if smtp_port == 465:

   #P      else:

#            smtp = smtplib.SMTP()

        smtp.connect(smtp_server,sm      smtp.sendmail(smtp_user,mail_to ,msg.as_string())

        smtp.close()

        print 'send )

## 

##        senderr=str(e)

        print senderr

#        sendstatus = False

#        sendstatus = False

##sdef. logpath='/var/log/zabbix/alert'

    if not sendstatus:

        content = senderr

  

#        os.makedirs(logpath)

    t=datetime.datetime.now()

#    daylogfile=logpath+'/'+str(daytime)+'.log'

    logging.basicConfig(filename=daylogfile,level=logging.DEBUG)

##    os.system( 'chown zabbix.zabbix {0}'.format(daylogfile))

    logging.info('*'*130)

    logging.debug(str(t)+' mail send to {0},content is :\n {1}'.format(mail_to,content))

if __name__ == "__main__":

    parser = argparse.ArgumentParser(description=' Send mail to user for zabbix alerting')

    parser.add_argument('mail_to',action="store", help='The address of the E-mail that send to user ')

#user ')

#user ' #    parser.add_argument('subject',action="store", help='The subject of the E-mail')

    parser.add_argument('content',action="store", help=' The content of the E-mail')

    args = parser.parse_args()

    mail_to=args.mail_to

  #  subject=args.subjectmail_to

  #  subject=args.subject

s。 content=args.content

    send_mail(mail_to,subject,content)

logwrite(sendstatus,mail_to,content)

3,修改腳本的權限

# chown   zabbix.zabbix mail.py

# chmod  775 mail.py

4,zabbix web設定

#在設定媒介類型選擇,建立一個媒介類型

詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法

填寫下面信息,類型選擇腳本,需要填寫zabbix3.0需要下面3個參數。

詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法

建立使用者或在admin用戶中設定警報

詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法

這裡新增的是故障後郵件通知到的郵件,也就是收件者。

詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法

建立一個action,實作郵件警報,在設定-Action-create action裡

(處我圖片和下面給的範本不一樣,建​​議使用模板,因為我使用的伺服器不在中國區域,所有郵件標題會亂碼.. 所以此圖我把標題改短了。

Action-Email

詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法Default subject:

故障{TRIGGER.STATUS},伺服器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!

Default message :

警告主機:{HOSTNAME1}

#警報時間:{EVENT.DATE} {EVENT.TIME}

警告等級:{TRIGGER.SEVERITY}

#警告訊息: {TRIGGER.NAME}

警告項目:{TRIGGER.KEY1}

問題詳情:{ITEM.NAME}:{ITEM.VALUE}

目前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

請至Montoring-Events中查看詳細狀況。

Recovery subject:

恢復{TRIGGER.STATUS}, 伺服器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!

#Recovery message:

警告主機:{HOSTNAME1}

警告時間:{EVENT.DATE} {EVENT.TIME}

告警等級:{TRIGGER.SEVERITY}

#警告訊息: { TRIGGER.NAME}

警報項目:{TRIGGER.KEY1}

#問題詳情:{ITEM.NAME}:{ITEM.VALUE}

目前狀態:{TRIGGER. STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

#警報已恢復,請放鬆心情。

這裡要注意操作類型,發送訊息,還有訊息的腳本。要選對.

詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法

5,測試zabbix發送郵件

找一個agent客戶端,停止。然後看警報郵件~

詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法Kill掉之後,可以在發送這裡看到已經發生成功~ 

注意:zabbix的警報通常是5分鐘發一次。例如:16:20停止的,16:25才會收到故障郵件,16:30處理了。 16:35可以收到恢復訊息~ … 

6.總結詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法

    我這裡使用的ubuntu 16.4的系統,開始嚐用mailx發,後來少一些庫文件無法安裝,後來切換其他辦法都已收不到郵件最後才選定用外部python腳本來實現~·ubuntu系統有很多軟體的依賴環境不自帶.apt-get實在用的不順手,使用126郵箱出現客戶端授權碼無法無法在python腳本中登陸.QQ郵箱只能發生給自己. 最後選的是公司的企業郵箱。但是由於zabbix會頻繁的發送郵件很多也被丟進垃圾箱… 最後在企業郵箱做的轉發到QQ郵箱。

詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法Ubuntu用開發和學習沒問題,但是用作伺服器問題還不少.

正確的姿勢: centos+zabbix+企業信箱 後續如果有機會寫下篇zabbix中微信警報。

以上是詳解Zabbix3.0.2使用外部python腳本實現郵件警報方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板