zabbix python 微信告警脚本
测试zabbix的微信告警耗费了大量时间,使用了开源工具(OneOaaS weixin-alert)、shell脚本工具(手动执行正常,服务器调用失败),均没有实现相关功能
以下是自己优化过的Python脚本
Python大法好!!
#!/usr/bin/env python
# -*- coding: utf-8 -*- import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" ) class WeChat(object):
__token_id = ''
# init attribute
def __init__(self,url):
self.__url = url.rstrip('/')
self.__corpid = 'wx80179d3a3eb675c2'
self.__secret = 'rf8zW7iF-VECQVwKGndrHzAkEqfcnmSXmhIGUHCKH24' # Get TokenID
def authID(self):
params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
data = urllib.urlencode(params)
content = self.getToken(data)
try:
self.__token_id = content['access_token']
# print content['access_token']
except KeyError:
raise KeyError # Establish a connection
def getToken(self,data,url_prefix='/'):
url = self.__url + url_prefix + 'gettoken?'
try:
response = urllib2.Request(url + data)
except KeyError:
raise KeyError
result = urllib2.urlopen(response)
content = json.loads(result.read())
return content # Get sendmessage url
def postData(self,data,url_prefix='/'):
url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
request = urllib2.Request(url,data)
try:
result = urllib2.urlopen(request)
except urllib2.HTTPError as e:
if hasattr(e,'reason'):
print 'reason',e.reason
elif hasattr(e,'code'):
print 'code',e.code
return 0
else:
content = json.loads(result.read())
result.close()
return content # send message
def sendMessage(self,touser,subject,message): self.authID() data = json.dumps({
'touser':touser,
'msgtype':"news",
'agentid':"",
'news':{
"articles":[
{
"title": subject,
"description":message,
}
]
},
}) response = self.postData(data)
print response if __name__ == '__main__':
a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
a.sendMessage(sys.argv[1],sys.argv[2],sys.argv[3])
weixin.py
微信发消息接口:
http://qydev.weixin.qq.com/wiki/index.php
脚本使用方法:
python weixin.py userID title content
发送给所有用户:
python weixin.py @all title content
zabbix配置微信告警
管理→报警媒介类型→创建媒体类型
需添加的参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
配置→动作→(触发器)创建动作


默认操作步骤持续时间设置为60s
[FAIL]: {EVENT.TIME}: {TRIGGER.NAME}
主机: {HOST.NAME1}
状态: {TRIGGER.STATUS}
级别: {TRIGGER.SEVERITY}
name: {ITEM.NAME1}
key: {ITEM.KEY1}
最后值: {ITEM.VALUE1}
[OK]-{EVENT.RECOVERY.TIME}: {TRIGGER.NAME}
主机: {HOST.NAME1}
状态: {TRIGGER.STATUS}
级别: {TRIGGER.SEVERITY}
name: {ITEM.NAME1}
key: {ITEM.KEY1}
最后值: {ITEM.VALUE1}
动作执行的操作配置

用户配置
微信告警效果图:
邮件告警zabbix配置
zabbix python 微信告警脚本的更多相关文章
- zabbix企业微信告警配置教程
前言: zabbix企业微信告警只需要配置一次就可以使用很久了,但是发现再次配置时,总会有遗忘,很麻烦又要去重新熟悉,所以,现在记录一份详细的配置过程,方便日后再次配置. 1.zabbix_serve ...
- Zabbix 新版微信告警-转载
Zabbix 新版微信告警 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信 ...
- Zabbix实现微信告警
zabbix实现微信告警可以分为以下两个步骤: 在百度告警告警平台实现微信告警 将Zabbix接入百度告警平台 微信告警 实现微信告警只需要如下四步: 个人主页关注微信 升级策略配置微信告警 服务管理 ...
- 【zabbix】微信告警消息模版
下面给出了一个zabbix微信告警消息的模版, 消息最后加上#号和短横线的设计有两个原因: 1,zabbix的微信告警消息总是被截断,比如最后一个告警时间,如果没有最后一行#号,在微信上看的时候时间不 ...
- zabbix之微信告警(python版):微信个人报警,微信企业号告警脚本
微信个人告警脚本 微信个人告警:使用个人微信,发送到微信群组,微信好友 两个脚本执行: 1)能连接网络2)先执行server.py,扫描登录微信,登录之后没有报错,打开新终端查看端口是否起来了3)在z ...
- zabbix实现微信告警配置
zabbix设置微信报警的配置过程 zabbix的报警方式有很多,在这里我们来详细说明一下如何通过微信报警 微信企业号的申请 注册的地址https://qy.weixin.qq.com/ 这样企业就 ...
- zabbix 微信告警脚本
#!/usr/bin/env python3 import requests import json import sys import os def access_token(Corpid,Secr ...
- lykchat+zabbix实现微信告警
http://www.ttlsa.com/zabbix/lykchat-zabbix-wechat-alert/
- zabbix微信告警实践
首先你得有个企业号!!!具体操作步骤可以参考http://itnihao.blog.51cto.com/1741976/1733245,里面写的很详细就不重复了. 微信公众号注册并配置完成后,还需要让 ...
随机推荐
- [2017BUAA软工助教]团队建议
关于团队项目的个人建议 (以下排名不分先后) 一.hotcode5 你们组要做一个"课件-心得"共享平台 目前最大的竞争对手其实不是北航课程中心网站,而是每个系自己的大班群. 热心 ...
- JS 获取链接中的参数
1.获取链接全部参数,以对象的形式返回 //获取url中参数 function GetRequest() { var url = location.search; //获取url中"?&qu ...
- linux 安装ssh以及ssh用法与免密登录
想要免费登录就是把本地机器的id_rsa_pub的内容放到远程服务器的authorized_keys里面 一.配置yum和hosts文件 配置hosts文件: 命令:vi /etc/hosts 在文件 ...
- 字符串和ASCII之间的转换
public class CharToAscii { public static void main(String[] args) { CharToAscii.AscToString(); CharT ...
- day 7-22 进程,线程,协程
一.什么是进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体.它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理 ...
- CSS3 Flexbox轻巧实现元素的水平居中和垂直居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点 ...
- JS --- 如何获取一个对象的类型
可以清楚的看到 拿到数字 字符串 对象 函数 数组 通过.slice(8,-1) 可以拿到类型的名称 ,可以做你想要的操作 Object.prototype.toString.call(222) & ...
- 隐藏Nginx或Apache以及PHP的版本号的方法
当黑客入侵一台服务器时,首先会”踩点”, 这里的”踩点”,指的是了解服务器中运行的一些服务的详细情况,比如说:版本号,当黑客知道相应服务的版本号后,就可以寻找该服务相应版本的一些漏洞来入侵,攻击,所以 ...
- python之路--操作系统介绍,进程的创建
一 . 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理.调度进程,并且将多个进程对硬件的竞争变得有序 二 多道技术: 所谓多道程序设计技术,就是指允许多个程序同时进入内存 ...
- iperf网络测试
iperf网络测试文档 地址: https://www.jianshu.com/p/942a9d9bc704