配置zabbix通过微信报警企业微信报警

本文配置步骤:

 https://work.weixin.qq.com/api/doc#10013

第一个要记录的值:部门ID:1

选择企业应用

选择创建应用

自定义填

创建应用后退出,点击刚才创建的应用进入

记录下这两个值:AgentId、Secret

 然后选择企业

 

记录值:CorpId

可以使用企业微信的API接口测试一下

http://work.weixin.qq.com/api/devtools/devtool.php

返回值如下即为OK,可以写脚本引用

告警脚本:(此脚本针对部门ID发送,添加后台应用选择哪些人可见然后哪些人就可以收到告警了,如果新增一个应用,就copy这个代码到另一个脚本修改corpid就可以了)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# auth: __ linda __

import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )

class WeChat(object):
    __token_id = ''
    # init attribute
    def __init__(self,url):
        self.__url = url.rstrip('/')
        self.__corpid = 'xxx'      #这里修改企业id
        self.__secret = 'xxx-xxx'    #这里修改告警应用secretid

    # Get TokenID
    def authID(self):
        params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
        data = urllib.urlencode(params)
        content = self.getToken(data)
        try:
            self.__token_id = content['access_token']
            print content['access_token']
        except KeyError:
            raise KeyError

    # Establish a connection
    def getToken(self,data,url_prefix='/'):
        url = self.__url + url_prefix + 'gettoken?'
        try:
            response = urllib2.Request(url + data)
        except KeyError:
            raise KeyError
        result = urllib2.urlopen(response)
        content = json.loads(result.read())
        return content

    # Get sendmessage url
    def postData(self,data,url_prefix='/'):
        url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
        request = urllib2.Request(url,data)
        try:
            result = urllib2.urlopen(request)
        except urllib2.HTTPError as e:
            if hasattr(e,'reason'):
                print 'reason',e.reason
            elif hasattr(e,'code'):
                print 'code',e.code
                return 0
        else:
            content = json.loads(result.read())
            result.close()
        return content

    # send message
    def sendMessage(self,touser,message):
        self.authID()
        data = json.dumps({
            'totag':touser,
            'msgtype':"text",
            'agentid':"2",    ##这里修改告警应用id
            'text':{
                    'content':message
            },
            'safe':"0"
        },ensure_ascii=False)
        response = self.postData(data)
        print response

if __name__ == '__main__':
    a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
    a.sendMessage(sys.argv[1],sys.argv[3])

  

测试发送:python zabbix_weixin.py "1" "test" "test"

测试没有问题,开始配置zabbix

选择创建用户

添加报警媒介

权限可以看情况分配,我这自己用可以给大一点

选择报警媒介类型

创建媒体类型   别忘点“更新”

选择配置-动作

创建动作

默认接收人:

告警
{TRIGGER.NAME}
时间: {EVENT.DATE} {EVENT.TIME}
内容:
1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}

  

 

Recovery operations

默认接收人:

恢复
{TRIGGER.NAME}
时间: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
内容:
1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}

  

 

将zabbix_server的agent关闭看是否报警,然后再启动看是否有恢复通知

 钉钉告警一样

猜你喜欢

转载自www.cnblogs.com/qinyujie/p/11127784.html