用Python实现多站点运维监控
在小型公司里如果产品线单一的话,比如就一个app, 一般1~2个运维就够用了。如果产品过于庞大,就需要多个运维人员。
但对于多产品线的公司来说,运维人员就要必须分多个人负责,因为超过200个站点让1个人维护,那工作量是巨大的,就单单给开发的沟通时间,估计就要占用一整天时间了。
目前我所在的公司站点非常多,为管理方便,之前我们这里是实行过一段叫站长制的方式,就是不同人承担不同的项目维护,每个人就是自己所负责项目的站长,这个站长制实行完后,就有个监控问题,之前只要站点有问题,是每个人都可以收到,但为了防止报警泛滥,所以就需要把监控改成故障站点只发给负责该站点的站长。

有了这个背景,我们今天就来实现这个需求,脚本基本实现首先要有一个能够报警的函数,还需要一个检查站点是否故障的函数,最后一个函数是如果站点恢复后,要重新加入要监控的列表中,到这基本差不多了,但如果站点太多,用循环去检查还是效率太低了点,所以我们考虑采用线程并发执行。
如果都想清楚了,就可以开始着手我们代码的编写了。
首先导入我们所需要的模块:

然后定义要检查的站点列表和报警邮件发送人:

接下来实现检查是否站点故障函数:

这个函数就是用requests检查站点返回的状态码,如果是200就认为正常,否则就把该站点加到临时的一个字典中,然后从检查字典中删除该站点。
因为站点偶尔出现问题不代表是站点问题,也可能是网络抖动,所以重新检查站点是否故障要等待一个固定时间,实现如下:

这个函数就是从临时字典中取出第一次检查出有问题的站点,15分钟后再次检查,如果返回200,就发送邮件,并从临时字典中移除,重新加入监控列表中,如果仍然未恢复,就要发送报警邮件了。
最后,我们采用并发的方式执行函数:

如果到这里就算结束这篇文章, 大家拿着脚本肯定是不能运行的。
因为少代码,有兴趣的也可以sleep 2分钟,仔细再看看,是否发现漏掉了什么?是的,我还没给出发报警邮件的函数代码,不但没贴而且不妨告诉大家我是故意的,之所以没直接给呢
是因为现在报警方式太多了,我建议大家在这个脚本基础上进行修改实现自己想要的报警方式
就当是留个作业吧,毕竟多动手才能提高编程水平,其它不多说了
用Python实现多站点运维监控的更多相关文章
- 运维监控-Open-Falcon介绍
运维监控-Open-Falcon介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Open-Falcon 介绍 监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事 ...
- 优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》
优化系统资源ulimit<高性能Linux服务器构建实战:运维监控.性能调优与集群应用> 假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10 ...
- 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》
优化Linux内核参数/etc/sysctl.conf sysctl <高性能Linux服务器构建实战:运维监控.性能调优与集群应用> http://book.51cto.com/ar ...
- CentOS服务器运维监控Nagios(一)
CentOS下搭建Nagios 王尚 2014.11.09 操作系统:CentOS-6.5-i386-bin-DVD1.iso 安装在VM中进行测试的. 本章需要的软件链接: php-5.3.2.ta ...
- 运维监控-Zabbix Server 使用微信 WeChat 告警
运维监控-Zabbix Server 使用微信 WeChat 告警 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 微信公众号告警每个一天只支持1000次告警,如果超出这个次数了就不 ...
- 运维监控-Zabbix Server 使用QQ SMTP发送邮件报警及定制报警内容
运维监控-Zabbix Server 使用QQ SMTP发送邮件报警及定制报警内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客采用腾讯邮箱,想必大家都对QQ很了解,所以 ...
- 运维监控-使用Zabbix Server 创建 Actions
运维监控-使用Zabbix Server 创建 Actions 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. zabbix的action默认是关闭的,因此我们想使用它就得先启用哟. ...
- 运维监控-使用Zabbix Server 创建触发器Triggers
运维监控-使用Zabbix Server 创建触发器Triggers 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.点击相应主机的触发器 2>.点击创建触发器 ...
- 运维监控-使用Zabbix Server 添加自定义 item
运维监控-使用Zabbix Server 监控自定义 item 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客就直接开门见山如何使用Zabbix Server 监控自定义 ...
随机推荐
- disconf实践(一)Ubuntu16.04部署disconf
在企业中,随着公司业务的扩张,用户量的增大,单一节点应用无法支撑正常的业务逻辑,比较常见的现象是访问速度变慢,甚至超时,严重时可能会造成系统宕机.为了尽量减少宕机的风险,单一节点系统需要进行水平扩展, ...
- Java性能监控
Java性能监控 上次介绍了如何使用jvisualvm监控java,今天做进一步讲解!Java性能监控主要关注CPU.内存和线程. 在线程页中,点击线程Dump,可以生成threaddump日志,通过 ...
- openstack neutron 简单理解
分析1)位于最上层的Neutron Server充当一个门派中的“掌门人”角色(RESTful Server),负责接受来自外部门派(项目)的API请求,比如Nova API创建网络的请求.2)位于中 ...
- 404 Note Found 队-Alpha 事后诸葛亮
目录 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结: 本小组和其他组的评分 分工和贡献分 全组讨论的照片 问题 第一组提问回答:爸爸饿了队 第二组提问回答:拖 ...
- RAC日常维护命令
olsnodes -n 查看节点个数 crs_stat -t 查看RAC中各节点的资源状态 crs_stat -p 查看RAC的节点的配置 crsctl命令: 对于crsctl命 ...
- angular4 防二次重复点击
监听click事件, 默认三秒钟内的点击事件触发第一次的点击事件,也可以通过throttleTime自定义时间 只触发第一次 /** * <div (throttleClick)="g ...
- webpack4.26的详细配置,包含babel, eslint, postcss, 及各种所需loader,内含大量注释
github地址:https://github.com/qianxiaoning/demo-webpack4.26 内含详尽注释 欢迎大家star或者fork呀~ 目录结构: completeDemo ...
- [教学] Delphi IDE 文件搜寻功能
Delphi IDE 提供了一个方便的文件搜寻功能,操作如下: 点 Search 选单内的 Find in Files... 例如我们想搜寻 JFile 需要引用那一个源码,可输入如下: 输入关键字: ...
- 初识HDFS原理及框架
目录 HDFS是什么 HDFS的优缺点 HDFS的框架 HDFS的读写流程 HDFS命令 HDFS参数 1. HDFS是什么 HDFS(Hadoop Distributed File System)是 ...
- Zeta--S3 Linux抓取一帧YUV图像后使用硬件编码器编码成H.264
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <getopt.h&g ...