Python+微信接口实现运维报警


Posted in Python onAugust 27, 2016

说到运维报警,我觉得都可以写个长篇历史来详细解释了报警的前世来生,比如最早报警都是用邮件,但邮件实时性不高,比如下班回家总不能人一直盯着邮箱吧,所以邮件这种报警方式不适合用来报紧急的故障,日常磁盘利用率监控什么的可以用它来报没问题,网站宕机不能访问这种故障,用它就明显不合适了,那对这种业务稳定性要求比较高的业务,后来就发展成了用短信,就是公司买个短信机,提供一个http接口,然后运维人员写脚本把收集到的异常数据写入文件,然后脚本实时检测如果这个文件不为空,就调用短信机接口把文件里的内容发送出去,这种短信的报警方式持续了几年,现在转眼到了移动端时代,随着微信的横空出世,这种短信的方式现在也在慢慢转变了,为啥呢?最简单的1条,因为这玩意有成本,用不是白用的,每月就要交短信费的,如果你说这短信费用能有多少,1条不就1毛吗,但你想想如果机器规模发展到上万台的公司,每台服务器按照按从底层硬件监控、系统层监控、应用层这三个维度去部署监控脚本,这里每项都又分为N个细小项,可想而知每天发的短信数会多么恐怖,当然了这惊人的数据里还有一部分是无效报警,但一样得付钱呀,每月领导批钱的时候都会被报警短信数量所震惊,然后感叹一下就回复了OK,所以说在没有更好的方法前,这种方式有成本但为了业务稳定也必须要投入,但现在微信来了,直接宣布利用我这个平台发消息免费,因为终端还是手机,及时性又没有降低,成本又没有,没有不用的道理,所以这篇咱们就来看看如何调微信接口来实现日常运维消息的报警。

首先,你要去注册一个微信企业号,地址是:https://qy.weixin.qq.com/cgi-bin/loginpage

注册过程如果是为企业使用要选择企业,然后上传企业的资质证明,如果是个人注册,选择团队,然后输入自己的身份证号即可完成注册,其它关键步骤在注册过程中已经提示的很清楚了,比如企业号的名字不能修改等。

注册完进入第二步,在应用中心新建一个应用,例如:运维报警,然后在设置?功能设置?权限管理中点击左边的运维报警应用,在右边会出现CorpID和Secret,这个要记好,脚本中会用到,然后“应用权限“”选择运维报警这个应用,“”通讯录权限“”选择可读,到这里企业号的在平台上的设置完毕,接下来进入代码步骤。

平台上都设置好了,怎么才能发信息呢,这就要使用python去调用发消息的接口了,要给微信企业号发消息,首先要获得一个token,这个是平台提供给的,获得了这个token后才能发消息,所以我们的脚本分2部分,第一要获取token,第二是发消息,代码如下:

#! /usr/bin/env python
 
import requests
import json
 
def get_token():
 
  url='https://qyapi.weixin.qq.com/cgi-bin/gettoken'
  values = {'corpid' : 'your corpid' ,
      'corpsecret':'your corpsecret',
       }
  req = requests.post(url, params=values)  
  data = json.loads(req.text)
  return data["access_token"]
 
def send_msg():
  url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+get_token()
  values = """{"touser" : "1" ,
      "toparty":"1",
      "msgtype":"text",
      "agentid":"1",
      "text":{
        "content": "%s"
      },
      "safe":"0"
      }""" %(str("10.1.1.8 is down"))
  
  data = json.loads(values) 
  req = requests.post(url, values)  
 
if __name__ == '__main__':
  send_msg()

脚本用到了第三方模块requests,  这个模块要比python标准模块urllib,urllib2,更为简洁,可以直接用get(), post(),put(), delete(), head() ,options(),方法对url操作,json模块就是来解析返回的json串,转成python可操作的数据类型,关于如何调用微信发消息这篇就写到这里,欢迎大家留言交流。

Python 相关文章推荐
Python SQLite3数据库操作类分享
Jun 10 Python
Python实现从脚本里运行scrapy的方法
Apr 07 Python
Python内置函数dir详解
Apr 14 Python
python自动翻译实现方法
May 28 Python
django模型层(model)进行建表、查询与删除的基础教程
Nov 21 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
Python headers请求头如何实现快速添加
Nov 03 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
python实现获取Ip归属地等信息
Aug 27 #Python
python简单实现获取当前时间
Aug 27 #Python
python使用psutil模块获取系统状态
Aug 27 #Python
Django Highcharts制作图表
Aug 27 #Python
Python连接DB2数据库
Aug 27 #Python
使用python绘制常用的图表
Aug 27 #Python
python实现实时监控文件的方法
Aug 26 #Python
You might like
php 数组的指针操作实现代码
2011/02/08 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
php中的ini配置原理详解
2014/10/14 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
JavaScript手机振动API
2016/06/11 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
Vue指令指令大全
2019/02/09 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
python 字典中取值的两种方法小结
2018/08/02 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
基于PyTorch中view的用法说明
2021/03/03 Python
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
什么是View State?
2013/01/27 面试题
给海归自荐信的建议
2013/12/13 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
校园新闻稿范文
2015/07/18 职场文书