美文网首页Zabbix
zabbix报警-企业微信篇

zabbix报警-企业微信篇

作者: 胖虎喜欢小红 | 来源:发表于2020-02-18 18:22 被阅读0次

    一、企业微信操作

    我们所需要的信息无法从PC端或者MD(移动端)中获取,所以我们需要进入企业微信的网页

    企业微信官网

    我们需要获取:
    ①:应用ID
    ②:应用秘钥
    ③:部门ID
    ④:企业ID

    image.png
    1、点击应用管理,然后创建应用
    image.png
    2、应用logo和名称必须要填写,选择发送消息所在部门或个人
    image.png

    3、获取到Agentld和Secret
    Agentld是应用ID
    Secret是应用秘钥

    4、然后我们还需要部门ID和企业ID

    image.png
    image.png

    二、zabbix操作

    1、创建一个报警媒介类型

    image.png

    2、创建用户

    image.png image.png
    生产情况权限看需求给,实验中给了超级管理员权限
    image.png

    3、指定主机或主机群主,指定监控项,设置触发器

    实验中监控的是http服务端口

    image.png image.png

    4、设置动作

    image.png image.png

    消息内容

    告警主机:{HOSTNAME1} 
    告警时间:{EVENT.DATE} {EVENT.TIME} 
    告警等级:{TRIGGER.SEVERITY} 
    告警信息:{TRIGGER.NAME} 
    告警项目:{TRIGGER.KEY1} 
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 
    事件ID :{EVENT.ID}
    

    步骤1-0

    执行命令的前提:在/etc/sudoers中给zabbix用户提权,并且不需要密码

    image.png

    步骤1-2

    image.png
    恢复操作 image.png
    5、在服务断添加脚本
    查看脚本默认目录:
    [root@192 ~]# cat /etc/zabbix/zabbix_server.conf | grep AlertScriptsPath | grep -v '#'
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    [root@192 ~]# cd /usr/lib/zabbix/alertscripts
    [root@192 alertscripts]# vim wechat.py
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import urllib,urllib2,json
    import sys
    reload(sys)
    sys.setdefaultencoding( "utf-8" )
    
    corpid_main = 'ww1120bbc1c541de70'   #企业ID
    secret_main = 'nXJEdMsvPDL7upI-MJZZ5C_8g5v5HLxrLKwZEVNZBlA'   #应用秘钥
    toparty_main = 1   #部门ID
    agentid_main = '1000002'   #应用ID
    class WeChat(object):
            __token_id = ''
            # init attribute
            def __init__(self,url):
                    self.__url = url.rstrip('/')
                    self.__corpid = corpid_main
                    self.__secret = secret_main
    
    
            # 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':toparty_main,
                            'msgtype':"text",
                            'agentid':agentid_main,
                            '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])
    
    [root@192 alertscripts]# chmod a+x wechat.py
    

    6、测试

    将agent服务器的http服务停止

    查看企业微信PC端或者移动端

    a4fc664219a4cd5b99ffcd5dde8c4d9.png

    相关文章

      网友评论

        本文标题:zabbix报警-企业微信篇

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