1、注册企业微信
https://work.weixin.qq.com/

 

2、创建应用

 

3、进入应用

可见范围要是接收告警人员的所在组,不能是用户,只有组中的用户可以接收告警。

 

4、登陆

http://qydev.weixin.qq.com/debug

5、Corpid获取位置

6、Corpsecret获取位置

 

7、编写告警脚本

vim /usr/lib/zabbix/alertscripts/wx.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
  
import urllib,urllib2,json
import sys
import logging
reload(sys)
sys.setdefaultencoding( "utf-8" )
  
class WeChat(object):
        __token_id = ''
        # init attribute
        def __init__(self,url):
                self.__url = url.rstrip('/')
                self.__corpid = 'ww328639968eec3d1d'
                self.__secret = 'X8oUsALBdPBH5ZSJez-A-q5pJeIv6Pkms-5yua8XFl4'
  
        # 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
                       # logger.exception(sys.exc_info())
                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)
                logging.info("======dump data end")
                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])

此脚本需要更改的地方:

  • self.__corpid = 'ww328639968eec3d1d'
  • self.__secret = 'X8oUsALBdPBH5ZSJez-A-q5pJeIv6Pkms-5yua8XF
  • 'toparty':"2",            //部门ID
  • 'agentid':"1000002",      //应用ID

部门ID查看:

8、测试:

./weixin 1000002 aa  aa

发送成功可以进行zabbix配置

 

9、Zabbix告警配置

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

{TRIGGER.STATUS}: {TRIGGER.NAME}

 

平台名称:  {TRIGGER.HOSTGROUP.NAME}

告警主机:  {HOST.NAME}--{HOST.IP}

告警时间:  {DATE}  {TIME}

告警名称:  {TRIGGER.NAME}

告警状态:  {TRIGGER.STATUS}

告警类别:  {TRIGGER.SEVERITY}

告警详情:  {ITEM.NAME1} :    {ITEM.VALUE1}

事件ID:     {EVENT.ID}

收到告警-请及时处理谢谢

{TRIGGER.STATUS}: {TRIGGER.NAME}

 

平台名称:  {TRIGGER.HOSTGROUP.NAME}

告警主机:  {HOST.NAME}--{HOST.IP}

告警时间:  {DATE}  {TIME}

告警名称:  {TRIGGER.NAME}

告警状态:  {TRIGGER.STATUS}

告警级别:  {TRIGGER.SEVERITY}

告警详情:  {ITEM.NAME1} :    {ITEM.VALUE1}

事件ID:     {EVENT.ID}

问题已恢复-祝您工作愉快

 

完成

测试告警

Logo

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

更多推荐