博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zabbix 微信报警Python版(带监控项波动图片)
阅读量:5329 次
发布时间:2019-06-14

本文共 3069 字,大约阅读时间需要 10 分钟。

#!/usr/bin/python# -*- coding: UTF-8 -*-#Function: 微信报警python版(带波动图)#Environment: python 2.7.6import urllib2,chardetimport sys,json,redef send_alter():             #发送报警到微信    AppID = *****         #应用ID    UserID = *****         #用户ID,以|间隔可发送多人    PartyID = 1                 #组ID        GURL = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + CropID + '&corpsecret=' + Secret    Request = urllib2.Request(GURL)    Response = urllib2.urlopen(Request)    access_token = eval(Response.read())['access_token']    PURL = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token    data = {        "touser" : UserID,        "toparty": PartyID,        "msgtype": "text",        "agentid": AppID,        "text": {            "content": Msg        },        "safe": 0    }    encode_data = json.dumps(data, encoding='utf-8', ensure_ascii=False)    #要将数据encode在json.dumps,不然微信无法识别    wx_req = urllib2.Request(PURL, encode_data)        f = open('/home/zabbix/test','w')    print >> f, urllib2.urlopen(wx_req).read()def get_return(data):    request = urllib2.Request(zabbix_url + 'api_jsonrpc.php',data)    for key in zabbix_header:        request.add_header(key,zabbix_header[key])    try:        result = urllib2.urlopen(request)    except HTTPError, e:        print 'The server couldn\'t fulfill the request, Error code: ', e.code    except URLError, e:        print 'We failed to reach a server.Reason: ', e.reason    else:        response=json.loads(result.read())        return response        result.close()def get_authcode():                    #获取zabbix的auth_code    auth_data = json.dumps(        {               "jsonrpc":"2.0",            "method":"user.login",            "params":                       {                           "user":zabbix_user,                        "password":zabbix_passwd                    },            "id":0        })    return get_return(auth_data)['result']def get_imgurl():        #获取监控项波动图片地址    ItemID = re.search('(告警监控项:.*\()(.*)(\))', sys.argv[1]).group(2)    png_url = zabbix_url + "chart.php?period=3600&isNow=1&itemids%5B0%5D=" + ItemID + "&type=0&profileIdx=web.item.graph&profileIdx2=29123&width=1387"    return png_urlif __name__ == '__main__':    defaultencoding = 'utf-8'    if sys.getdefaultencoding() != defaultencoding:        reload(sys)        sys.setdefaultencoding(defaultencoding)    CropID='*******'      #这两个要在微信企业号里找    Secret='********'      #企业号里找        zabbix_url = 'http://****/zabbix/'      #zabbix路径        new_details = '点击查看图片'    Msg = re.sub('DETAILS', new_details, sys.argv[1])        send_alter()

推荐的动作格式:

产生告警!告警主机: {HOST.NAME}告警时间: {EVENT.DATE} 告警监控项: {ITEM.NAME}({ITEM.ID})告警触发器: {TRIGGER.NAME}告警状态: {TRIGGER.STATUS}告警级别: {TRIGGER.SEVERITY}告警详情: DETAILS监控项值:1.{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}):{ITEM.VALUE1}2.{ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}):{ITEM.VALUE2}3.{ITEM.NAME3} ({HOST.NAME3}:{ITEM.KEY3}):{ITEM.VALUE3}事件 ID: {EVENT.ID}    #推荐动作

接收到的信息:

点击查看图片会直接看到报警监控项的波动图(需要事先访问过该zabbix后台并留下cookie),如图:

 

转载于:https://www.cnblogs.com/nat-zhu/p/8523082.html

你可能感兴趣的文章
Git之初体验 持续更新
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
Maven之setting.xml配置文件详解
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>
HDU 2063 过山车
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
Windows Phone开发(5):室内装修 转:http://blog.csdn.net/tcjiaan/article/details/7269014
查看>>
详谈js面向对象 javascript oop,持续更新
查看>>
关于这次软件以及pda终端的培训
查看>>