zoukankan      html  css  js  c++  java
  • 用python写一个预警机器人(支持微信和钉钉)

    背景

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

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

    如果我们已经搭建了一套运维监控系统,比如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

  • 相关阅读:
    Jenkins
    ssh 免登录
    linux 远程执行命令
    Java WEB 笔记
    如何用新安装的jdk替换掉Linux系统默认jdk
    修改 File --> New 菜单内容
    java.security.NoSuchAlgorithmException: AES KeyGenerator not available
    JDK历史版本下载地址
    maven 核心概念
    spring boot: ConfigurationProperties
  • 原文地址:https://www.cnblogs.com/Pythonmiss/p/10649497.html
Copyright © 2011-2022 走看看