zoukankan      html  css  js  c++  java
  • 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。看下你的微信吧



  • 相关阅读:
    xwalkview 替换掉webview 注意事项
    rsyslog Properties 属性:
    Basic Structure 基本结构:
    Crosswalk 集成到 Android Studio
    awk if 判断
    Important System Configuration 导入系统配置:
    Heap size check 堆大小检查
    Bootstrap Checks 抽样检查:
    Important Elasticsearch configuration 导入Elasticsearch 配置
    while 退出循环
  • 原文地址:https://www.cnblogs.com/reblue520/p/6239752.html
Copyright © 2011-2022 走看看