您好,登錄后才能下訂單哦!
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 = 'alert.xxxx@chucloud.com.cn' #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 yangchao@chucloud.com.cn 測試 測試
腳本思路:
1、使用smtp模塊,使用方法參考官方模塊手冊
2、構建send_mail函數,使用三個參數,分別指定為郵件發送人,標題,內容
3、send_mail函數定義了smtp郵箱的賬戶密碼信息
3、使用sys模塊的os方法,傳遞參數進行測試
保存腳本名稱為sendmail_zabbix.py
在zabbix“管理-報警媒介類型”中,創建一個告警郵件腳本,名稱就是sendmial_zabbix.py
詳細按照如下配置
然后配置動作
動作信息按照如下配置
具體的信息格式如下,可以自定義
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
然后對需要接收郵件告警的zabbix用戶分配報警媒介
然后就可以每天半夜收到郵件告警了
還睡覺?,起來干活!
郵件告警最大的問題就是郵件太多,不好及時判斷
最好的方法就是釘釘告警
首先你得有釘釘
其次你得有配置一個機器人
詳細的釘釘配置機器人的辦法可以詢問百度或者看
https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
這里是我添加的機器人,重點是webhook,每個機器人唯一
這里還是使用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用戶中,創建一個用戶,該用戶作為釘釘機器人消息發送使用
然后再報警媒介類型創建腳本
按照如下配置
參數格式為
{ALERT.MESSAGE}
然后再配置動作,定義發送的告警方式
詳細配置如下
定義告警級別
定義操作
信息內容推薦按照如下配置
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
好了,現在就可以看到釘釘告警了
每天沒事釘釘催你干活
真TM是老板爽我就爽,老板不爽我下崗
有時候,我也沒事調下老板
這不就是AI嘛~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。