zabbix配置微信报警

news2024/9/27 12:15:53

 如有错误,敬请谅解!

此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!! 


6.1 注册企业微信

企业微信注册地址:https://work.weixin.qq.com

设置总部门名称添加成员

 也可以成员扫码加入,点击 成员加入,过程略。

6.2 添加一个部门

6.3 添加用户

添加一个用户到上面创建的部门里面(这里采取直接将管理员添加进去):记住用户账号

6.4 创建应用

 创建完成记住AgentID和Secret:

image-20220129225918766

 记住企业ID

6.5 微信企业号接口调试工具

企业微信

 

 

6.6 配置脚本

python

在zabbix server上操作
1、安装requests组件
[root@node1 ~]# dnf install -y python-pip
[root@node1 ~]# pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
其中-i 指定使用国内镜像源

[root@node1 ~]# dnf install -y git
[root@node1 ~]# git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git
Cloning into 'Zabbix-Alert-WeChat'...
remote: Enumerating objects: 121, done.
remote: Total 121 (delta 0), reused 0 (delta 0), pack-reused 121
Receiving objects: 100% (121/121), 26.25 KiB | 316.00 KiB/s, done.
Resolving deltas: 100% (33/33), done.
[root@node1 ~]# cd Zabbix-Alert-WeChat/
[root@node1 Zabbix-Alert-WeChat]# cp -a wechat.py /usr/lib/zabbix/alertscripts/
[root@node1 Zabbix-Alert-WeChat]# cat /usr/lib/zabbix/alertscripts/wechat.py
#!/usr/bin/python2.7
#_*_coding:utf-8 _*_
#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'] != 0:
        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 = 0
    Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token
    Data = {
        "touser": User,                                 # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
        #"totag": Tagid,                                # 企业号中的标签id,群发使用(推荐)
        #"toparty": Partyid,                             # 企业号中的部门id,群发时使用。
        "msgtype": "text",                              # 消息类型。
        "agentid": Agentid,                             # 企业号中的应用id。
        "text": {
            "content": Subject + '\n' + Content
        },
        "safe": "0"
    }
    r = requests.post(url=Url,data=json.dumps(Data),verify=False)
    while r.json()['errcode'] != 0 and n < 4:
        n+=1
        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),verify=False)
            print(r.json())

    return r.json()


if __name__ == '__main__':
    User = sys.argv[1]                                                               # zabbix传过来的第一个参数
    Subject = str(sys.argv[2])                                                       # zabbix传过来的第二个参数
    Content = str(sys.argv[3])                                                       # zabbix传过来的第三个参数

    Corpid = "wxaf"                                                                  # CorpID是企业号的标识
    Secret = "aKDdCRT76"                                                             # Secret是管理组凭证密钥
    #Tagid = "1"                                                                     # 通讯录标签ID
    Agentid = "1000001"                                                              # 应用ID
    #Partyid = "1"                                                                   # 部门ID

    Status = SendMessage(User,Agentid,Subject,Content)
    print Status

#报警脚本中文乱码:    
将Python报警的脚本加了ensure_ascii=False  解决编码问题 
r = requests.post(url=Url,data=json.dumps(Data,ensure_ascii=False),verify=False)

此脚本在CentOS7 python2 环境没问题。CentOS8 中使用python2环境可正常接收。
本文为python3,因此此处使用shell脚本。

# cat weixin.sh
#!/bin/bash
CorpID="wwd5932acb806b41850c"	# 你的企业id
Secret="BbUbI_g_4zwvgYjlRinxBu5V_xK8R1VRT-QiNLYW5O0"	#你的SecretID
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
# echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"

function body(){
        local int agentid=1000002		# 你的agentdid
        local UserID="@all"                 # 发送的用户ID
        local PartyID=1                  # 部门ID
        local Msg=$(echo "$@" | cut -d" " -f3-)	# 发送给所有人
        printf '{\n'
        printf '\t"touser": "'"$UserID"\"",\n"
        printf '\t"toparty": "'"$PartyID"\"",\n"
        printf '\t"msgtype": "text",\n'
        printf '\t"agentid": "'"$agentid"\"",\n"
        printf '\t"text": {\n'
        printf '\t\t"content": "'"$Msg"\""\n"
        printf '\t},\n'
        printf '\t"safe":"0"\n'
        printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
        
[root@node1 alertscripts]# chmod +x weixin.sh 
[root@node1 alertscripts]# chown zabbix.zabbix weixin.sh 
[root@node1 alertscripts]# systemctl restart zabbix-server.service 
       
命令行测试发送:
[root@node1 alertscripts]# ./weixin.sh test123
{"errcode":0,"errmsg":"ok","msgid":"mrVtVXE39it1tWVvd57npJdUhX1zmSZZyLiL4oKQeXbJt9VoCB--nykac4P9nGRzwWn0lVah5HxQ26PmXpV37g"}       

6.7 zabbix web界面中配置微信报警

1> 进入:管理 -> 报警媒介类型 -> 创建媒体类型:

脚本参数

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

 配置模板

 

6.8 用户和报警媒介关联

 

 

6.9 配置动作和操作

 

6.10 测试报警


如有错误,请联系作者删除

并恳请同行朋友予以斧正,万分感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序项目组件的基本应用

宿主环境&#xff1a;程序运行必须依赖的环境 小程序的宿主环境 ---->手机微信(定位、扫码、支付等) 小程序的通信模型&#xff1a; 渲染层和逻辑层之间的通信(微信客户端转发)逻辑层和第三方服务器之间的通信(微信客户端转发) 小程序的运行机制&#xff1a; 启动&#xff1…

chrome屏幕共享插件的获取和配置

文章目录 1. 下载插件2. 加载插件3. 打开这个文件4. 关掉开发者模式 1. 下载插件 https://github.com/webrtc/samples/blob/gh-pages/release/desktopCaptureExtension.zip 不过我下载不了&#xff0c;找别人要了这个文件 解压 2. 加载插件 选择 扩展程序—》管理扩展程序 加…

拥抱变革 展现PMO力量 | 易趋受邀出席2023第十二届中国PMO大会

2023年8月12-13日&#xff0c;由PMO评论主办的第十二届中国PMO大会&#xff08;以下简称PMO大会&#xff09;在北京成功落幕。 &#xff08;主论坛一现场&#xff09; 本届大会以“拥抱变革 展现PMO力量”为主题&#xff0c;设置了“PMO与组织变革”、“PMO与组织战略”2个主论…

vueuse常用方法

useDateFormat 时间格式化 <script setup lang"ts">import { useNow, useDateFormat } from vueuse/coreconst formatted useDateFormat(useNow(), YYYY-MM-DD HH:mm:ss)</script><template><div>{{ formatted }}</div> </templa…

【爱书不爱输的程序猿】公网访问本地搭建的WEB服务器之详细教程

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本地电脑搭建Web服务器并用cpolar发布至公网访问 前言1. 首先将PHPStudy、WordPress、cpolar下载到电脑2. 安装PHPStudy3. 安装cpolar&#xff0c;进入Web-UI界面4.安装wordpress5.…

赋能智慧零售,美格智能助力升级科技感购物体验

近期&#xff0c;一段消费者在商场使用智能购物车的视频冲上社交平台热搜榜&#xff0c;获得百万点赞&#xff0c;网友纷纷感慨科技进步的速度。许多人会好奇智能购物车和普通购物车有什么区别呢&#xff1f;智能购物车具有用户识别、室内定位、数据采集、精准营销、自助结算、…

低代码PaaS平台源码:基于Kubernetes云原生技术,快速构建企业级应用程序

低代码PaaS平台 低代码PaaS平台可以在云端开发、部署、运行低代码应用程序。使用独立数据库模型&#xff0c;基于Kubernetes云原生技术&#xff0c;每个租户均可拥有一套独立的存储、数据库、代码和命名空间&#xff0c;实现了100%的租户数据隔离&#xff0c;并可以随时迁移到…

【RP2040】香瓜树莓派RP2040之LED

本文最后修改时间&#xff1a;2022年09月05日 11:02 一、本节简介 本节介绍如何编写一个LED驱动。 二、实验平台 1、硬件平台 1&#xff09;树莓派pico开发板 ①树莓派pico开发板*2 ②micro usb数据线*2 2&#xff09;电脑 2、软件平台 1&#xff09;VS CODE 三、版权声…

ppt转pdf免费的工具哪个好用?免费PPT转换为PDF的方法分享

在我们的工作和学习中&#xff0c;将PPT文件转换为PDF格式对于分享和储存具有重要意义。PPT文件是一种常用的演示工具&#xff0c;用于展示和传达信息。然而&#xff0c;PPT文件在不同的平台和设备上可能存在格式兼容性的问题&#xff0c;而且文件大小较大&#xff0c;不方便共…

C#__使用Type类反射数据的基本用法

// 简单介绍 // 元数据&#xff08;metadata&#xff09;&#xff1a;与程序及其类型有关的数据。 // 反射&#xff1a;一个运行的程序查看本身元数据或其他程序集中的元数据的行为 // Assembly类&#xff1a;允许访问给定程序集的元数据&#xff0c;包含了可以加载和执行程序…

爬虫IP时效问题:优化爬虫IP使用效果实用技巧

目录 1. 使用稳定的代理IP服务提供商&#xff1a; 2. 定期检测代理IP的可用性&#xff1a; 3. 配置合理的代理IP切换策略&#xff1a; 4. 使用代理IP池&#xff1a; 5. 考虑代理IP的地理位置和速度&#xff1a; 6. 设置合理的请求间隔和并发量&#xff1a; 总结 在爬虫过…

Max Compute 操作记录

编译 max compute-spark git clone https://github.com/aliyun/MaxCompute-Spark cd spark-3.x mvn clean package -DskipTests在 target 目录下生成 以下两个文件。 spark-examples_2.12-1.0.0-SNAPSHOT-shaded.jar spark-examples_2.12-1.0.0-SNAPSHOT.jar2. DataWorks 上传…

计组 | 中断是什么?中断流程有哪些?什么情况下响应中断?

前言 记录一些计组相关联的题集与知识点&#xff0c;方便记忆与理解。 中断 总结 IBM370系统&#xff1a; IBM370计算机将中断类分为机器校验、访管、程序性、外部、输入/输出、重新启动6类。 中断响应优先级级别最低的是 重新启动中断 中断响应优先级级别最高的中断类型是…

ARouter基本使用及原理分析

作者&#xff1a;愿天深海 ARouter简介 ARouter是阿里开源的一款帮助Android App进行组件化改造的路由框架&#xff0c;是Android平台中对页面和服务提供路由功能的中间件&#xff0c;可以实现在不同模块的Activity之间跳转。 ARouter的特点是灵活性强还能帮助项目解耦。 除…

SpringCloud Gateway:status: 503 error: Service Unavailable

使用SpringCloud Gateway路由请求时&#xff0c;出现如下错误 yml配置如下&#xff1a; 可能的一种原因是&#xff1a;yml配置了gateway.discovery.locator.enabledtrue&#xff0c;此时gateway会使用负载均衡模式路由请求&#xff0c;但是SpringCloud Alibaba删除了Ribbon的…

创建远程仓库以及分支

1、 创建远程仓库 这里有两种方式 1.1 利用git的插件有Gitee、GitHub。 来到 GitHub 中发现已经帮我们创建好了 gitTest 的远程仓库。 1.2 通过Push的方式推送本地库到远程库 这种方式需要提前创建好仓库。 右键点击项目&#xff0c;可以将当前分支的内容 push 到 GitHub 的远…

探索区块链世界:去中心化应用(DApp)的崭新前景

随着科技的不断发展&#xff0c;区块链技术逐渐引领着数字时代的潮流。在这个充满创新和变革的领域中&#xff0c;去中心化应用&#xff08;DApp&#xff09;成为了备受瞩目的焦点。DApp 不仅改变了传统应用程序的范式&#xff0c;还在金融、社交、游戏等多个领域展现出了广阔的…

《内网穿透》无需公网IP,公网SSH远程访问家中的树莓派

文章目录 前言 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar内网穿透4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地…

Python 实现性能自动化测试竟然如此简单

一、思考 ❓❔ 1.什么是性能自动化测试&#xff1f; 性能 系统负载能力超负荷运行下的稳定性系统瓶颈自动化测试 使用程序代替手工提升测试效率 性能自动化 使用代码模拟大批量用户让用户并发请求多页面多用户并发请求采集参数&#xff0c;统计系统负载能力生成报告 2.Pytho…