首页 > 其他分享 >zabbix 警报推送至企业微信(图文版)

zabbix 警报推送至企业微信(图文版)

时间:2023-08-23 14:55:42浏览次数:43  
标签:itemid get url 微信 xx zabbix graph print 推送

新增Python脚本

# encoding: utf-8
import sys
import requests
import json
import os
import time
import re
 
url = 'http://xx.xx.xx.xx/zabbix/api_jsonrpc.php'
headers = {'Content-Type': 'application/json-rpc'}
graph_path = '/data/zabbix/images/'  # 定义图片存储路径
graph_url = 'http://xx.xx.xx.xx/zabbix/chart.php'  # 定义图表的url
loginurl = "http://xx.xx.xx.xx/zabbix/index.php"  # 定义登录的url
 
 
def uploadImg(path,accessToken):
    #img_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=" + key + "&type=file"
    img_url = "https://qyapi.weixin.qq.com/cgi-bin/media/uploadimg?access_token="+accessToken
    files = {'media': open(path, 'rb')}
    r = requests.post(img_url, files=files)
    re = json.loads(r.text)
    print(re)
    return re['url']
 
 
def get_itemid(message):
    #print(message)
    itemid = re.search(r'ITEMID:(\d+)', message).group(1)
    #itemid = 1
    return itemid
 
 
def get_imgUrl(itemid):
    session = requests.Session()
    try:
        loginheaders = {
            "Host": "xx.xx.xx.xx",
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
        }
        # 定义请求消息头
 
        payload = {
            "name": 'xxxxxxx',
            "password": 'xxxxxxx',
            "autologin": "1",
            "enter": "Sign in",
        }
        # 定义传入的data
        login = session.post(url=loginurl, headers=loginheaders, data=payload)
        print(login)
        graph_params = {
            "from": "now-10m",
            "to": "now",
            "itemids": itemid,
            "width": "400",
        }
        # 定义获取图片的参数
        graph_req = session.get(url=graph_url, params=graph_params)
        # 发送get请求获取图片数据
        time_tag = time.strftime("%Y%m%d%H%M%S", time.localtime())
        graph_name = 'baojing_' + time_tag + '.png'
        # 用报警时间来作为图片名进行保存
        graph_name = os.path.join(graph_path, graph_name)
        # 使用绝对路径保存图片
        with open(graph_name, 'wb', ) as f:
            f.write(graph_req.content)
            # 将获取到的图片数据写入到文件中去
        return graph_name
    except Exception as e:
        print(e)
        return False
 
def getAccessToken():
    api_url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=corpid&corpsecret=corpsecret"
    content = requests.get(api_url)
    #print(content.json())
    return content.json().get("access_token")
 
def getImgUrl(mediaId,accessToken):
    api_url = "https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token="+accessToken+"&media_id="+mediaId
    content = requests.get(api_url)
    print(mediaId)
    print(content.json())
    return content.json().get("url")
 
def send_message(imgUrl,title,desc,openUrl,key):
    # 发送消息
    url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" + key
    # message = title  # sys.argv[3]
    params = {
        "msgtype": "template_card",
        "template_card": {
            "card_type": "news_notice",
            "source": {
                "desc": "Zabbix网络警报",
                "desc_color": 0
            },
            "main_title":{
                "title":"Zabbix网络警报",
            },
            "quote_area":{
                "type":0,
                "quote_text":desc
            },
            "card_image": {
                "url": imgUrl
            },
            "card_action": {
                "type": 1,
                "url": openUrl,
                "appid": "APPID",
                "pagepath": "PAGEPATH"
            }
        }
    }
    req = requests.post(url, data=json.dumps(params))
    print(req.json())
 
 
if __name__ == '__main__':
    message = sys.argv[1]
    print(message)
    itemid = get_itemid(message)
    imgpath = get_imgUrl(itemid)
    accessToken = getAccessToken();
    imgUrl = uploadImg(imgpath,accessToken)
    #print(itemid)
    #print(imgpath)
    print(imgUrl)
    send_message(imgUrl,sys.argv[2],sys.argv[3],imgUrl,sys.argv[4])
    #accessToken = getAccessToken()

新增SH脚本

#!/bin/bash
echo $1 >> /data/zabbix/log.log
python /usr/lib/zabbix/alertscripts/wxcom.py $1 $2 $3 $4

把两个文件都放到这个目录下:/usr/lib/zabbix/alertscripts/

标签:itemid,get,url,微信,xx,zabbix,graph,print,推送
From: https://www.cnblogs.com/almightyYantao/p/17651630.html

相关文章

  • 控制 打开和关闭远程推送通知
    首先初始化一个switch,如下:我是在cell里面创建的,然后实现switch的方法:这里的话,通过判断switch的状态,yes或是no来控制关闭的,因为app首次运行的话,是有一个注册通知的提示框,点击好以后,就可以接受到apns的推送服务了,如果用户点击不允许的话,是不能接收到推送的!切记!注意这里面的状态判断:1,......
  • 微信小程序之扫普通链接二维码打开小程序
    一、需求​ 扫描自定义的二维码链接打开小程序指定页面,可以在二维码链接里面加一些自定义参数,本人是用于扫码发券用,比如扫这个二维码进入首页登陆后发5元,扫那个发10元,发券的金额都写在了二维码参数里面,实际场景复杂一点,大概是这个意思。二、调研登录微信小程序后台,开发——开......
  • linux centos7安装微信开发者工具
    要在CentOS7.6上安装图形化界面,可以按照以下步骤进行操作:#1.更新系统:sudoyumupdate#2.安装GNOME桌面环境:sudoyumgroupinstall"GNOMEDesktop"-y#3.配置系统默认启动为图形模式:sudosystemctlset-defaultgraphical.target#4.安装图形化界面的依赖包:s......
  • 【运营版】盛大大财神多功能完美运营微信/支付宝/云闪付/抢单系统源码/完整数据
    源码介绍:盛大大财神多功能完美运营微信/支付宝/云闪付/抢单系统源码/完整数据做码商的那时候都知道的,大财神,功能以及各方面都是很不错的。完美运营级无BUG。VUE+thinkphp5前后端分离,喜欢的拿去学习研究,里面带简单的搭建教程   点击链接,免费下载:提取码:011e......
  • 制作一个内部的 zabbix-agent 快速部署脚本
    下载官方的基础agent部署包官方地址:点击到达curl-Ohttps://cdn.zabbix.com/zabbix/binaries/stable/5.0/5.0.36/zabbix_agent-5.0.36-linux-3.0-i386-static.tar.gz编写install脚本#!/bin/bash##变量定义#脚本所在路径BASE_DIR=$(cd$(dirname$0);pwd)#Zabbix......
  • 微信开发之一键修改群聊备注的技术实现
    修改群备注 修改群名备注后,如看到群备注未更改,是手机缓存问题,可以连续点击进入其他群,在点击进入修改的群,再返回即可看到修改后的群备注名,群名称的备注仅自己可见请求URL:http://域名地址/modifyGroupRemark请求方式:POST请求头Headers:Content-Type:application/json......
  • 微信开发之一键发布群公告的技术实现
    简要描述:设置群公告请求URL:http://域名地址/setChatRoomAnnouncement请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是String登录实例标识chatRoomId是String群号content是String内容请求参数示例{"wId":"349be9......
  • tidb快照备份并发送企业微信机器人通知
    tidb备份使用的是br进行快照备份+日志备份具体代码如下#qiyewx.pyimportjsonfromdatetimeimportdatetimeimportrequestsfromconfigimport*#可以把机器人的配置信息写到一个单独的config里面也可以直接填到脚本里classQiyewx():def__init__(self):......
  • ios app分享微信h5二次转发无法自定义标题icon问题的解决方法
     我的实现场景是打开app的时候ios走universallink,安卓走微信jssdk。安卓二次转发自定义标题有效,ios则不行。参考了微信开放社区,竞品的分享方法。一直摸不到头绪,后面把限制打开app安卓走jssdk限制的代码注释,让ios也走微信jssdk,二次分享自定义样式终于可行,问题解决。......
  • 微信_如何响应用户请求;
    <imgsrc=""alt=""/><?php/**第二十三小分队(23工作室)*感谢:方倍工作室;**CopyRight2014-05-30AllRightsReserved*///签名define("TOKEN","weixin");$wechatObj=newwechatCallback();//isset()检测变量是否设置;if(!i......