高性能可扩展的python自动化运维框架
2014-12-16 20:40
183 查看
高性能可扩展的python自动化运维框架[作业]
一直在用Python写各种脚本,想做自动化运维平台却有心无力,没有见过大的运维平台怎么做,
自己写的脚本在大的场景下是否靠谱,每当讨论说一些基于ssh获取数据执行操作的方式都会被鄙视。
迷茫大半年找不到方向,最近在reboot系统学习了下,收获很多,很多疑惑和疑难问题终于解开了。
感谢PC老师讲解,程序对系统利用的深入讲解[cpu\内存的利用\系统的特性],
几款典型开源软件源码的网络模型剖析,如何真正控制多线程,守护进程如何fork的,封装socket非阻塞的框架,如何制定传输协议。
有兴趣的同学可以点文章右边→_→的群链接咨询群主试听。还有每2、3周举办免费技术沙龙分享。敬请关注!
以下是这段时间学习的成果,好多优秀的细节无法全面展示.
监控和执行命令流程图
软件目录 [根据需要分分钟复制出一个server,改改操作就好了]
任务控制服务的传输数据
flask数据接口的请求日志
agent的执行日志
agent的4个线程,可随意扩展需求
后台请求页面和数据接口
页面ajax调用数据接口
监控数据出图
哎!前面的数据,6个server同时在一个机器上跑,毫无压力,监控图不好看。。。。我来搞几百个并发shell进程跑跑,把load压上来。
执行命令 [发出ajax请求,agent异步处理,传回入库后,再用ajax动态调用数据接口显示]
总结
此架构非常灵活,任意拆装拼接,如果小,可功能集成于一点,如果大,可随意扩展瓶颈,server全部守护进程方式。一切魔法都封装在nbNet模块中,socket非阻塞,自定义传输协议,QPS几万毫无压力,所有模块全部导入这个nbNet模块,收发接口全部统一,就可随意拼接,3分钟就可以扩展出一个不同功能的server。得此神器,只有想不到没有做不到。
nbNet模块中2个重要功能,已经全部封装好了,只需要调用即可。
1 2 | sendData(sock_a, "reboot", 50003, input) # 发送数据,也可任意发多份给不同server nbNet(self.host, self.port, transfer) # 接收数据 |
其他的server流程基本一致,不做过多重复展示了,文件传输在另外一个分支上做了,暂时没有合并,有这套框架,业务和功能比较好扩展了。
这里关于诸多实际情况都做出了考虑,比如agent睡眠时间漂移,监控数据丢失后时间戳不连续,报警动态加载配置,网络状态不好等等。但还是有很多细节需要逐步完善的地方。
相关文章推荐
- 设计思路.Thinking.基于Python构建一个可扩展的运维自动化平台?
- ansible-python自动化运维框架实例
- 如何基于Python构建一个可扩展的运维自动化平台
- 运维自动化之Python 实现自动配置raid 级别
- 分布式定时任务框架——python定时任务框架APScheduler扩展
- 用python和redis开发高性能监控平台及框架升级过程
- 「python自动化运维」之自动生成配置文件并上传到目标服务器指定的位置
- python Gevent – 高性能的Python并发框架
- python自动化运维学习笔记1- psutil系统性能信息模块
- Python实现Android自动化每日构建框架
- 分布式定时任务框架——python定时任务框架APScheduler扩展
- python之高性能网络编程并发框架eventlet实例
- python自动化单元测试框架 PyUnit
- python+selenium+nose web简单自动化测试框架
- Python自动化运维Django入门
- 高性能tornado框架简单实现restful接口及运维开发实例
- PHP的高性能Server框架Swoole发布C扩展版
- 分布式定时任务框架——python定时任务框架APScheduler扩展
- 高性能tornado框架简单实现restful接口及运维开发实例 推荐
- 分布式定时任务框架——python定时任务框架APScheduler扩展