设为首页 收藏本站
查看: 1079|回复: 0

[经验分享] Zabbix基于微信发警报

[复制链接]

尚未签到

发表于 2019-1-20 12:39:54 | 显示全部楼层 |阅读模式
在zabbix监控中,国内越来越流行使用微信、钉钉、邮件报警,这正式结合了当下的发展趋势。接下来介绍下zabbix如何结合微信发送警报信息。

一、企业微信注册
  企业微信注册地址:https://work.weixin.qq.com/










注意:我们需要记录以下几个值:


Agentld
Secret
CorpID
部门ID
二、下载脚本
  [root@node1~]#wget https://www.guoxiangfu.com/wechat
  [root@node1~]#vim wechat

  1 #!/usr/bin/env python   #如果是python修改为python3 即可
2 # -*- coding: utf-8 -*-
3 ## File Name: wechat.sh
6 reload(sys)
7 sys.setdefaultencoding( "utf-8" )
8
9 class WeChat(object):
10         __token_id = ''
11         # init attribute
12         def __init__(self,url):
13                 self.__url = url.rstrip('/')
14                 self.__corpid = '你的Corpid'
15                 self.__secret = '你的SecretID'
16                 
17         # Get TokenID
18         def authID(self):
19                 params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
20                 data = urllib.urlencode(params)
21                 
22                 content = self.getToken(data)
23                 
24                 try:
25                         self.__token_id = content['access_token']
26                         # print content['access_token']
27                 except KeyError:
28                         raise KeyError
29                        
30         # Establish a connection
31         def getToken(self,data,url_prefix='/'):
32                 url = self.__url + url_prefix + 'gettoken?'
33                 try:
34                         response = urllib2.Request(url + data)
35                 except KeyError:
36                         raise KeyError
37                 result = urllib2.urlopen(response)
38                 content = json.loads(result.read())
39                 return content
40
41         # Get sendmessage url
42         def postData(self,data,url_prefix='/'):
44                 request = urllib2.Request(url,data)
45                 try:
46                         result = urllib2.urlopen(request)
47                 except urllib2.HTTPError as e:
48                         if hasattr(e,'reason'):
49                                 print 'reason',e.reason
50                         elif hasattr(e,'code'):
51                                 print 'code',e.code
52                         return 0
53                 else:
54                         content = json.loads(result.read())
55                         result.close()
56                 return content
57
58         # send message
59         def sendMessage(self,touser,message):
60
61                 self.authID()
62
63                 data = json.dumps({
64                         'touser':touser,
65                         'toparty':"2",  #这个相当于刚刚记录的部门ID
66                         'msgtype':"text",
67                         'agentid':"2",  #修改为刚刚记录的agentid
68                         'text':{
69                                 'content':message
70                         },
71                         'safe':"0"
72                 },ensure_ascii=False)
73
74                 response = self.postData(data)
75                 print response
76
77
78 if __name__ == '__main__':
79         a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
80         a.sendMessage(sys.argv[1],sys.argv[3])
修改权限,所有者、所属组
  [root@node1~]#chmod +x wechat
[root@node1~]#chown zabbix.zabbix wechat
  ##验证是否可以发送成功
[root@node1~]#./wechat zabbix test test

{u'invaliduser': u'zabbix', u'errcode': 0, u'errmsg': u'ok'}

  到此我们就配置好了。

Zabbix配置

查看存放的脚本
  [root@node1~]#grep "AlertScriptsPath" /etc/zabbix/zabbix_server.conf

### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
  [root@node1~]#mv wechat /usr/lib/zabbix/alertscripts/
  在地址栏输入:http://192.168.4.61/zabbix/zabbix.php?action=mediatype.edit





发送警报信息内容:

故障恢复信息:

服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
{
"告警主机":"{HOST.NAME}",
"告警地址":"{HOST.IP}",
"告警时间":"{EVENT.DATE} {EVENT.TIME}",
"恢复时间":"{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}",
"告警等级":"{TRIGGER.SEVERITY}",
"告警信息":"{TRIGGER.NAME}",
"监控项目":"{ITEM.NAME}",
"当前状态":"{TRIGGER.STATUS}",
"持续时间":"{EVENT.AGE}",
"事件ID":"{EVENT.ID}",
"监控ID":"{ITEM.ID}",
"监控取值":"{ITEM.LASTVALUE}"
}
发生故障发送的信息

服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
{
"告警主机":"{HOST.NAME}",
"告警地址":"{HOST.IP}",
"告警时间":"{EVENT.DATE} {EVENT.TIME}",
"告警等级":"{TRIGGER.SEVERITY}",
"告警信息":"{TRIGGER.NAME}",
"监控项目":"{ITEM.NAME}",
"当前状态":"{TRIGGER.STATUS}",
"持续时间":"{EVENT.AGE}",
"事件ID":"{EVENT.ID}",
"监控ID":"{ITEM.ID}",
"监控取值":"{ITEM.LASTVALUE}"
}
测试


小结
  (1)使用微信告警,必须有CorpID、AgentId和Secret。这是建立与微信通信的措施。
  (2)创建过程中,建议每一步都要测试是否成功,再进行下一步。
  (3)可以指定多个用户接受信息。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665593-1-1.html 上篇帖子: zabbix agent安装脚本 下篇帖子: zabbix 监控硬件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表