用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做的库,微信做的报警。




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

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

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




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

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

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

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




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

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




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

小总结:

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

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

本文出自 “峰云,就她了。” 博客,请务必保留此出处http://rfyiamcool.blog.51cto.com/1030776/1272629

更多相关文章
  • 前言 我们在手机上布局一般是这个样子的: 其中头部对整个mobile的设计至关重要,而且坑也很多: ① 一般来说整个header是以fixed布局,fixed这个产物在移动端来说本身坑就非常多 ② 在Hybrid应用中,Header很多时候扮演了不一样的角色,首先要完成以webview(window ...
  • 原型模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建. 如何使用 ...
  • 引言 面向对象设计原则你知道吗?熟悉吗?除了封装,继承,多态你还了解多少OOD 原则? 确认自己已是OOD精通的"大侠"请绕路. 不知道,也别急,且听我细细道来. 关键词和定义都提供双语,让我们感受下原汁原味,顺便学点专业英语-   基本的面向对象原则(Basic OO prin ...
  • 获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍pythonif条件语句,以及用法.下面附有之前的文章: python3入门之赋值语句介绍 python3入门之print,import,input介绍 python入门之字典 python入门之字符串 python入门之列表和元组 ...
  • <script>for(i=0;i<2;i++){document.write("<form name=form"+i+" action=http://bbs.cn90.net target=_blank></form>&quo ...
  • 一.我们可以重新搭建服务器,也可以利用我前面的搭建方法编译安装,地址: http://wangzan18.blog.51cto.com/8021085/1605480,本次我们使用yum的方法来安装httpd和mysql,我的搭建环境还是我们的CentOS6.6 x86-64位mini版,其中可以有 ...
一周排行
  • (1)Unix操作系统一直是最普遍使用的网络操作系统之一,下列说法不正确的是_______.A)AIX是IBM的Unix系统B)Solaris是SCO公司的Unix系统C)HP-UX与DigitalUNIX都是HP公 ...
  • 在Oracle9i之前,虽然有一个NEW_TIME函数可以改变DATE的时间戳部分,但是还没有专门用来存储时区信息的数据类型.在Oracle9i中,我们可以使用DBTIMEZONE伪字段查询数据库的时区,使用SESS ...
  • 1.为什么学? 2.已知协议列表.
  • 原文地址,不过原文存在2个小错误,我改正了贴上来 android2.0以上,可以用下面这个方法切换动画: overridePendingTransition(R.anim.translate_in, R.anim.t ...
  • 第一遍文章可以入门   第一部份 图片的组成及特征码的定义 做为验证码的识别,那我们首先需要了解的就是基本的原理,这里就是先说清楚这个原理,再往后大家看代码就比较容易明白了(其实本来就比较简单,我说这么多就是为了大家 ...
  • PCA
      理论部分可以看斯坦福大学的那份讲义,通俗易懂.   opencv中有PCA这个类,具体的实现可参考:http://www.cnblogs.com/zcftech/archive/2013/04/13/301741 ...
  • 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版.作者信息和本声明.否则将追究法律责任.http://blog.csdn.net/topmvp - topmvpPhpMyAdmin is a w ...
  • 描述:有N(N2+ (y_j-y_i)2 + (z_j-z_i)2.请求出最大的t,使得N个网页可以聚成K类,其中每个类至少包含一个网页,且任意两个位于不同类中网页的相似度都至少为t. 输入 第一行包含两个整数N和K ...
  • DoNews 4月8日消息(记者 黄阿宝)4月7日,据金名网创办人徐俊透露,在第七届站长年会域名拍卖会上,数字域名最抢手,整场拍卖会总成交额达200多万.据了解,此次拍卖大会采取了现场与线上同时进行拍卖,现场计划拍卖 ...
  • JavaScript基本结构 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC &qu ...