欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用python写一个预警机器人(支持微信和钉钉)

程序员文章站 2022-06-22 13:10:58
背景 线上的系统在运行中,发生故障时怎么及时的通过手机通知到相关人员?当然这是个很简单的需求,现有的方法有很多,例如: 如果我们用的云产品,那么一般都会有配套对应的监控预警功能,根据需要配置一下即可,支持短信,邮箱通知。 如果我们已经搭建了一套运维监控系统,比如zabbix之类的,那么我们学会zab ......

背景

线上的系统在运行中,发生故障时怎么及时的通过手机通知到相关人员?当然这是个很简单的需求,现有的方法有很多,例如:

如果我们用的云产品,那么一般都会有配套对应的监控预警功能,根据需要配置一下即可,支持短信,邮箱通知。

如果我们已经搭建了一套运维监控系统,比如zabbix之类的,那么我们学会zabbix,然后配置也即可,支持短信,邮箱通知。

但如果我们希望有一个比较简单轻便,能灵活定制和快速实施的方法,又能同时支持微信和钉钉通知呢?以下就介绍这样一个基于python的简单方法,暂且起个名字叫robotprobe。

上路

在开始之前,先定义两种对象,robotprobe将由这两种对象组成。

probe:探针,用于检查检测某项功能,某个指标是否正常,并包含预警相关规则配置。

robot:机器人,发生异常情况时,要发送通知的对象,这里特指微信机器人和钉钉机器人。

probe

用python写一个预警机器人(支持微信和钉钉)
 

urlprobe

用python写一个预警机器人(支持微信和钉钉)
 

sqlprobe

用python写一个预警机器人(支持微信和钉钉)
 

其他

其他类型的probe则可以根据实际需要*扩展实现。

robot

用python写一个预警机器人(支持微信和钉钉)
 

wechatrobot

用python写一个预警机器人(支持微信和钉钉)
 

dingtalkrobot

用python写一个预警机器人(支持微信和钉钉)
 

微信vs钉钉

微信机器人基于wxpy实现,wxpy功能很丰富,基本微信上收发消息相关的功能都可以用它来实现,这篇文章有个挺好的使用示例,我们这里只用到发送消息的功能,微信虽然功能,但有个缺点就是用wxpy发消息(其实是网页版微信),账号有可能被封,另外新注册的微信号也是不能用的。

钉钉机器人基于dingtalkchatbot实现,优点就是官方默认提供机器人的功能,虽然发消息有限制,但一可以控制发消息的频率,二也可加多个机器人去分流,缺点就是只能发消息,不收消息,进而根据收到的消息做定制回复。

demo示例

用python写一个预警机器人(支持微信和钉钉)
 

依赖

certifi==2019.3.9

chardet==3.0.4

dingtalkchatbot==1.3.0

future==0.17.1

idna==2.8

itchat==1.2.32

pymysql==0.9.3

pypng==0.0.19

pyqrcode==1.2.1

requests==2.21.0

requests-toolbelt==0.9.1

schedule==0.6.0

urllib3==1.24.1

wxpy==0.3.9.8