zabbix系列(三)zabbix3.0.4微信告警配置详解

一、准备工作
申请微信公众号,并且是可以有发送消息的接口。添加有个脚本去调用微信的api。
之后可以参考下zabbix 的搭建,然后了解下脚本报警,之后再考虑报警方式的多样化。

个人微信一个
个人邮箱一个
手机短信能收到
个人微信绑定了银行卡

二、申请公众号:

1.申请页面:https://mp.weixin.qq.com/cgi-bin/readtemplate?t=register/step1_tmpl&lang=zh_CN


2.申请时申请企业好-选择团队。


3.在组织架构中,新建二级组,并添加相关人员,注意添加人员的账号要记清楚。后期zabbix发送邮件时需要填写用户名(也可以填写@all发送给所有的人)


4.这里有个组的ID:2,这个很重要(记得用360或者IE浏览器,谷歌浏览器不兼容,看不到ID)


5.新建应用,应用类型选择消息型


6.选择部门


7.下面是我新建的应用权限。



8.现在去设置-->功能设置-->权限管理,最重要的是CorpID,Secret 两个密钥,后期脚本里会利用它俩生成一个token ,然后利用token 去发送消息,具体参见微信接口文档:http://qydev.weixin.qq.com/debug


9.下面是微信的脚本
将weixin.py放到/usr/lib/zabbix/alertscripts目录下
cd /usr/lib/zabbix/alertscripts/weixin.py
cat weixin.py

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

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 = 'wxd48c194d03788447'
                self.__secret = 'uFwN-C6lgkA131mlQn96TF28dq5DzH2QpKvT1gEZvogTZQCmEP8VSWAyTXI3iYlT'


        # 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({
                        'touser':touser,
                        'toparty':"2",
                        'msgtype':"text",
                        'agentid':"1",
                        '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])


注意:需要修改4处:


    1.14行、15行


    2.65行、67行  

  说明下,67行是你的组部门id号,agentid是你应用id号。。。。 记得修改脚本权限,属主,放到和/usr/local/zabbix/scripts/目录下。

记得增加脚本执行权限,并修改所属组

chmod +x /usr/lib/zabbix/alertscripts/weixin.py
chown zabbix.zabbix /usr/lib/zabbix/alertscripts/weixin.py

测试,如果正常微信会收到test的提醒消息

./weixin.py hanyifeng test test
{u'errcode': 0, u'errmsg': u'ok'}




四、配置微信报警
脚本编辑好后,在zabbix 登陆界面进行设置。

注意:zabbix 3.0 需要在为alert脚本定义参数,以前的版本参数都固定的,现在用户可以自己定义命令行的参数了。添加的参数也就是脚本中的$1、$2、$3等。

添加方法:Administration-->Media types,增加如下参数,添加媒介:

 


添加完成后,需要关联到报警用户Administration-->Users-->Media-->add




添加动作,触发条件后报警后发送微信消息。Configuration-->Actions-Event source(Triggers)-Create action-





也可以对消息适当精简,如下


下面把192.168.3.87这台主机的zabbix-agent服务关掉:servier zabbix-agent stop。看下你的微信吧



posted @ 2016-08-06 22:19  reblue520  阅读(784)  评论(0编辑  收藏  举报