zabbix6.0设置企业微信报警 (python脚本实现)

 1.编写python脚本

  在/usr/lib/zabbix/alertscripts/ 目录下

#!/usr/bin/env python
#_*_coding:utf-8_*_

#导入python模块
import requests
import sys
import os
import json
import logging


#自定义logging模块的格式,具体日志会存放在"/var/log/weixin.log"中,你也可以自定义到其它目录中,该文件默认以追加方式写入,你可以写一个周期性任务进行滚动操作
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/var/log','weixin.log'),
filemode = 'a')

#指定企业ID

corpid=''

#指定应用管理的Secret
appsecret=""

#指定应用管理的AgentId
agentid=""

#指定Token_url
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret

#获取tocken
req=requests.get(token_url)

#获取tocken中access_token字段对应的值
accesstoken=req.json()['access_token']

#定义消息发送的URL
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

#定义要发送的人,也就是zabbix webUI配置的"{ALERT.SENDTO}"参数对应的值
touser=sys.argv[1]

#定义要发送的主题,也就是zabbix webUI配置的"{ALERT.SUBJECT}"参数对应的值
subject=sys.argv[2]

#定义要发送的消息内容,也就是zabbix webUI配置的"{ALERT.MESSAGE}"参数对应的值
message=sys.argv[2] + "\n\n" +sys.argv[3]

#指定参数
params={
"touser": touser,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}

#基于requests模块的post方法发送企业微信报警消息
req=requests.post(msgsend_url, data=json.dumps(params))

#发送消息后记得打印日志信息,在本地的配置文件中可以查看
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)

2.测试脚本

python weixin.py 测试1 测试2 测试3

 log日志会在/var/log/weixin.py这里 

2.1添加权限

chmod +x /usr/lib/zabbix/alertscripts/weixin.py

3.zabbix配置报警媒介类型

3.1 脚本参数

收件人:
{ALERT.SENDTO}
主题:
{ALERT.SUBJECT}
消息:
{ALERT.MESSAGE}

 3.2 配置动作类型返回消息内容

 3.3 模板

模板
=================================================

问题 :
      主题: 报警问题: {EVENT.NAME}
      消息:
        开始时间 :{EVENT.DATE}-{EVENT.TIME}
        名称: {EVENT.NAME}
        主机: {HOST.NAME}
        严重性: {EVENT.SEVERITY}
        数据: {EVENT.OPDATA}
        问题id: {EVENT.ID} 
        {TRIGGER.URL}
=================================================

Problem recovery (恢复问题)

       主题: 恢复所用时间 {EVENT.DURATION}: {EVENT.NAME}         
       消息: 
         恢复时间 : {EVENT.RECOVERY.DATE}-{EVENT.RECOVERY.TIME} 
         名称: {EVENT.NAME}
         持续时间: {EVENT.DURATION}
         主机: {HOST.NAME}
         严重性: {EVENT.SEVERITY}
         问题 ID: {EVENT.ID}
         {TRIGGER.URL}

 4. 创建用户和用户组

1 创建用户组 

2 创建用户

3 为用户添加报警媒介

5. 创建动作

5.1 添加动作

5.2 添加操作 

 有三个操作一个问题发现和恢复,更新 ,配置都一样可以更具实际需求更改

5.3 操作细节

只发给个人就添加用户(我们刚刚创建的)

仅发送就是我们之前新建的报警媒介类型

6.测试完成

 

 可以通过修改主机的宏来模拟测试报警 ok

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是一个基于 Python 实现Zabbix 微信报警脚本,需要先安装 WeixinBot 和 requests 库: ```python #!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json import sys class WeChat(object): def __init__(self, corpid, corpsecret): self.url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken' self.corpid = corpid self.corpsecret = corpsecret self.params = { 'corpid': self.corpid, 'corpsecret': self.corpsecret } self.access_token = self.get_access_token() def get_access_token(self): r = requests.get(self.url, params=self.params) return r.json()['access_token'] def send_message(self, message, agentid, touser=None, toparty=None): url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send' data = { "touser": touser, "toparty": toparty, "msgtype": "text", "agentid": agentid, "text": { "content": message }, "safe": 0 } params = { 'access_token': self.access_token } headers = {'Content-Type': 'application/json;charset=utf-8'} r = requests.post(url, params=params, data=json.dumps(data), headers=headers) return r.json() if __name__ == "__main__": corpid = 'YOUR_CORPID' corpsecret = 'YOUR_CORPSECRET' agentid = 'YOUR_AGENTID' touser = sys.argv[1] subject = sys.argv[2] content = sys.argv[3] message = u"收件人:%s\n主题:%s\n内容:%s" % (touser, subject, content) wechat = WeChat(corpid, corpsecret) response = wechat.send_message(message, agentid, touser=touser) print(response) ``` 使用方法: 1. 用企业微信扫描二维码,加入企业; 2. 创建一个应用,并记录下应用的 `corpid`、`corpsecret`和 `agentid`; 3. 安装 WeixinBot 和 requests 库; 4. 将上述代码保存到文件 `wechat.py` 中; 5. 在 Zabbix配置告警媒介,将 `wechat.py` 的路径作为脚本名,并在参数中依次填入收件人、主题和内容。例如:`/usr/bin/python /path/to/wechat.py {ALERT.SENDTO} "{ALERT.SUBJECT}" "{ALERT.MESSAGE}"`; 6. 测试告警是否正常发送。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值