百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Zabbix 5.2由浅入深系列之微信告警篇

suiw9 2024-11-16 00:33 23 浏览 0 评论

前面我们讲到了Zabbix的邮件告警的相关内容,效果也还不错,但是唯一的缺点就是不具备及时性,当然还有另外一种短信告警,具备及时性高、无需要网络也能告警的特点,唯一的缺点就是收费,那么有没有一种能够白嫖的方式呢?当然有,就是今天利用企业微信的方式告警。不过该方式有一个比较重要的前提,Zabbix server需要有访问外网的能力,接收端也需要有访问互联网的能力。

正文

测试环境

Zabbix版本为5.2.3,Python版本为2/3

企业微信

目前企业微信已经可以开放给个人申请了,进入企业微信官网,只需要完成以下几步即可。

脚本内容

脚本里根据上面企业微信的操作替换几个地方,分别是toparty、agentid、corpid、corpsecret即可

Python2

#!/usr/bin/python2
#_*_coding:utf-8 _*_
import urllib,urllib2
import json
import sys

reload(sys)
sys.setdefaultencoding('utf-8')
def gettoken(corpid,corpsecret):
    gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
    print  gettoken_url
    try:
        token_file = urllib2.urlopen(gettoken_url)
    except urllib2.HTTPError as e:
        print e.code
        print e.read().decode("utf8")
        sys.exit()
    token_data = token_file.read().decode('utf-8')
    token_json = json.loads(token_data)
    token_json.keys()
    token = token_json['access_token']
    return token
def senddata(access_token,user,subject,content):
    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
    send_values = {
        "touser":"$1",   
        "toparty":"12",        
        "msgtype":"text",     
        "agentid":"1000011",  
        "text":{
            "content":subject + '\n' + content
           },
        "safe":"0"
        }
    send_data = json.dumps(send_values, ensure_ascii=False).encode('utf-8')
    send_request = urllib2.Request(send_url, send_data)
    response = json.loads(urllib2.urlopen(send_request).read())
    print str(response)

if __name__ == '__main__':
    user = str(sys.argv[1])     
    subject = str(sys.argv[2])  
    content = str(sys.argv[3])  

    corpid =  '修改成你的corpid'     
    corpsecret = '修改成你的corpsecret'
    accesstoken = gettoken(corpid,corpsecret)
    senddata(accesstoken,user,subject,content)

Python3

#!/usr/bin/python3
#_*_coding:utf-8 _*_
import urllib.request
import json
import sys

def gettoken(corpid,corpsecret):
    gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
    print  (gettoken_url)
    try:
        token_file = urllib.request.urlopen(gettoken_url)
    except urllib.error.HTTPError as e:
        print (e.code)
        print (e.read().decode("utf8"))
        sys.exit()
    token_data = token_file.read().decode('utf-8')
    token_json = json.loads(token_data)
    token_json.keys()
    token = token_json['access_token']
    return token

def senddata(access_token,user,subject,content):

    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
    send_values = {
        "touser":"$1",   
        "toparty":"1",        
        "msgtype":"text",     
        "agentid":"1000002",  
        "text":{
            "content":subject + '\n' + content
           },
        "safe":"0"
        }
#    send_data = json.dumps(send_values, ensure_ascii=False)
    send_data = json.dumps(send_values, ensure_ascii=False).encode('utf-8')
    send_request = urllib.request.Request(send_url, send_data)
    response = urllib.request.urlopen(send_request)
    msg = response.read()
    print ("returned value : " + str(msg))


if __name__ == '__main__':
    user = str(sys.argv[1])     
    subject = str(sys.argv[2])  
    content = str(sys.argv[3])  

    corpid =  '修改为你的corpid'     
    corpsecret = '修改成你的corpsecret'
    accesstoken = gettoken(corpid,corpsecret)
    senddata(accesstoken,user,subject,content)

脚本导入

将脚本导入指定目录,那么目录在哪呢?可以查询你的zabbix server配置文件。

cat /etc/zabbix/zabbix_server.conf | grep AlertScriptsPath

复制上面的脚本到文件里

vim wechat2.py
###添加脚本内容进去###
vim wechat3.py
###添加脚本内容进去###
添加执行权限
chmod +x wechat2.py
chmod +x wechat3.py
修改文件所属用于
chown zabbix:zabbix wechat2.py
chown zabbix:zabbix wechat3.py

脚本测试

./wechat2.py 1 1 1 
./wechat3.py 1 1 1 

有很多同学在执行测试的时候会遇到下图问题,原因其实很简单,因为你的python要么没装,要没路径不对

查询python位置

whereis python

这里看出我并没有python,所以需要安装,CentOS7的朋友注意,7里的Python2和Python3要共存需要别的方法,所以建议用pyhton2(默认自带),CentOS8则可以利用DNF直接安装。

dnf -y install python2
dhf -y install python3

再进行测试

Zabbix Server调用脚本

1.创建告警媒介

2.填入相关参数,脚本名称一定对应好,包括后缀,传递参数分别为{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESSAGE},填好确定即可。

3.测试脚本

4.创建动作

动作可以针对主机、主机组、触发器等等,可以自行研究,我就不写那么细了。

5.用户媒介定义

点击进入下图用户

模拟故障

将监控的交换机的VLAN1进行shutdown操作

如何使用公众号类型告警

当然有朋友会问,这还得需要下载软件,太麻烦了,所以企业微信提供了一个解决方案,就是类似于公众号推送。

1.打开企业微信后台,用手机微信关注下图的二维码


总结

整个微信告警部分其实最难就是这里,相反机器人告警的方式比较简单,只需要调用API即可,不需要改这么复杂的参数,后续我会补充钉钉和微信机器人的告警,当然飞书的也可以,看你们的意愿,通过和一些网上同学聊天,他们遇到的问题其实还是没有用心去理解这么做的一些含义,我不可能每一个都讲一遍,那样篇幅太长,所以在测试的时候要思考一些问题发生原因,很多问题在互联网上是可以找到的,最后路漫漫其修远兮,吾将上下而求索,祝大家新年快乐!

相关推荐

俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)

发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...

如何强制所有流量使用 HTTPS一网上用户

如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...

https和http的区别(https和http有何区别)

“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...

快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别

什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...

简述HTTPS工作原理(简述https原理,以及与http的区别)

https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...

21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)

HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...

一次安全可靠的通信——HTTPS原理

为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...

为什么有的网站没有使用https(为什么有的网站点不开)

有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

图解HTTPS「转」(图解http 完整版 彩色版 pdf)

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...

HTTP 和 HTTPS 有何不同?一文带你全面了解

随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...

HTTP与HTTPS的区别,详细介绍(http与https有什么区别)

HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...

一文让你轻松掌握 HTTPS(https详解)

一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...

如何在Spring Boot应用程序上启用HTTPS?

HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...

一文彻底搞明白Http以及Https(http0)

早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...

取消回复欢迎 发表评论: