//雪花飘落特效 //右上角github跳转   

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}

 





posted @ 2021-09-10 14:54  农夫运维  阅读(507)  评论(0)    收藏  举报