zabbix 微信告警机制
微信告警首先得注册一个企业微信,然后才能实现微信告警。自行百度
微信:


添加一个用户到上面创建的部门里面


创建完成记住 AgentID 和 Secret
下一步:记住企业 ID
1)编辑zabbix-server 配置文件进行配置(我这里是源码安装的,路径为/usr/local/zabbix;如果是yum安装的,路径为/etc/zabbix/)
# vim /usr/local/zabbix/etc/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/lib/zabbix/alertscripts //(如果不存在则自动创建)
# mkdir -p /usr/local/zabbix/lib/zabbix/alertscripts
2)安装组件 requests
# pip install requests
# pip install --upgrade requests
3)下载安装脚本
# git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git
# cp Zabbix-Alert-WeChat/wechat.py /usr/local/zabbix/lib/zabbix/alertscripts/ //copy到上面配置文件配置的目录下
# chmod +x /usr/local/zabbix/lib/zabbix/alertscripts/wechat.py
根据脚本里面的注释进行相应的修改,改成自己企业微信号中的信息。如下
#!/usr/bin/python2.
#_*_coding:utf- _*_
#auther:火星小刘 import requests,sys,json
import urllib3
urllib3.disable_warnings() reload(sys)
sys.setdefaultencoding('utf-8') def GetTokenFromServer(Corpid,Secret):
Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
Data = {
"corpid":Corpid,
"corpsecret":Secret
}
r = requests.get(url=Url,params=Data,verify=False)
print(r.json())
if r.json()['errcode'] != :
return False
else:
Token = r.json()['access_token']
file = open('/tmp/zabbix_wechat_config.json', 'w')
file.write(r.text)
file.close()
return Token def SendMessage(User,Agentid,Subject,Content):
try:
file = open('/tmp/zabbix_wechat_config.json', 'r')
Token = json.load(file)['access_token']
file.close()
except:
Token = GetTokenFromServer(Corpid, Secret) n =
Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
Data = {
"touser": "LiYanJie", # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
#"totag": Tagid, # 企业号中的标签id,群发使用(推荐)
"toparty": , # 企业号中的部门id,群发时使用。
"msgtype": "text", # 消息类型。
"agentid": , # 企业号中的应用id。
"text": {
"content": Subject + '\n' + Content
},
"safe": ""
}
r = requests.post(url=Url,data=json.dumps(Data, ensure_ascii=False),verify=False)
while r.json()['errcode'] != and n < :
n+=
Token = GetTokenFromServer(Corpid, Secret)
if Token:
Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
r = requests.post(url=Url,data=json.dumps(Data, ensure_ascii=False),verify=False)
print(r.json()) return r.json() if __name__ == '__main__':
User = sys.argv[] # zabbix传过来的第一个参数
Subject = str(sys.argv[]) # zabbix传过来的第二个参数
Content = str(sys.argv[]) # zabbix传过来的第三个参数 Corpid = "ww986f52f27xxxxxxx" # CorpID是企业号的标识
Secret = "Sinht6K7VBaJmjuZDaoOnCoyovcLHxxxxxxxxxxxxxx" # Secret是管理组凭证密钥
#Tagid = "" # 通讯录标签ID
Agentid = "" # 应用ID
Partyid = "" # 部门ID Status = SendMessage(User,Agentid,Subject,Content)
print Status
6)测试脚本是否可用
# python /usr/local/zabbix/lib/zabbix/alertscripts/wechat.py www web 123
{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}
补充说明:脚本里面默认是python2.7 而我们系统自带的是python2.6
进入:配置 -> 报警媒介类型 -> 创建媒体类型
脚本参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
给用户添加报警媒介,也可以新建一个用户用来专门来用于微信报警,我这里直接使用 admin 用户了(说明:这里收件人对应企业微信号中的应用ID)

zabbix 微信告警机制的更多相关文章
- Zabbix微信告警
Zabbix微信告警 摘要 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信 ...
- zabbix 微信告警配置
作者信息 邮箱:sijiayong000@163.com Q Q:601566386 Zabbix 微信告警 摘要:Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是 ...
- zabbix微信告警实践
首先你得有个企业号!!!具体操作步骤可以参考http://itnihao.blog.51cto.com/1741976/1733245,里面写的很详细就不重复了. 微信公众号注册并配置完成后,还需要让 ...
- zabbix微信告警(虚拟机脚本测试成功,zabbix上收不到信息)
前言: 使用zabbix直接运行脚本又可以正常接收.但是登录zabbix web界面,测试! 动作显示已送达,但是微信并没有收到信息! 解决: 添加脚本参数,因为不添加脚本参数,调用不了你这个脚本 ...
- 6.zabbix微信告警3.2
原文地址: https://blog.cactifans.com/2016/01/27/zabbix%E5%BE%AE%E4%BF%A1%E5%91%8A%E8%AD%A6/ pdf : 链接: ht ...
- zabbix 微信告警脚本
#!/usr/bin/env python3 import requests import json import sys import os def access_token(Corpid,Secr ...
- 【zabbix】微信告警消息模版
下面给出了一个zabbix微信告警消息的模版, 消息最后加上#号和短横线的设计有两个原因: 1,zabbix的微信告警消息总是被截断,比如最后一个告警时间,如果没有最后一行#号,在微信上看的时候时间不 ...
- Zabbix实现微信告警
zabbix实现微信告警可以分为以下两个步骤: 在百度告警告警平台实现微信告警 将Zabbix接入百度告警平台 微信告警 实现微信告警只需要如下四步: 个人主页关注微信 升级策略配置微信告警 服务管理 ...
- zabbix python 微信告警脚本
测试zabbix的微信告警耗费了大量时间,使用了开源工具(OneOaaS weixin-alert).shell脚本工具(手动执行正常,服务器调用失败),均没有实现相关功能以下是自己优化过的Pytho ...
随机推荐
- SQL 实习
一. tem表 group by 分组后,有三个编号,找出最下的订单时间,比较选出时间段内的数据.注意group by 和 having的用法. group by 的用法 不用聚合函数的时候,每类出现 ...
- Oracle如何查询不等于某数值
前言 今天在使用Oracle查询“不等于”的时候,发现得到的数据与期望中的不一样,进一步查找资料才有发现. 1.Oracle的不等于 在Oracle中,"<>".&qu ...
- NKOJ3765 k个最小和
问题描述 有k个整数数组,各包含k个元素,从每个数组中选取一个元素加起来,可以得到k^k个和,求这些和中最小的k个值. 输入格式 第一行,一个整数k(k<=500)接下来k行,每行k个正整数(& ...
- Blazor入门笔记(5)-数据绑定
1.环境 VS2019 16.5.1 .NET Core SDK 3.1.200 Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.默认绑定 ...
- 剖析手写Vue,你也可以手写一个MVVM框架
剖析手写Vue,你也可以手写一个MVVM框架# 邮箱:563995050@qq.com github: https://github.com/xiaoqiuxiong 作者:肖秋雄(eddy) 温馨提 ...
- Disruptor 基础篇
Disruptor 基本概念 RingBuffer结构 Sequencer (生产.消费协调者) EventFactory & EventTranslator SequenceBarrier ...
- Pytest系列(13)- 重复执行用例插件之pytest-repeat的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 平常在做功能测试的时候,经常 ...
- MyBatis(五):分页
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- MTK Android [输入法]客制化系统默认输入法-搜狗输入法
1.frameworks/base/packages/SettingsProvider/res/values/defaults.xml <!--Sogou input method is use ...
- Java第三十一天,用Properties集合操作IO
一.Properties 这个类是线程安全的:多个线程可以共享一个Properties对象,而不需要外部同步 1.常用方法 Object setProperty(String key, String ...