【zabbix5.0部署笔记】4 - 邮件报警

设置报警媒介

使用电子邮件

image.png

image.png

设置报警发送消息模板

 

image.png

 

用户配置 添加收件人

启用报警的动作

image.png

 

微信报警推送

参考博客:https://blog.csdn.net/yetugeng/article/details/99976782

 

实现zabbix通过微信报警的方式也是通过脚本来实现,与邮件报警不同的是,脚本调用的微信的相关接口的获取相对复杂一点

1、申请一个微信公众号(企业号)

申请方法不多说,如果已申请请忽略

2、在微信企业号上新建应用

image

上传应用logo,填写应用名称,应用介绍等

应用创建完之后查看并启用应用,同时会生成应用的AgentId以及Secret,这个在后面步骤会有用

3、接口调用测试

点击:API文档——>开发者工具——>接口调试工具,找不到就直接点这个地址

http://work.weixin.qq.com/api/devtools/devtool.php

image

corpid为创建的企业号生成的corpid

image

Corpsecret就是在第2步中创建的应用所生成的Secret,填入后点击检查问题,生成请求地址和返回结果,确认无误后进行下一步

image

4、关于脚本

脚本的存放目录为/usr/lib/zabbix/alertscripts,脚本内容不做过多说明,需要了解含义请自行百度,脚本内容如下

1. [root@zabbix alertscripts]# cat weixin.py
2. #!/usr/bin/env python
3. #-*- coding: utf-8 -*-
4. import requests
5. import sys
6. import os
7. import json
8. import logging
9. 
10. 
11. logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
12. datefmt = '%a, %d %b %Y %H:%M:%S',
13. filename = os.path.join('/tmp','weixin.log'),
14. filemode = 'a')
15. 
16. corpid='微信企业号corpid'
17. appsecret='应用的Secret'
18. agentid=应用的id
19. #获取accesstoken
20. token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
21. req=requests.get(token_url)
22. accesstoken=req.json()['access_token']
23. 
24. #发送消息
25. msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
26. 
27. touser=sys.argv[1]
28. subject=sys.argv[2]
29. #toparty='3|4|5|6'
30. message=sys.argv[2] + "\n\n" +sys.argv[3]
31. 
32. params={
33. "touser": touser,
34. # "toparty": toparty,
35. "msgtype": "text",
36. "agentid": agentid,
37. "text": {
38. "content": message
39. },
40. "safe":0
41. }
42. 
43. req=requests.post(msgsend_url, data=json.dumps(params))
44. logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)

脚本中需要填写微信企业号corpid,应用的Secret以及应用的id,脚本中还定义了日志文件为/tmp/weixin.log

脚本编写完成之后需要为脚本添加执行权限

[root@zabbix alertscripts]# chmod +x weixin.py

脚本后面内容中的一些参数touser,toparty,msgtype,agentid,content,safe是微信企业号中定义的参数名称,说明文档见腾讯企业号开发者文档https://work.weixin.qq.com/api/doc

image

目前微信企业号中的部门成员账号也就是我们使用的touser参数是部门成员的账号,这个账号在早起阶段是成员的微信号码,但是目前我们需要使用的账号微信官方自动生成为成员名字的拼音缩写,可以在微信企业号后台通讯录——>部门——>成员详情找到

image

另外需要说明的是,微信企业号应用的访问频率是有限制的,这一点同样也可以在开发者文档中找到

image

5、web界面新增报警媒介类型

image

名称自定义即可,类型选择脚本,脚本名称为所写的脚本的名称weixin.py,脚本的三个参数都是zabbix内置变量,分别为:报警收件人:{ALERT.SENDTO},报警标题:{ALERT.SUBJECT},报警内容:{ALERT.MESSAGE},添加完报警媒介类型后勾选启用

6、配置用户报警媒介信息

配置需要收到微信报警的用户的信息,添加报警媒介,选择上面创建的微信报警,收件人填写上面所说的部门成员的账号,由于是通过微信公众号发送的微信提醒,如果需要为多个用户例如微信企业号中所有用户发送报警,这里收件人的信息就填写为@all

image

7、测试

命令行测试脚本能否成功执行

[root@zabbix alertscripts]# ./weixin.py har452330261 "测试" 'test'

测试参数为三个,分别为部门成员账号,报警标题,报警内容

测试的时候如果出现错误提示缺少requests,解决方法为使用pip进行安装:pip install smtplib

测试后会在微信企业号中收到我们创建的应用所发出的消息

image

同时在zabbix服务器的后台也生成了微信报警的日志文件/tmp/weixin.log,如果测试不成功可以通过日志来进行查错

命令行测试完成后,如果想要通过zabbix进行触发报警,还需要做的就是将上面生成的日志文件的所属修改为zabbix用户且具有写权限

[root@zabbix alertscripts]# ll /tmp/weixin.log

-rwxr-xr-x 1 zabbix zabbix 35329 6月 13 07:47 /tmp/weixin.log

到这里微信报警就算大功告成了,接下来就可以愉快的通过zabbix进行触发微信报警了,报警成功触发后可以通过zabbix面板的报表——>动作日志查看

收到的报警提示如下

image

附加内容:

1、微信报警基于微信企业号,通常情况下我们收到微信企业号的消息需要下载微信企业号的客户端,如何不下载又能收到消息呢(也就是直接在自己的微信收到消息呢)?

解决办法为:进入微信企业号后台——>连接微信——>微工作台——>邀请关注,后台会给所拥有的微信企业号生成一个二维码,拿出手机,微信扫码关注,以后报警的消息就能直接在微信收到了

 

2、新添加的用户收到微信报警的步骤:

微信企业号通讯录相应部门中添加成员

微信企业号微工作台邀请成员关注

zabbix服务端web界面添加用户,设置用户的微信报警媒介(收件人所在部门的相应成员账号)

 

3、微信企业号具有很多功能以及开发者工具,有兴趣或者相关开发人员可以细细研究

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值