zabbix企業(yè)微信報(bào)警

前言:通過企業(yè)微信小程序,實(shí)現(xiàn)zabbix自動注冊和zabbix告警的微信消息推送。
一、整體架構(gòu)
1、企業(yè)微信 -?創(chuàng)建zabbix機(jī)器人應(yīng)用 -?取得企業(yè)微信ID、應(yīng)用Agentld和Secret
2、編寫zabbix機(jī)器人推送腳本,測試腳本
3、添加報(bào)警媒介
4、配置Trigger?actions觸發(fā)動作,啟用消息推送管理員,填寫要發(fā)送的信息
5、配置Autoregistration?actions自動注冊,填寫要發(fā)送的信息
6、進(jìn)行測試
二、注冊或使用已有的企業(yè)微信,查詢企業(yè)微信ID
1、在企業(yè)微信 -?我的企業(yè) -?企業(yè)信息 -?企業(yè)ID

2、創(chuàng)建zabbix機(jī)器人應(yīng)用
企業(yè)微信后臺 -?應(yīng)用管理 -?應(yīng)用 -?創(chuàng)建應(yīng)用

3、查看Agentld和Secret

三、編寫zabbix機(jī)器人腳本
準(zhǔn)備工作
yum -y install epel-release
yum -y install python-pip
pip?install?requests
查詢腳本存放位置
cat /etc/zabbix/zabbix_server.conf | grep AlertScript
可以看到腳本存放在/usr/lib/zabbix/alertscripts目錄中
編寫腳本 weixin.py并放入上面的目錄 ,填入上面獲得的三個值
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import?requests
import?sys
import?os
import?json
import?logging
logging.basicConfig(level?=?logging.DEBUG,?format?=?'%(asctime)s,?%(filename)s,?%(levelname)s,?%(message)s',
datefmt?=?'%a,?%d?%b?%Y %H:%M:%S',
filename?=?os.path.join('/tmp','weixin.log'),
filemode?=?'a')
corpid='ww36e'
appsecret='5yFNqeTjrr3I'
agentid=1000002
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='?+?corpid?+?'&corpsecret='?+?appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='?+?accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] +?"\n\n"?+sys.argv[3]
params={
"touser":?touser,
# "toparty": toparty,
"msgtype":?"text",
"agentid":?agentid,
"text": {
"content":?message
},
"safe":0
}
req=requests.post(msgsend_url,?data=json.dumps(params))
logging.info('sendto:'?+?touser?+?';;subject:'?+?subject?+?';;message:'?+?message)
賦予執(zhí)行權(quán)限
chmod +x?/usr/lib/zabbix/alertscripts/weixin.py
創(chuàng)建日志文件
touch /tmp/weixin.log
chown zabbix.zabbix /tmp/weixin.log
測試腳本,用戶名為企業(yè)微信通訊錄中的用戶名,一般為拼音全拼,嚴(yán)格區(qū)分大小寫!
/usr/lib/zabbix/alertscripts/weixin.py?用戶名 '標(biāo)題' '測試成功'
此時企業(yè)微信可以收到zaabix應(yīng)用發(fā)來的信息。
四、添加報(bào)警媒介,測試媒介
zabbix后臺 -?管理 -?報(bào)警媒介類型
名稱?weixin
類型?腳本
腳本名稱?weixin.py
腳本參數(shù):
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

五、配置Trigger?actions觸發(fā)動作,啟用消息推送管理員,填寫要發(fā)送的信息
配置 -?動作?Trigger?actions -?創(chuàng)建動作

在 動作 中填寫名稱
在 操作?中編輯操作和恢復(fù)操作
1、操作
發(fā)送消息
zabbix管理員組
僅發(fā)送到微信
custom?message
主題:服務(wù)器報(bào)警
消息:
告警主機(jī):{HOST.NAME}
告警地址:{HOST.IP}
監(jiān)控項(xiàng)目:{ITEM.NAME}
監(jiān)控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當(dāng)前狀態(tài):{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
2、恢復(fù)操作
通知所有參與者
custom?message
主題:服務(wù)器已恢復(fù)
消息:
告警主機(jī):{HOST.NAME}
告警地址:{HOST.IP}
監(jiān)控項(xiàng)目:{ITEM.NAME}
監(jiān)控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當(dāng)前狀態(tài):{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}



六、配置Autoregistration?actions自動注冊,填寫要發(fā)送的信息
在Autoregistration?actions自動注冊中
發(fā)送消息
zabbix管理員組
僅送到weixin
Custom?message
主題:
Linux主機(jī)自動注冊到zabbix服務(wù)器
消息:
主機(jī)名:{HOST.HOST}
主機(jī)IP:{HOST.IP}
Agent端口:{HOST.PORT}


七、進(jìn)行測試
新linux上線微信收到提示
linux重啟微信收到提示
八、總結(jié)
很簡單的啦
