用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版,其中可以有 ...
一周排行
  • 在使用zabbix的过程中,我们经常有这样的需求:查看CPU或内存等监控项在某一时间段内的graph曲线图.通常的做法是进入"Latest data"界面,找到主机的监控项,点击右侧的" ...
  • alter table MonthEnd_Unit   add MEU_IsImport bit null default(0) go EXEC sys.sp_addextendedproperty @name=N' ...
  • 按照thrift官网上的文档进行安装,步骤如下: 1. 安装boost ./bootstrap.sh -prefix=PATH_TO_BOOST sudo ./b2 threading=multi address-m ...
  • 全球最大的面向小企业的外包与众包网站Freelancer.com,近期宣布了去年年底增长最快的50大在线求职工种.众所周知,FreElancer.com每季度都会发布网络求职工作动态,这些求职动态有助于求职者发掘更多 ...
  • 今天在研究JAX-WS,偶然发现java6的中文API在javax.xml.ws包下丢了一些annotation,也是很偶然发现这种情况,我在写java代码,发现可以用的annotation,但是在中文api里找不到 ...
  • 按CTRL+SHIFT+F (Find in files),勾上支持正则表达式,然后输入搜索内容: ^:b*[^:b#/]+.*$找到最后一行就是结果
  • 在Photoshop中自带有一些"图案",这些"图案"可以通过执行"填充"命令或"图案叠加"图层样式应用于图像.但许多时候这些原有的&q ...
  • By silent        “十年之前,我不认识你你不属于我,我们还是一样陪在一个陌生人左右,走过渐渐熟悉的街头.”大概,怀旧已经成为我们这个时代的主旋律,所以陈奕迅的这首<十年>红遍大江南北,成为 ...
  • 新华网广州2月24日电(记者刘大江)广东省人力资源和社会保障厅有关负责人24日说,广东省目前企业缺工约90万人,主要集中在劳动密集型行业,这种缺工现象仍适度可控.      这是记者从广东省人力资源和社会保障厅24日 ...
  •   打开一个工作簿. expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOn ...