19
2022
11
11:36:35

Zabbix实现企业微信报警(已经失效,提示u'not allow to access from your ip, hint)

 /usr/lib/zabbix/alertscripts/weixin.py  test test hellohellohello

{u'errcode': 60020, u'errmsg': u'not allow to access from your ip, hint: [16688246602357314******], from ip: 219.*.*.*, more info at https://open.work.weixin.qq.com/devtool/query?e=60020'}

IP不合法,搞半天,发现是不支持自己开发了,要第三方应用,自己无法搞了。 操蛋的企业微信。


zabbix实现企业微信报警

1、下载安装手机版企业微信
2、注册账户,并创建一个企业,之后向企业中添加员工
3、找到我的企业—>记录企业ID:ww1d1845f4b25a12fb
在这里插入图片描述
4、在企业下创建部门,并记录部门ID:3
在这里插入图片描述


在这里插入图片描述

5、创建应用,并记录应用ID和secret,ID:1000003,secret:ItmpP6TjPNvx6aSlvRCYrkgK5BPWiqTrMf3xhKjUnLo
在这里插入图片描述


在这里插入图片描述

6、编写python脚本,将上面记录的信息填到对应地方(脚本在zabbix-server服务器中)

[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/wechat.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 = 'ww1d1845f4b25a12fb'

                self.__secret = 'ItmpP6TjPNvx6aSlvRCYrkgK5BPWiqTrMf3xhKjUnLo'

        # 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':3,

                        'msgtype':"text",

                        'agentid':"1000003",

                        '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])

————————————————


7、修改权限


[root@zabbix-server ~]# chmod 777 /usr/lib/zabbix/alertscripts/wechat.py

[root@zabbix-server ~]# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/wechat.py


8、在zabbix-server端进行脚本测试


[root@zabbix-server alertscripts]# /usr/lib/zabbix/alertscripts/wechat.py ZhangYu test hellohellohello

root@zabbix-server alertscripts]# /usr/lib/zabbix/alertscripts/wechat.py ZhangYu www helphelphelp

260520b2f76de1eb0ea8fd8adce011b0_3613933cdddc4b4fa28612b5feb256fd.png

注意:ZhangYu是在企业微信中的用户名。

ba717dbabf1bf7637a4733c20abdd6ca_61cd2d0b2c0b44648d22e2cda7689487.png

机上收到信息说明脚本正常使用。


18e7547cf23f53a198dca1ae24942920_32f135425fb8444ebf50a1d76723bbf5.png

8、在zabbix-server的web界面中创建报警媒介

76565160c58fa7bbf290ff50a55af571_7b2f399d5b2540d78275108d517e4428.png

6a5cff1dcca93896cc50d9e4c993b162_7ebdf80e3ec14dabb38025559f79a6ad.png

9、为用户添加告警媒介(可以新建用户,也可以直接使用管理员账户admin),让这个用户关联告警媒介,并添加收件人


注意:类型(创建的告警媒介)、收件人(企业微信中的那个用户)

c548398446a15fe19ebab4530c70fae1_e58f37abd2f14ed69d8439886d86e5d6.png

10、创建动作,实现企业微信告警(当有触发器被触发时,发送告警给特定用户)

c4b0c3c8a228847f135a42c474c7ceab_8000aa15561045628bf50d1909958d40.png

定义动作:使用触发器,触发器自己定义,我这里用的是之前为了监控nginx运行状态创建的触发器。

adbcf30f26993ecbe7e922671532476c_bf3aedbe72c3494a9aeab294a69bbe4f.png

定义操作:当动作被触发后,将会进行设置好的操作

f9f27ce28f1befc095e46759865bd24a_21ebb38a57d54db5b09efd711defd02e.png

998a000c8b81f571465b716640b21c36_3f2508996e6341a4acf6df06dc6bc747.png

发送消息的内容:

默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

默认信息:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}


11、验证

当触发器被触发时,企业微信收到了告警信息


image.png




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/3037.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: