美文网首页Amazing ArchPythonpython
用python写一个预警机器人(支持微信和钉钉)

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

作者: 9ba4bd5525b9 | 来源:发表于2019-03-31 16:23 被阅读565次

    背景

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

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

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

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

    上路

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

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

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

    Probe

    UrlProbe

    SqlProbe

    其他

    其他类型的Probe则可以根据实际需要自由扩展实现。

    Robot

    WechatRobot

    DingTalkRobot

    微信VS钉钉

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

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

    Demo示例

    依赖

    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

    相关文章

      网友评论

        本文标题:用python写一个预警机器人(支持微信和钉钉)

        本文链接:https://www.haomeiwen.com/subject/fbkubqtx.html