微信:

  • 首先下载企业微信
  • 创建一个企业

在网页登录:
https://work.weixin.qq.com/

在里面找到
AgentId:
Secret :
企业ID
部门id

创建一个机器人

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在zabbix配置上面配置发送微信的python脚本:

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 = 'wwa1da242f211cdf47'
                self.__secret = 'rIrN51FEjgW6T2bdmSaEoOIB5UbaBTgddQkuC8cca1w'


        # 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':"1000002",
                        '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个地方需要修改,找到他们修改成之前获取的信息
    self.__corpid = 'wwa1da242f211cdf47'     //公司的corpid
    self.__secret = 'rIrN51FEjgW6T2bdmSaEoOIB5UbaBTgddQkuC8cca1w'   //应用的secret
    'toparty':2,                   //部门id
    'agentid':"1000002",   //应用id

给脚本权限

chmod 777 /usr/lib/zabbix/alertscripts/wechat.py

运行脚本测试

./wechat.py LiWeiQiang  test test

zabbix配置微信报警

管理->报警媒介类型->创建媒体类型
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
添加完成后,需要关联到报警用户 管理–>用户–>Admin–>报警媒介–>添加–>更新
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加动作,触发条件后报警后发送微信消息。
配置–>动作–>创建动作
维护状态–>非在维护–>添加
触发器条件–>触发器–>添加
点击动作下的操作

在这里插入图片描述
在这里插入图片描述

Custom message:


Trigger: {TRIGGER.NAME}
Trigger status {TRIGGER.STATUS}
1. {ITEM.NAME1}({HOST.NAME1}:{ITEM.KEY1}):{ITEM.VALUE1}

在这里插入图片描述

可以通过将触发器的值,调整为正常值/非正常值测试微信报警了。

在被监控端关闭http服务
在这里插入图片描述
在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐