Zabbix Basic -zabbix 使用python脚本调用群企业微信机器人将告警信息发送至“企业微信”群中,并@指定人员(提醒指定人员查看)
企业微信官网关于群机器人的配置说明请点击此处跳转查看
机器人创建完成后会生成一个webhook,请保存好,且不要对外泄漏,如下是官网的解释:
在终端某个群组添加机器人之后,可以获取到webhook地址,然后开发者用户按以下说明构造post data向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。
特别特别要注意:一定要保护好机器人的webhook地址,避免泄漏!不要分享到github、博客等可被公开查阅的地方,否则坏人就可以用你的机器人来发垃圾消息了。
复制以下代码到zabbix报警脚本存放路径
进入到zabbix报警脚本存放路径
[root@whzabbix alertscripts]# cat /etc/zabbix/zabbix_server.conf | grep alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@whzabbix alertscripts]# pwd
/usr/lib/zabbix/alertscripts
创建python脚本文件
[root@whzabbix alertscripts]# vim zabbix-python-robot.py
按“i”键进入vim编辑器的插入模式,并粘贴以下代码(需要修改机器人的webhook的地址)
脚本可正常使用,但是后续可能会再继续优化
#!/usr/bin/python3.6 #_*_coding:utf-8 _*_ #author:Fei Huang import requests,sys,json,time import urllib3 urllib3.disable_warnings() def SendMessageURL(User,Subject,Messages): # 以下URL 引号内的内容替换为你的机器人的webhook的地址 URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxx" HEADERS = {"Content-Type": "application/json"} Data = { "msgtype": "text", "text": { "content": Subject + "\n" + Messages, #下方代码在群里@相应的人员,注意需要使用userid,就是用户名,不是中文名称,是企业微信通讯录中的“帐号”,这里不用修改,只需要知道账号就可以了。 "mentioned_list" :[User], #"mentioned_list" :[User,"@all"], #下方代码可使用手机号进行提示,本示例中并未示例 #"mentioned_mobile_list" : ["13800000000","@all"] } } r = requests.post(url=URL, headers=HEADERS, json=Data, verify=False) print(r.json()) if __name__ == "__main__": SENDTO = str(sys.argv[1]) SUBJECT = str(sys.argv[2]) MESSAGE = str(sys.argv[3]) Status = str(SendMessageURL(SENDTO,SUBJECT,MESSAGE)) print (Status)
修改脚本的执行权限
[root@whzabbix alertscripts]# chmod +x zabbix-python-robot.py
测试发送消息
脚本执行的格式
[root@whzabbix alertscripts]# ./zabbix-python-robot.py userid object message
如上所示,脚本执行需要携带3个参数:
参数1:需要提醒的用户名的“账号”
参数2:发送消息的主题
参数3:发送消息的内容
开始测试(测试过程可省略)
[root@whzabbix alertscripts]# ./zabbix-python-robot.py 1 2 3 {'errcode': 0, 'errmsg': 'ok'} None结果如下
提醒某人查看(本例中需要提醒用户的账号为:test)
[root@whzabbix alertscripts]# ./zabbix-python-robot.py test 告警测试 这是一条比较简短的告警发送测试
{'errcode': 0, 'errmsg': 'ok'}
None结果如下
被提示的人员的企业微信会红色特别提示,其它人不会有特别的提示,在将群消息设置成免打扰的时候会特别醒眼
账号:test,中文名字叫:测试账号,这里会直接显示中文账号。![]()
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}




浙公网安备 33010602011771号