zabbix set WeChat alarm

Zabbix supports a variety of alarm mechanisms, such as: email, SMS, WeChat, etc. The following describes how to use WeChat alarm.
To use WeChat alarm, you must have a corporate WeChat account, not a normal WeChat account.

Apply for Enterprise WeChat

Registration address: https://work.weixin.qq.com/
To register on WeChat, just fill in your own information according to the prompts. After the registration is completed, you will be prompted to enter the management background. You can set it according to your own needs, because the specific steps have been registered and will not be demonstrated.


A few pieces of information to remember.
Member account: The added member account.
Organization Department ID: It can be viewed in the three vertical dots on the right side of the department in the address book.
Agentid: You can see it after selecting the corresponding application in the enterprise application and clicking it.
Secret: with Agentid.
CorpID: It can be viewed in my enterprise.

zabbix configuration

Modify the zabbix-server configuration file and specify the location of the alarm script, mine is in the /usr/lib/zabbix/alertscriptsdirectory.

# grep alertscripts /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts

Screenplay arrangement

install simplejson

# yum install python-simplejson -y

Upload the script and modify it into your own information according to the comments.

#!/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 + '\n\n' + 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)

You can do a test to see if you can send a message

# 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'}


Prove that the message can be received normally.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324954631&siteId=291194637