企业微信+python实现监控服务器状态和实时查询数据

所需环境:1.云服务器,有独立公网ip,我这里系统版本为:CentOS Linux release 8.0.1905 (Core)
2.企业微信的管理员帐号,需要创建应用
3.python版本:3.6.5
本文主要介绍两个功能:1.python端向手机端的企业微信发送消息,可以实现定时检查服务器运行状态,或者实时发送报警消息。2.手机端的企业微信向python端发送消息,python端作出应答,可以实现查询服务器状态,或者其他关心的内容。
代码已上传至https://github.com/lixiang1991/watcher.git

一、企业微信设置

1.1创建应用

进入企业微信后台,应用管理->应用->自建应用,上传logo,设置名称和成员即可创建成功。此时可以得到AgentId和Secret,这个是自动生成的,记下来,后续会用到。另外还需要用到企业id,在企业微信后台中“我的企业”菜单可以查看。

1.2企业微信api

api代码参考官方提供的https://github.com/sbzhu/weworkapi_python
其中WXBizMsgCrypt.py是用于消息的加解密,如果不需要接收来自应用的消息,则用不上它。

1.3接收消息

企业微信后台,进入自建的应用管理页面,点击“接收消息”框中的“设置API接收”,随机获取Token和EncodingAESKey,记下来,会用到。url需要设置为python端开启的服务端接口,如我这里设置为
http://ip:5555/wxpush/

二、python端

2.1监控系统状态

我这里通过psutil获取系统的cpu、内存、硬盘、网络状态以及登录用户。
每分钟查询一次系统状态,如果出现异常情况,就直接发送消息到我的手机上,效果图:
服务器监控

2.2查询数据

查询数据的流程为:手机端在应用中发送消息,企业微信可以转发到python端后台,经过处理后发送给企业微信,再转发到手机端。
在python端使用flask开启服务,最重要的是配置地址代码@app.route('/wxpush/', methods=['GET', 'POST'])这里的斜杠和POST都不能少。
另外有个坑需要注意,官方api中wxcpt.EncryptMsg函数可以实现加密数据并发送到企业微信,数据格式在官方示例中是json对象,实际应该使用xml,否则消息发送给企业微信时得不到任何反馈。
效果图:
加粗样式

猜你喜欢

转载自blog.csdn.net/KanShiMeKan/article/details/107778707
今日推荐