zabbix 企业微信报警【监控端】

1、下载手机企业微信
2、创建一个企业
在这里插入图片描述
3、电脑登录
在这里插入图片描述
在这里插入图片描述
下拉
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建成功后把 这记录下来 后面会用
AgentId 1000002
Secret RroB-PrX4crYoE-C0ubxdXAKKrRyaxVqzJfonGWHdEo
在这里插入图片描述
部门id 也记下来
在这里插入图片描述
企业id也记下来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
测试成功

服务端操作
python报警监控脚本

需要修改脚本中的四个信息:
self.__corpid = 'wwd5348195e1cd' //公司的corpid
self.__secret = '2QvlfpUxh4k-JeIVNmkh2N7ijfkCs1lzb4Tkgr6xQ' //应用的secret
'toparty':1, //部门id
'agentid':"1000002", //应用id
[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 = 'wwd5348195e1cdd809'
                self.__secret = '2QvlfpUxh4k-JeIuxVNmkh2N7ijfkCs1lzb4Tkgr6xQ'


        # 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':1,
                        '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])
                                                                                                                                                                             
监控脚本测试:
注:Youn为企业微信名 test为标题 yufei为内容,标题和内容均可自定义
[root@youngfit ~]# /usr/lib/zabbix/alertscripts/wechat.py Youn test yufei
{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}
看下自己的企业微信是否收到信息
一般youn设置其他也能收到
zabbix 创建告警媒介

注:(以哪种方式发送报警信息,短信,脚本等等)
在这里插入图片描述
在这里插入图片描述

名称:sendmail                    //名称任意
类型:脚本
脚本名称:sendmail.sh              自己写的脚本
脚本参数:                          //一定要写,否则可能发送不成功
    {ALERT.SENDTO}              //照填,收件人变量
    {ALERT.SUBJECT}             //照填,邮件主题变量,变量值来源于‘动作’中的‘默认接收人’
    {ALERT.MESSAGE}           //照填,邮件正文变量,变量值来源于‘动作’中的‘默认信息’

zabbix 添加告警用户

创建用户组:web-group,包含yangge、alice...等用户
创建用户:yangge、alice...等用户,并关联到微信告警
希望的结果是:发微信到组web-group,组中的用户yangge、alice都能收到

在这里插入图片描述
在这里插入图片描述
设置用户组对主机群组拥有读写(发送消息)权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果希望中文显示:
告警主机: {HOST.NAME}
告警地址: {HOST.IP}
监控项目: {ITEM.NAME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}


收到的信息
主机: 192.168.119.130
时间: 2020.03.25 19:49:22
级别: High
触发: HTTP service is down on 192.168.119.130
详情: nginx status:net.tcp.listen[80]:Up (1)
状态: nginx已启动
项目:net.tcp.listen[80] 
事件ID:2548


主机: {HOST.NAME1}
时间: {EVENT.DATE} {EVENT.TIME}
级别: {TRIGGER.SEVERITY}
触发: {TRIGGER.NAME}
详情: {ITEM.NAME1}:{ITEM.KEY1}:{ITEM.VALUE1}
状态: {TRIGGER.STATUS}
项目:{TRIGGER.KEY1} 
事件ID:{EVENT.ID}

在这里插入图片描述

测试微信报警

被监控端操作

###### 测试微信报警

被监控端操作  这个机器要在你放入用户组权限的那个组机组里面才可以
[root@zabbix-agent-none1 ~]# systemctl stop nginx
查看自己的企业微信
发布了48 篇原创文章 · 获赞 18 · 访问量 3633

猜你喜欢

转载自blog.csdn.net/wx912820/article/details/105103279