python开发接口故障码_Python实现设备故障微信报警

工作中,对于网络设备的告警日志我们没有办法即使的查看,而邮件的方式过于鸡肋,这个时候如果可以有个小机器人(Zabbix)帮我们盯着,岂不美哉。今天我们就看看怎么将防火墙的链路中断的日志发送的我们手机的企业微信上。

一、Zabbix介绍

Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理。

二、环境准备企业微信注册填写个人注册信息创建成功后,记录下其唯一的CorpID

企业微信​work.weixin.qq.com创建告警应用收集API需要使用的参数

1、corpid

2、corpsecret

3、AgentidZabbix安装Python3环境

#安装openssl-devel依赖,让python支持https

#获取access_token--请求方式:GET(HTTPS)

yum install -y openssl-devel

#安装gcc编译环境

yum install -y gcc

#下载并安装python3

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz

tar -xzvf Python-3.6.2.tgz

cd Python-3.6.2

./configure --prefix=/usr/local/python3

make && make install

#升级pip版本至最新

/usr/local/python3/bin/pip3 install --upgrade pip

#安装脚本用到的python库

/usr/local/python3/bin/pip3 install requests

#创建存放access_token文件路径

touch /tmp/access_token.log

三、获取access_token

获取access_token是调用企业微信API接口的第一步,相当于创建了一个登录凭证,其它的业务API接口,都需要依赖于access_token来鉴权调用者身份。因此开发者,在使用业务接口前,要明确access_token的颁发来源,使用正确的access_token。

请求方式:GET(HTTPS)

注:此处标注大写的单词ID和SECRET,为需要替换的变量,根据实际获取值更新。其它接口也采用相同的标注,不再说明。

参数说明:

corpid企业ID

corpsecret应用的凭证密钥

权限说明:

每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取

返回结果:

{

"errcode": 0,

"errmsg": "ok",

"access_token": "accesstoken000001",

"expires_in": 7200

}

参数说明:

errcode 出错返回码,为0表示成功,非0表示调用失败

errmsg 返回码提示语

access_token获取到的凭证,最长为512字节

expires_in凭证的有效时间(秒)

注意事项:

开发者需要缓存access_token,用于后续接口的调用(注意:不能频繁调用gettoken接口,否则会受到频率拦截)。当access_token失效或过期时,需要重新获取。

access_token的有效期通过返回的expires_in来传达,正常情况下为7200秒(2小时),有效期内重复获取返回相同结果,过期后获取会返回新的access_token。由于企业微信每个应用的access_token是彼此独立的,所以进行缓存时需要区分应用来进行存储。

access_token至少保留512字节的存储空间。企业微信可能会出于运营需要,提前使access_token失效,开发者应实现access_token失效时重新获取的逻辑。

四、脚本编写脚本存放路径:/usr/lib/zabbix/alertscrip

#!/usr/local/python3/bin/python3

#-*- coding:utf-8 -*-

import requests

import json

import sys

#企业号及应用相关信息

corp_id = 'xxxxxxxxxxx'

corp_secret = 'xxxxxxxxxxxxx'

agent_id = xxxxx

# 存放access_token文件路径

file_path = '/tmp/access_token.log'

def get_access_token_from_file():

try:

f = open(file_path,'r+')

this_access_token = f.read()

print('get success %s' % this_access_token)

f.close()

return this_access_token

except Exception as e:

print(e)

#获取token函数,文本里记录的token失效时调用(token失效时间7200)

def get_access_token():

get_token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (corp_id, corp_secret)

print(get_token_url)

r = requests.get(get_token_url)

request_json = r.json()

this_access_token = request_json['access_token']

五、Zabbix配置配置脚本报警类型

上图脚本参数表示调用脚本时向脚本传入什么参数,参数解释如下

{ALERT.SENDTO} # 发送给谁

{ALERT.SUBJECT} # 告警标题

{ALERT.MESSAGE} # 告警内容配置报警收件人为all触发条件:Fotigate-Group组中的设备出现问题执行向wechat用户发送消息的操作

六、手动触发告警将设备接口ShutDown验证成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值