如何用 Python 发送告警通知到微信?(文末送书)

Python客栈

共 3027字,需浏览 7分钟

 ·

2022-01-15 18:27

常见的告警方式有:邮件,电话,短信,微信。

短信和电话,通常是收费的(若你有不收费的,可以评论分享一下),而邮件又不是那么及时,因此最后我选择微信通知。

这里说的微信,是企业微信,而我之前用注册过个体户的执照,因此可以很轻松就可以注册自己的企业微信。

1. 新建应用

登陆网页版企业微信 (https://work.weixin.qq.com/),点击 应用管理 -> 应用 -> 创建应用

上传应用的 logo,输入应用名称,再选择可见范围,成功创建一个告警应用

2. 获取Secret

使用 Python 发送告警请求,其实就只使用到两个接口

  • 获取 Token :https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={secret}

  • 发送请求:https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}


可以看到,最重要的是 corpid 和 secret:

  • corpid:唯一标识你的企业

  • secret:应用级的密钥,有了它程序才知道你要发送该企业的哪个应用

corpid 可以通过 我的企业 -> 企业信息 获取

而 secret 获取相对麻烦一点,点击前面创建应用,点击 查看 secret

然后再点击发送就会发送到你的企业微信上

最后将 corpid 和 secret 填入下面的常量中。

import json
import datetime
import requests

CORP_ID = ""
SECRET = ""

class WeChatPub:
    s = requests.session()

    def __init__(self):
        self.token = self.get_token()

    def get_token(self):
        url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={CORP_ID}&corpsecret={SECRET}"
        rep = self.s.get(url)
        if rep.status_code != 200:
            print("request failed.")
            return
        return json.loads(rep.content)['access_token']


    def send_msg(self, content):
        url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + self.token
        header = {
            "Content-Type""application/json"
        }
        form_data = {
            "touser""@all",
            "toparty"" PartyID1 | PartyID2 ",
            "totag"" TagID1 | TagID2 ",
            "msgtype""textcard",
            "agentid"1000002,
            "textcard": {
                "title""服务异常告警",
                "description": content,
                "url""URL",
                "btntxt""更多"
            },
            "safe"0
        }
        rep = self.s.post(url, data=json.dumps(form_data).encode('utf-8'), headers=header)
        if rep.status_code != 200:
            print("request failed.")
            return
        return json.loads(rep.content)

然后就可以通过 send_msg 函数发送消息了。

wechat = WeChatPub()
now = datetime.datetime.now()
timenow = now.strftime('%Y年%m月%d日 %H:%M:%S')
wechat.send_msg(f"gray\">{timenow}
 阿里云 cookie 已失效
请尽快更换新的 cookie
")

只要你的企业微信没有关闭通知的权限,那你的手机立马就会弹出这个告警信息。

简单几步就对接了企业微信,实现了手机的实时告警功能,推荐有企业微信的同学使用。

当然一定有更多,更好用的实现方法,我只是我选择了其中一种,大家有不错的思路也可以分享在评论区。


Python客栈联合北京大学出版社送书啦~~
 

推荐理由:

本书介绍了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介、发送请求、提取数据、使用多个线程和进程进行并发抓取、抓取动态页面中的内容、与表单进行交互、处理页面中的验证码问题及使用Scrapy和分布式进行数据抓取,并在最后介绍了使用本书讲解的数据抓取技术对几个真实的网站进行抓取的实例,旨在帮助读者活学活用书中介绍的技术。



推荐理由:

本书从人工智能和自然语言处理技术的基础原理讲起,逐步深入自然语言处理进阶实战,并配有实战代码讲解,重点介绍了使用开源技术、人工智能开放平台,以及使用国内外优秀开发框架进行基于规则、统计、深度学习的自然语言处理程序开发,让读者全面掌握理论基础,并学以致用。


推荐理由:

1.104幅图表展示,降低理解难度。
2.知识点丰富,满足机器学习必备数学知识。
3.基于Python编程的“小试牛刀”,检验学习效果。
4.20个“专家点拨”,帮助读者答疑解惑。
5.数学思想和人工智能解决方案的有效实践。
6.提供书中相关案例的源代码,方便读者学习参考。


赠书规则:

活动截止时我们将从本文的留言中选出位幸运粉丝赠送书籍~

注意哦,每人每月仅限一本书籍~


活动截止时间:2022 年 1 月 12 日 16:00 整

兑奖截止时间:2022 年 1 月 13 日 16:00 整


往期推荐

1、死磕苹果,小米飘了?

2、为什么我们现在不再需要杀毒软件了?

3为什么Win11资源管理器和开始菜单卡?

4、国家发布新的支付方式,微信支付宝时代结束了吗?

5、Meta元宇宙OS要黄?300人研发团队解散,关闭VR/AR操作系统研发


点击关注公众号,阅读更多精彩内容
浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报