用python和redis开发高性能监控平台及框架升级过程

关于python应用监控平台的话题


最近的更新:

http://rfyiamcool.blog.51cto.com/1030776/1429847


先说明,这不是人人业务的监控框架,是我在以前公司参与的一个项目。。。

刚入行的时候,对于监控方面,用的是nagios和cacti。 两个都很强大的监控平台,可扩展性也都很不错。要是想用一个平台实现报警和性能信息的展示的话,他俩都需要加点东西。两个的合体可以考虑zabbix。操作和理解都挺简单的。唯一让人不爽的是存在myql里面,国外有个老外可以改到我钟爱的mongodb里面,但是我看不懂,也没有操作成功。。。 php  这个真不会。。。

后来到了大公司后,才发现他们的监控用的多种多样。。。比如业务数据的收集,他们用的更多的是ganglia、graphite之类的产品。监控的话,更多的是自己开发,或者是针对业务对开源的产品二次开发。  基本是这两种。。。

我从去年开始接触公司监控平台的项目,说来做监控平台有段时日啦。

我们的框架一改再改。。。。 我把平台的升级过程和原因给大家说下。


源地址 :  http://rfyiamcool.blog.51cto.com/1030776/1272629


最开始监控的框架:


用gevent撑起并发,redis的mq通信,bottle做的web,mysql做的库,微信做的报警。


085805799.jpg

后期为了扩展做了队列系统,防止行为的堵塞和超多任务进程崩溃。。。存储方面用了mongodb。 考虑到微信接口的不稳定,又加了邮件告警。

源地址 :  http://rfyiamcool.blog.51cto.com/1030776/1272629

121238580.jpg

首先把监控任务的大队列的分离,不做进程间的queue通信了。现把redis独立做队列,并做了监控点的健康状态,分布式的监控点也多了几个,可以写成多进程,也可以是部署到服务器上。

源地址 :  http://rfyiamcool.blog.51cto.com/1030776/1272629

微信的接口时常的出问题和发信的次数,所以用了多个接口进行轮训并状态检测。。。

125242745.jpg

对于被动模式的监控,该项目中只是在websocket应用过。。。

130549536.jpg

小总结:

           首先要确认监控的需求,简单实现页面管理监控items,展现数据。 后期要从各方面改进性能   比如分布式集群的方式  有两种   1  监控点去 被监控点 取数据,在大量主机的情况下可能会慢,可以用队列来解决,也可以用gearman这样的任务派发系统来解决。。。  2   被监控点把数据主动给监控点。这个方法够简单,对于master来说压力也很小,但是缺点也很明显,告警的逻辑方面有点复杂。。。 在这种情况下,master要主动和client的mq进行通信,证明他是活着的,他要是怪了,那把告警的优先度升高。剩下的监控业务和系统信息 如 内存 硬盘啥的,就根据pub过来的信息,进行对比,然后自己通过api接口发微信和邮件。 方式多种多样。。。。  

我们根据需求选择适合自己的业务的监控方式,进行开发。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值