Zabbix

zabbix报警-企业微信篇

2020-02-18  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读