【zabbix】企业微信告警

本篇基于我的前两章环境续写:

1、【zabbix】docker安装zabbix、yum安装zabbix-agent

2、【zabbix】MySQL模板创建与监控

企业微信部分

一、首先得有个企业微信号

添加部门

 应用管理创建应用

 

 

 我的企业里面找到企业id,和上面两条一起,总共三条信息都要用到

测试以下通讯是否正常,微信企业号接口调试工具:

企业微信接口调试工具

 

脚本准备部分 

这里准备了两份脚本,两种发送方式,可以自选其一使用!

在宿主机/usr/lib/zabbix/alertscripts/路径下创建weixin.py

第一种脚本:这里要修改脚本里的这三条信息,也就是上文说到的三条信息

  1. corpid='' #企业ID

  2. appsecret='' #secret

  3. agentid=1000002 #AgentID

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#comment: zabbix接入微信报警脚本import requests
import sys
import os
import json
import logginglogging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',datefmt = '%a, %d %b %Y %H:%M:%S',filename = os.path.join('/tmp','weixin.log'),filemode = 'a')corpid='企业ID' #企业ID
appsecret='secret'  #secret
agentid=AgentID #AgentID#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstokentouser=sys.argv[1]
subject=sys.argv[2]
toparty='3|4|5|6'
message=sys.argv[3]params={"touser": touser,"toparty": toparty,"msgtype": "text","agentid": agentid,"text": {"content": message},"safe":0
}req=requests.post(msgsend_url, data=json.dumps(params))logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)

第二种脚本:使用微信机器人,这个需要在企业微信里面创建群,在群里创建机器人,之后复制机器人的Webhook:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

#!/usr/bin/env python                                                                                                                                                                                                                       
#_*_coding:utf-8 _*_                                                                                                                                                                                                                        import requests,sys,json,time                                                                                                                                                                                                               
import urllib3                                                                                                                                                                                                                              
urllib3.disable_warnings()                                                                                                                                                                                                                  def SendMessageURL(User,Subject,Messages):     ###机器人的Webhook                                                                                                                                                                                             URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"                                                                                                                                       HEADERS = {"Content-Type": "application/json"}                                                                                                                                                                                          Data = {                                                                                                                                                                                                                                "msgtype": "markdown",                                                                                                                                                                                                              "markdown": {                                                                                                                                                                                                                       "content": "# ...... \n <font color=\"warning\">%s</font> \n <font color=\"info\">%s</font> \n <@%s>"% (Subject,Messages,User),                                                                                             #"mentioned_list" : [User],                                                                                                                                                                                                 #"content": \<font color="warning">Subject</font>  \n  Messages,                                                                                                                                                            #"mentioned_list" :[User],   ###因为是故障告警群,所以需要@all,这个看自己选择                                                                                                                                                                                            "mentioned_list" :[User,"@all"]                                                                                                                                                                                             #"mentioned_mobile_list" : ["13800000000","@all"]                                                                                                                                                                           }                                                                                                                                                                                                                               }                                                                                                                                                                                                                                       r = requests.post(url=URL, headers=HEADERS, json=Data, verify=False)                                                                                                                                                                    print(r.json())                                                                                                                                                                                                                         if __name__ == "__main__":                                                                                                                                                                                                                  SENDTO = str(sys.argv[1])                                                                                                                                                                                                               SUBJECT = str(sys.argv[2])                                                                                                                                                                                                              MESSAGE = str(sys.argv[3])                                                                                                                                                                                                              Status = str(SendMessageURL(SENDTO,SUBJECT,MESSAGE))                                                                                                                                                                                    print (Status)                                                                                                                                                                                                                          

脚本ok了 ,先在宿主机测试一下

先看下宿主机python版本

[root@k8s-node2 alertscripts]# python -V
Python 2.7.5
python weixin.py HuYiDuo gaojing jingbao

ok 手机上的企业微信已经收到消息了

我的zabbix服务端是基于zabbix/zabbix-appliance官方镜像,版本为4.4.6,

所以这里就直接把脚本拷贝到容器中去

cp /usr/lib/zabbix/alertscripts/weixin.py 容器id:/usr/lib/zabbix/alertscripts/

进入zabbix/zabbix-appliance容器

docker exec -it 9fc7a9551127f bash

脚本已经过来了

 在容器中再测试一下

python weixin.py HuYiDuo gaojing jingbao

哟?报错了?

 看错误是缺少了requests,另外python版本是2.7.16

用pip install requests 下载看看,结果也报错了,看到这个结果大致思路应该是python版本低了,得升级版本
由于是在容器中安装python环境,所以要先确定下系统的发行版

这里查出来是Alpine Linux,所以这里用不了yum,得用apk

apk add build-base   //安装 GCC等工具
编译时的依赖库
apk add --no-cache -U zlib-dev    //安装 zlib-devel
apk add --no-cache -U openssl-dev   //安装openssl-devel
手动下载:https://www.python.org/downloads/source/
命令下载:wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz
解压:tar -xvf Python-3.7.6.tgz
进入源码根目录:cd Python-3.7.6
配置源码生成makefile
./configure --enable-optimizations --with-ensurepip=install   //加上此选项会安装pip工具
编译:make 
安装:make install
由于执行configure时没有指定安装路径(--prefix=/opt/Python),所以安装到默认路径/usr/local/bin
cd /usr/local/bin
ln -s python3.5 python   //建立软连接,方便执行其他:
apk add python3
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py​

安装好后继续下载requests

pip install requests

再测试一下

成功了

 zabbix配置企业微信告警部分

 配置报警媒介类型

收件人:
{ALERT.SENDTO}
主题:
{ALERT.SUBJECT}
消息:
{ALERT.MESSAGE}

测试报警媒介

 消息发送成功

注:如果这一步之前在服务器及容器里测试消息都成功,但web页面报警媒介这里测试发送却报错就得检查脚本本身的问题了。

如:#!/usr/bin/env python   这一行是否有对应环境,或者脚本python版本适配问题!

消息接收成功

配置动作

这里先配了个zabbix客户端状态的触发器,待会做测试用

注:触发器这一步配置也蛮重要,触发器配置不好无法触发,告警信息就会无法送达!

 操作里面的发送消息给用户和用户群组得自定义创建

服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
消息内容:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
----------------------------------------------------
服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
消息内容:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
----------------------------------------------------
服务器:{HOST.NAME}: {TRIGGER.NAME}已更新!
消息内容:
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}

这里及下面的发送消息给用户后来我给拿掉了,直接配成了管理组,这个发送消息给xx的配置自己自定义就好,只要能接收到消息。

消息内容框里的内容部分,在消息内容:这一行上面把默认标题框里的信息给填上去,这样告警信息看起来会顺眼美观一些。

接下来给用户Admin配置报警媒介,收件人这里我直接填写的@all

 用户配置完成就可以做测试了

回到服务器,关闭zabbix-agent

systemctl stop zabbix-agent

 成功接收到故障报警信息

 再启动zabbix-agent

systemctl start zabbix-agent

 成功接收到故障恢复信息

好了,至此企业微信告警就配置完了!!!

zabbix全套配置思路也结束了!!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器请求微信后台(api.weixin.qq.com)过慢处理

问题描述&#xff1a;服务器请求微信后台&#xff08;api.weixin.qq.com&#xff09;的测试结果&#xff0c;每次请求都需要4&#xff0c;5秒甚至更慢。 2016.12.16 16:31:57 start:1481877117.4148 request:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_t…

转行退路?后端开发人员可选12个职业方向

部分数据来源&#xff1a;ChatGPT 引言 后端开发是当前互联网行业非常热门的职业之一&#xff0c;如果你想要开启全新的职业生涯&#xff0c;也可以选择其他的职业。本文将介绍一些适合后端开发人员转行的就业方向&#xff0c;并从就业市场和就业前景角度进行分析。 1. 区块链…

云炬Android开发笔记 7登陆注册功能开发

阅读目录1.注册UI及验证逻辑实现 1.1 布局 1.2 注册信息的验证和逻辑 2.登录UI及验证逻辑实现 2.1 布局 2.2 登录的逻辑框架 3.服务器数据简单介绍 3.1 服务器的数据 3.2 数据端访问的数据 3.3 打印信息的级别类封装 4.与基于GreenDao的数据库框架设计 4.1 添加依赖和配置 …

让 GPT-4 设计一个分布式缓存系统,它从尝试到被“逼疯”!

整理 | 屠敏 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 比 ChatGPT 背后 GPT-3.5 更为强大的模型 GPT-4&#xff0c;已在上周正式对外发布。在 OpenAI 官方发布的 GPT-4 Developer Livestream&#xff08;https://www.youtube.com/watch?voutcGtbnMuQ&#…

增强型语言模型——走向通用智能的道路?!?

增强型语言模型——走向通用智能的道路&#xff1f;&#xff01;&#xff1f; FesianXu 20230325 at Baidu Search Team 前言 继AlphaGo在2016年横扫了人类棋手之后&#xff0c;2022年末的chatGPT横空出世&#xff0c;再次引爆了全球对人工智能技术的热情。基于语言模型的chat…

新版nonebot,go-cqhttp搭建qq机器人保姆级教程

前言 前段时间QQ进行了更新&#xff0c;所以导致了非手表协议扫码登陆报错的问题&#xff0c;不过好在大佬已经推出rc5版本的go-cqhttp&#xff0c;解决了这一头疼的问题 在开始之前&#xff0c;我需要说明一下&#xff0c;本文章是针对没有经验和基础的用户&#xff0c;所以…

文心一言初次体验,说说感觉~

文心一言&#xff0c;被称为国内版ChatGPT&#xff0c;一直被寄予厚望。 在未出来前&#xff0c;网络上都是各种调侃。 甚至还用ChatGPT来调侃。 但是在发布会的时候&#xff0c;感觉李彦宏关于文心一言讲了很多东西。 但是吧&#xff0c;又感觉啥也没讲&#xff0c;说话底气还…

王垠的过去和现状

王垠的过去和现状 转自&#xff1a;http://blog.csdn.net/simoncoder/article/details/49803827 我曾在2006年冬季接触到王垠的三篇文章&#xff1a;《完全用Linux工作》、《写给支持和反对<完全用Linux工作>的人们》、《清华梦的粉碎--写给清华大学的退学申请》&#…

百度副总裁 AIG总负责人王海峰:决胜AI时代(财新专访实录)

12月5日&#xff0c;百度副总裁、AI技术平台体系(AIG)总负责人、兼百度研究院院长王海峰接受了财新专访。 这里是视频地址&#xff08;复制链接打开&#xff09;&#x1f447; http://video.caixin.com/2017-12-05/101180688.html 王海峰表示&#xff0c;人工智能正在成为这个…

王慧文收购国产AI框架OneFlow,为中国版ChatGPT疯狂抢人抢基建

杨净 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT热潮下&#xff0c;人才已经被抢疯了。 现在&#xff0c;国内首起ChatGPT相关收购已经浮出水面。 据多方媒体消息&#xff0c;美团联创王慧文的光年之外与国产AI框架一流科技&#xff08;Oneflow&#xff09;将达成并购意向。 原…

拉开中兴帷幕 张朝阳再造搜狐

对于搜狐而言&#xff0c;如果能在媒体和视频这两条核心主线上走出一条不同的路径&#xff0c;未来持续增长当指日可期。 一点财经 刘书艳&#xff5c;作者 严 睿&#xff5c;编辑 减亏65.38%&#xff0c;营收同比增长6%&#xff0c;2020年Q1财报略超市场预期的搜狐信心满满&a…

人工智能领域研发热点回眸

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在学习摘录和笔记专…

ChatGPT on Notes/Domino

大家好&#xff0c;才是真的好。 随着春节过去&#xff0c;小盆友也开始陆续到幼儿园报到&#xff0c;我们又回来和大家一起继续Notes/Domino传奇之旅。 去年年底ChatGPT横空出世&#xff0c;让大家震惊了一把。 可能有些老Notes/Domino人&#xff0c;还不知道ChatGPT是什么…

阿里研究员吴翰清离职,下一步或将开启 AI 短视频创业

作者 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 5 月 25 日&#xff0c;据 Tech 星球报道&#xff0c;阿里巴巴集团研究员吴翰清已从阿里离职&#xff0c;接下来其将深度拥抱 AI 新时代&#xff0c;投身于 AI 短视频赛道创业。 这位被阿里程序员誉为大…

最新!OpenAI掌门人自曝GPU短缺,未来GPT-4会更快、更便宜

作者 | 金鹿 本文经授权转自公众号腾讯科技&#xff08;ID:qqtech&#xff09;&#xff0c;如需转载&#xff0c;请联系对方&#xff1a; 机器学习和人工智能初创公司Humanloop首席执行官拉扎哈比比&#xff08;Raza Habib&#xff09;&#xff0c;5月29日邀请OpenAI首席执…

汇正财经靠谱吗?大盘窄幅震荡

盘面回顾&#xff1a; 沪指全天窄幅震荡&#xff0c;大金融银行板块涨超1%&#xff0c;截止收盘沪指小涨0.07%&#xff1b;创业板全天低迷&#xff0c;锂电、光伏、风电等新能源方向领跌&#xff0c;新能源权重票下挫拖累创指&#xff0c;截止收盘创业板指跌1.39%。传媒、旅游…

2023年股票开户哪家手续费最低?融资融券利息率最低多少?万1融5!支持量化交易的券商

2023年融资融券费率最低是多少&#xff1f;利率5%&#xff0c;股票万一全佣&#xff0c;支持量化交易 股票开户费率参考&#xff1a; 1、股票佣金万1.2&#xff0c;最低万1(含规费&#xff09;&#xff0c;信用账户一致 2、场内基金&#xff08;ETF、LOF&#xff09;万0.6&…

谷歌的智能AI聊天机器人Bard已免费开放申请,赶紧加入等待列表体验一把

前言 2023年&#xff0c;真是一个Ai元年&#xff0c;随意ChatGPT的大火&#xff0c;各路网络巨头都按捺不住了&#xff0c;Google更是一度启动了红色警报&#xff0c;这是有史以来&#xff0c;谷歌感受到最大的压力&#xff0c;不过谷歌平时也并不是没有技术沉淀的&#xff0c…

如何快速看懂别人的代码

我们在写程式时&#xff0c;有不少时间都是在看别人的代码。 例如看小组的代码&#xff0c;看小组整合的守则&#xff0c;若一开始没规划怎么看&#xff0c; 就会“噜看噜苦&#xff08;台语&#xff09; ” 不管是参考也好&#xff0c;从开源抓下来研究也好&#xff0c;为…

直播平台源码中的推拉流是什么

关于直播平台源码中的推流和拉流&#xff0c;最常用的就是RTMP和RTSP协议了 推流&#xff0c;指的是把采集阶段封包好的内容传输到服务器的过程&#xff0c;推流是直播端需要完成的步骤。拉流是指服务器已有直播内容&#xff0c;用指定地址进行拉取的过程&#xff0c;拉流是客…