美文网首页自动化监控ZabbixPython运维驿站
zabbix微信 | 使用微信告警(1)

zabbix微信 | 使用微信告警(1)

作者: _简_述_ | 来源:发表于2016-10-16 15:45 被阅读1329次

    企业号微信报警--(公众号有48小时限制)无限制报警


    笔者在维护公司监控系统的期间遇到一桩事情,之后不得不添加微信报警。

    • 事情是这样的,最初使用公司短信api报警+邮件报警,某天半夜提供dns的服务的服务器挂掉了,第二天接到业务问题反馈就开始排查,因为没有收到短信报警也就没有觉得是服务器挂掉了。经过半个小时的折腾后偶然看了下邮件才知道原因,通知机房重启服务器解决。
    • 可见邮件告警的实时性有多差。再者短信告警的反应也没有好到哪里去,经常服务都恢复了,告警短信和恢复短信一块来。所以找其他报警方式成为下一步要做的事情

    微信的第三方接口为我们提供了便利的方式。我们先申请一个 企业号官网


    配置企业号

    1.通讯录添加企业成员
    企业号的安全性就是于只有事先添加了的账号才能完成扫描关注操作。
    这里笔者添加了账号(自定义)、手机号(绑定了微信的)

    添加用户接收信息

    2.创建应用
    打开应用中心创建应用,记住应用ID以发送消息给部门成员

    成功创建应用

    3.给部门设置管理员
    设置--->功能设置---->权限管理---->新建管理组
    管理员必须事先已经关注了企业号,并且已经设置好邮箱地址

    设置管理员

    部署脚本

    • 笔者之前使用shell脚本会造成‘%’无法解析,故改为python脚本。想使用shell可以留言索要

    脚本需要改的参数有三个
    ①CropID='******'
    ②Secret='******'
    ③agentid"agentid":"9"
    ①②以上可以在微信企业号中“设置--功能--权限管理--管理员”可以找到
    ③自己创建的应用id

    vim zabbix程序目录/share/zabbix/alertscripts/weixin.py

    #!/usr/bin/python
    # coding: utf-8
    #jipeng 2016.8.11
    #python2将zabbix报警信息发送到微信。
    import urllib,urllib2
    import json
    import sys
    def gettoken():
        #微信企业号中“设置--功能--权限管理--管理员”可以找到
        CropID='******'
        Secret='******'
        GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+CropID+"&corpsecret="+Secret
        token_file = urllib2.urlopen(GURL)
        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,content):
        PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+access_token
        send_values = {
            "touser":user,      #企业号中的用户帐号,在zabbix用户Media中配置。
            "msgtype":"text",   #消息类型。
            "agentid":"9",      #企业号中的应用id(根据自己的应用更改)
            "text":{
                "content":content
               },
            "safe":"0"
            }
        send_data = json.dumps(send_values, ensure_ascii=False)
        send_request = urllib2.Request(PURL, send_data)
        response = json.loads(urllib2.urlopen(send_request).read())
        print str(response)
    
    if __name__ == '__main__':
        user = str(sys.argv[1])   #zabbix传过来的第一个参数(用户)
        content = str(sys.argv[3])  #zabbix传过来的第三个参数(内容)
        accesstoken = gettoken()
        senddata(accesstoken,user,content)
    

    配置zabbix3.0.4版本

    1.创建Media types
    Administration--Media types

    **创建Media types**

    2.用户添加微信报警
    Administration--User--用户--Media

    添加微信报警
    3.Actions添加微信报警
    Actions添加微信报警 手机接收微信报警

    下接微信对接自己服务器

    相关文章

      网友评论

      • 米开朗基乐:请教一下,微信公众号升级之后发送不了报警信息,怎么排查问题
        _简_述_:@Roles_乐 企业号升级后,并没有什么影响。
        米开朗基乐:@Michaelhbjian 没有解决
        Michaelhbjian:我也出现类似的情况,请问你的解决了吗

      本文标题:zabbix微信 | 使用微信告警(1)

      本文链接:https://www.haomeiwen.com/subject/qgwoyttx.html