利用云服务器接收微信消息,使用脚本实现云之家(类似微信)接收zabbix报警消息...

之前共享了云之家报警脚本,使用此脚本,可以实现下面这种实时的报警消息。当然我们也可以使用微信来报警,不过云之家是完全免费没有任何限制可以发送∞条消息,微信需要花钱认证才能实现相同的功能,所以选择云之家。

f3c9068692001ecb8138e8a0aec45469.png

原理参见下图,下面介绍如何使用。

0aa813bed1f087efe46b1e0b79e0ff14.png

本文假设您熟悉MySQL,会安装Nginx及配置它的虚拟主机,知道crontab以及如何定时执行python脚本。

为Python安装MySQL支持

请先安装MySQL-python模块。yum install MySQL-python

创建数据库

下载table.sql.zip文件,解压后是sql脚本文件,创建数据库和数据表,并新建用户赋予相关权限(如果您不知道具体哪些权限您可以赋予所有权限)。

api接口安装

使用包管理器安装nginx,或编译安装nginx。

下载yunzhijia.zip解压,将web目录添加为nginx的一个虚拟主机,由于php脚本没有对访问权限进行控制,请自行使用nginx的allow,deny模块对访问进行控制。

zabbix发信脚本安装

将解压后的zabbix_script目录中的getData.py脚本放到zabbix的脚本目录中。

使用yum安装的默认目录为『/usr/lib/zabbix/alertscripts』,这个目录可以在配置文件『/etc/zabbix/zabbix_server.conf』中更改,大概在文件的第435行左右。

zabbix设置

参照下图添加一个报警方式。

b30fd8f53690295267231a0caad07ec6.png

指定一个需要的用户用此报警方式发信。

c006551bcb5223cbdaa50c1664bb60b7.png

添加一个动作,指定使用上面设置的报警方式。

确保传递给脚本的文本为正确的json格式:

其中各参数的含义请参考数据库中的注释。{

"from":"207",

"to":"199",

"msg_type":"2",

"host":"{TRIGGER.NAME}",

"level":"{TRIGGER.SEVERITY}",

"msg":"运行在{HOST.CONN}上的{TRIGGER.NAME}进程ok心跳超时,当前值为 {ITEM.VALUE1}。\r\n{ITEM.KEY1}:{ITEM.VALUE1}"

}

d308809ce961bcd46171149640144032.png

更改触发器严重性,必须要与下图一样:

a7ca6507c5d390d7679e87f1953525d1.png

创建计划任务定时查数据库发信

创建crontab任务,将解压后的init.py创建为每分钟一次的任务。config.json需与init.py处于同一目录。

申请云之家帐号

自己问度娘。

下载云之家APP

自己搜索AppStore。

config.json解释

url:上述nginx配置的访问地址。

db:数据库信息

from:你设定的报警来源,zabbix可以只是其中一项(目前我们就是这样用的,不止zabbix一个需要发消息)。

msgType:信息类型。

level:信息严重性

to:发往哪个公众号,可以设置多个,name为自定义,no,pub,pubkey需要参考云之家中的设置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于 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. 测试告警是否正常发送。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值