zabbix郵件告警和釘釘告警配置

smtp郵件告警

zabbix默認自帶郵件告警,但是很不好用。
一般我們使用smtp告警郵件,配置告警郵件腳本,發送到smtp郵箱服務器進行轉發,然後發送到告警用戶的郵箱中,完成郵件告警,如阿里郵箱,騰訊郵箱等。
前提zabbix能夠訪問外網,同時stmp郵箱已經配置完整
使用python腳本作爲郵件。zabbix的告警腳本目錄默認在/usr/lib/zabbix/alertscripts/路徑下

#!/usr/bin/python
#coding:utf-8

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr
import sys

def formatAddr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))

def send_mail(to_list,subject,content):
    mail_host = 'smtp.mxhichina.com'    #smtp郵件服務器地址
    mail_user = '[email protected]'  #smtp告警郵箱賬戶
    mail_pass = 'xxxxxxxxx'                            # smtp告警郵箱密碼
    #以上內容根據你的實際情況進行修改
    msg = MIMEText(content,'plain','utf-8')
    msg['Subject'] = Header(subject, 'utf-8').encode()
    msg['From'] = formatAddr('zabbix監控 <%s>' % mail_user).encode()
    msg['to'] = to_list

    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(mail_user,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False

if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
#例:./sendmail_zabbix.py  [email protected] 測試 測試

腳本思路:
1、使用smtp模塊,使用方法參考官方模塊手冊
2、構建send_mail函數,使用三個參數,分別指定爲郵件發送人,標題,內容
3、send_mail函數定義了smtp郵箱的賬戶密碼信息
3、使用sys模塊的os方法,傳遞參數進行測試

保存腳本名稱爲sendmail_zabbix.py

在zabbix“管理-報警媒介類型”中,創建一個告警郵件腳本,名稱就是sendmial_zabbix.py
zabbix郵件告警和釘釘告警配置
詳細按照如下配置
zabbix郵件告警和釘釘告警配置
然後配置動作
zabbix郵件告警和釘釘告警配置
動作信息按照如下配置
zabbix郵件告警和釘釘告警配置

zabbix郵件告警和釘釘告警配置

zabbix郵件告警和釘釘告警配置

具體的信息格式如下,可以自定義

告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

然後對需要接收郵件告警的zabbix用戶分配報警媒介
zabbix郵件告警和釘釘告警配置

然後就可以每天半夜收到郵件告警了
zabbix郵件告警和釘釘告警配置

還睡覺?,起來幹活!

配置釘釘告警

郵件告警最大的問題就是郵件太多,不好及時判斷
最好的方法就是釘釘告警

首先你得有釘釘
其次你得有配置一個機器人
詳細的釘釘配置機器人的辦法可以詢問百度或者看
https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
這裏是我添加的機器人,重點是webhook,每個機器人唯一
zabbix郵件告警和釘釘告警配置

這裏還是使用python腳本,保存在usr/lib/zabbix/alertscripts/路徑下

#!/usr/bin/python
# -*- coding: utf-8 -*-
#zabbix上使用釘釘告警機器人,調用api腳本
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
#定義json http頭部信息
api_url = "https://oapi.dingtalk.com/robot/send?access_token=b5924a81e21921256eb22154b7614512a2ca6e4815bda7de2fed0b59bf03cf89"
#這裏的url是釘釘機器人的api url

def msg(text):                                   #定義函數msg,參數爲txt
    json_text= {                                 #定義json_text字典內容
     "msgtype": "text",
        "text": {
            "content": text
        },
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content  #將字典信息序列化爲json格式發送

if __name__ == '__main__':                    #主函數
    text = sys.argv[1]                        #傳入zabbix定義動作參數,已經在zabbix告警動作中配置
    msg(text)                                 #調用msg (text)函數

保存名稱爲dingding.py。腳本完成了

首先再zabbix用戶中,創建一個用戶,該用戶作爲釘釘機器人消息發送使用
zabbix郵件告警和釘釘告警配置

然後再報警媒介類型創建腳本
zabbix郵件告警和釘釘告警配置
按照如下配置
zabbix郵件告警和釘釘告警配置
參數格式爲

{ALERT.MESSAGE}

然後再配置動作,定義發送的告警方式
zabbix郵件告警和釘釘告警配置
詳細配置如下
zabbix郵件告警和釘釘告警配置
定義告警級別
zabbix郵件告警和釘釘告警配置
定義操作
zabbix郵件告警和釘釘告警配置

信息內容推薦按照如下配置

告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}

好了,現在就可以看到釘釘告警了
zabbix郵件告警和釘釘告警配置

每天沒事釘釘催你幹活

真TM是老闆爽我就爽,老闆不爽我下崗

有時候,我也沒事調下老闆
zabbix郵件告警和釘釘告警配置

這不就是AI嘛~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章