如何用 Python 发送告警通知到微信?(文末送书)
常见的告警方式有:邮件,电话,短信,微信。
短信和电话,通常是收费的(若你有不收费的,可以评论分享一下),而邮件又不是那么及时,因此最后我选择微信通知。
这里说的微信,是企业微信,而我之前用注册过个体户的执照,因此可以很轻松就可以注册自己的企业微信。
# 1. 新建应用
登陆网页版企业微信 (https://work.weixin.qq.com/),点击 应用管理 -> 应用 -> 创建应用
![](https://filescdn.proginn.com/a847f97e9c672ca9130423f33497b6d2/48a4b6cfb161a55d7f1b1ad46b1d1be2.webp)
上传应用的 logo,输入应用名称,再选择可见范围,成功创建一个告警应用
![](https://filescdn.proginn.com/6603ae6db748e67fcca50d583af6e8a7/c1ac32951ac050f8d5ccd24f6ada38d3.webp)
# 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 可以通过 我的企业 -> 企业信息 获取
![](https://filescdn.proginn.com/3699c57bc402fb1eb2eb10bf4b90fba6/18dd28c8a167f384878001e12c70394f.webp)
而 secret 获取相对麻烦一点,点击前面创建应用,点击 查看 secret
![](https://filescdn.proginn.com/1bb0f7a0e55bbdcc097ad80f3abb85a7/37f99ab5e12b7c5192bf6b2ba15c5bf8.webp)
然后再点击发送就会发送到你的企业微信上
![](https://filescdn.proginn.com/363bdcc778f406c7be82f044b1bb4e80/ca744a4773b0ae97e0dfdb0a26a165ea.webp)
最后将 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")
只要你的企业微信没有关闭通知的权限,那你的手机立马就会弹出这个告警信息。
![](https://filescdn.proginn.com/e00043c7df0dbfbd386fd900975ebb14/e7fe2f4b83a1b048f532d645aea831ab.webp)
简单几步就对接了企业微信,实现了手机的实时告警功能,推荐有企业微信的同学使用。
当然一定有更多,更好用的实现方法,我只是我选择了其中一种,大家有不错的思路也可以分享在评论区。
![](https://filescdn.proginn.com/8e6bbfaa3552166dc3e1e1194c3d0b74/1298e0637884e61438eae89e9fe3b628.webp)
![](https://filescdn.proginn.com/fa29d86487e24b4d445b8595afee6497/84c6df5511199ebba595a14a90ca8416.webp)
本书介绍了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介、发送请求、提取数据、使用多个线程和进程进行并发抓取、抓取动态页面中的内容、与表单进行交互、处理页面中的验证码问题及使用Scrapy和分布式进行数据抓取,并在最后介绍了使用本书讲解的数据抓取技术对几个真实的网站进行抓取的实例,旨在帮助读者活学活用书中介绍的技术。
推荐理由:
本书从人工智能和自然语言处理技术的基础原理讲起,逐步深入自然语言处理进阶实战,并配有实战代码讲解,重点介绍了使用开源技术、人工智能开放平台,以及使用国内外优秀开发框架进行基于规则、统计、深度学习的自然语言处理程序开发,让读者全面掌握理论基础,并学以致用。
推荐理由:
1.104幅图表展示,降低理解难度。
2.知识点丰富,满足机器学习必备数学知识。
3.基于Python编程的“小试牛刀”,检验学习效果。
4.20个“专家点拨”,帮助读者答疑解惑。
5.数学思想和人工智能解决方案的有效实践。
6.提供书中相关案例的源代码,方便读者学习参考。
赠书规则:
活动截止时我们将从本文的留言中选出五位幸运粉丝赠送书籍~
注意哦,每人每月仅限一本书籍~
活动截止时间:2022 年 1 月 12 日 16:00 整
兑奖截止时间:2022 年 1 月 13 日 16:00 整
5、Meta元宇宙OS要黄?300人研发团队解散,关闭VR/AR操作系统研发
![](https://filescdn.proginn.com/fa29d86487e24b4d445b8595afee6497/84c6df5511199ebba595a14a90ca8416.webp)