• zabbix 报警方式之 微信公众号报警(5)


    一、条件

      首先你得有一个微信公众号,并且是可以有发送消息的接口。然后你得有个脚本去调用微信的api。

      这里感谢一下微信。使我们运维人员的报警方式多了一种。。。 (同事们不要怪我哈。)

      之后可以参考下zabbix 的搭建,然后了解下脚本报警,之后再考虑报警方式的多样化。

    二、申请公众号:

      1.申请页面:

      

      2.申请时记得选择团队。

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

      4.这里有个组的ID:2,这个很重要哈。

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

      6.选择部门

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

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

      9.下面是开始微信的脚本上场了,额,具体的来源我忘记是哪个网站弄来的了。等找到后再放上链接。
    三、微信脚本:

    #!/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 = '你的Corpid'
                    self.__secret = '你的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({
                            'touser':touser,
                            'toparty':"2",
                            'msgtype':"text",
                            'agentid':"2",
                            '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号。。。。 记得修改脚本权限,属主,放到和mail.sh同级目录下。

      我们来测试下哇

    [root@zabbix-6 alertscripts]# ./weixin.py hanyifeng test test
    {u'errcode': 0, u'errmsg': u'ok'}

    四、测试微信报警

      1.添加媒介这步骤就不说了,和之前添加脚本方式一样。不会的可以参考前面的文章哈。


      2.下面把10.8.0.13这台主机的zabbix-agent服务关掉。看下你的微信吧

    本文章属于本作者原创,遵循开源协议,如有转载,请注明本链接的源地址。谢谢    继续更新中!!

    如果遇到问题或者故障了,可以留言哈,一起学习进步。

  • 相关阅读:
    GIS有关GP服务的发布和调用
    博文列表
    VCL编写笔记整理
    Delphi操作Excel(Use Oel)
    使用 ImageEnView 给图片加水印,及建缩略图
    Delphi下MSMQ(Mircosoft Message Queue)实例(私有队列)
    从给定字符串中截取n个字节的字符(解决汉字截取乱码问题)
    tbytes 转 十六进制 string
    Delphi中拖动的方式来移动TPageControl的Tab
    delphi TEdit透明
  • 原文地址:https://www.cnblogs.com/hanyifeng/p/5368102.html
Copyright © 2020-2023  润新知