zabbix如何配置微信报警
zabbix支持多種報警機制,比如:郵件、短信、微信等等。下面就介紹如何使用微信報警。
使用微信報警必須得有企業微信賬號,個人微信賬號不行。
申請企業微信
注冊地址:https://work.weixin.qq.com/
注冊企業微信,根據提示填寫自己的信息就行,注冊完成后會有提示進入管理后臺。根據自己需要設置即可。
需要記住的幾個信息。
成員賬號:添加的成員賬號。
組織部門ID:可以在通訊錄中部門名稱右側豎著的三個點處查看。
Agentid:企業應用中選中對應的應用點擊進去后就可以看到。
Secret:跟Agentid在一起。
CorpID:我的企業里面可以查看。
zabbix配置
修改zabbix-server配置文件,指定報警腳本的位置,我的在/usr/lib/zabbix/alertscripts目錄下。
# grep alertscripts /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
腳本配置
安裝simplejson
# yum install python-simplejson -y
上傳腳本,并根據注釋修改成自己的信息。
#!/usr/bin/python
#_*_coding:utf-8 _*_
import urllib,urllib2
import json
import sys
import simplejson
reload(sys)
sys.setdefaultencoding('utf-8')
def gettoken(corpid,corpsecret):
gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
# print gettoken_url
try:
token_file = urllib2.urlopen(gettoken_url)
except urllib2.HTTPError as e:
print e.code
print e.read().decode("utf8")
sys.exit()
token_data = token_file.read().decode('utf-8')
token_json = json.loads(token_data)
token_json.keys()
token = token_json['access_token']
return token
def senddata(access_token,user,subject,content):
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
send_values = {
"touser":"XXX", #企業號中的用戶帳號,在zabbix用戶Media中配置,如果配置不正常,將按部門發送。
"toparty":"X", #企業號中的部門id。
"msgtype":"text", #消息類型。
"agentid":"1000005", #企業號中的應用id。
"text":{
"content":subject + '
' + content
},
"safe":"0"
}
# send_data = json.dumps(send_values, ensure_ascii=False)
send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
send_request = urllib2.Request(send_url, send_data)
response = simplejson.loads(urllib2.urlopen(send_request).read())
print str(response)
if __name__ == '__main__':
user = str(sys.argv[1]) #zabbix傳過來的第一個參數
subject = str(sys.argv[2]) #zabbix傳過來的第二個參數
content = str(sys.argv[3]) #zabbix傳過來的第三個參數
corpid = '1111111111111111' #CorpID是企業號的標識
corpsecret = '111111111111111111111111' #corpsecretSecret是管理組憑證密鑰
accesstoken = gettoken(corpid,corpsecret)
senddata(accesstoken,user,subject,content)
修改腳本權限:
# cd /usr/lib/zabbix/alertscripts/
# chmod +x wechat.py && chown zabbix:zabbix wechat.py
可以做測試,看看能否發出信息
# python wechat_alert.py test test test
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wwe302dd7e2757ca1c&corpsecret=o5W2pH9Bo4nOtJBi8yNzPeQ2j-T7KypPcRJ8Hu_E0HU
{'invalidparty': '2', 'invaliduser': u'', 'errcode': 0, 'errmsg': 'ok'}
證明能夠收到消息。
zabbix web界面配置
創建報警媒介。
Script parameters對應腳本內的三個參數:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
創建報警用戶
可以創建新的用戶,也可以使用admin 賬戶,我是直接使用admin賬戶的。
sent to對應部門id。
設置報警動作
使用郵件報警動作就行,在此不再過多介紹了。
報警標題:
故障: {TRIGGER.STATUS},服務器: {HOSTNAME1} 發生: {TRIGGER.NAME} 故障!
報警信息:
告警主機: {HOST.NAME}
主機地址: {HOST.IP}
告警時間: {EVENT.DATE} {EVENT.TIME}
告警等級: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目: {TRIGGER.KEY1}
告警詳情: {ITEM.NAME}: {ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件代碼: {EVENT.ID}
恢復標題:
恢復: {TRIGGER.STATUS},服務器: {HOSTNAME1} 發生: {TRIGGER.NAME} 恢復!
恢復信息:
恢復主機: {HOST.NAME}
主機地址: {HOST.IP}
恢復時間: {EVENT.DATE} {EVENT.TIME}
恢復等級: {TRIGGER.SEVERITY}
恢復信息: {TRIGGER.NAME}
恢復項目: {TRIGGER.KEY1}
恢復詳情: {ITEM.NAME}: {ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件代碼: {EVENT.ID}
測試:停止一個服務查看是否能收到報警信息。
在服務器上停止grafana服務查看。
# systemctl stop grafana-server
遇到的問題
web界面Action log顯示已成功發送,但是收不到消息,經過查詢是wechat_alert.py屬主屬組不是zabbix,也沒有執行權限,修改后能夠正常接收信息。
總結
以上是生活随笔為你收集整理的zabbix如何配置微信报警的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#版免费离线人脸识别——虹软ArcSo
- 下一篇: BTE的一些知识