MyException - 我的异常网
当前位置:我的异常网» 开源软件 » 开源服务内部监控系统(1) graphite简介

开源服务内部监控系统(1) graphite简介

www.MyException.Cn  网友分享于:2015-08-26  浏览:0次
开源服务内部监控系统(一) graphite简介

开源监控系统,大名鼎鼎的有nagois,catis。公司就有运维采用nagios作服务器与服务状态监控,同时结合插件提供邮件短信报警功能;catis通过snmp协议对服务器进行监控,利用RRDTool绘制漂亮的报表供你做性能分析。
这些是运维人员的利器,然而服务开发人员却很少去使用这样的工具,因为它们难以做到对我们开发的服务内部运行状态的监控。假如,你想监控自己开发服务的响应时间,五分钟一个点去绘制报表,或者监控你的服务各个时间内部缓存命中率等信息,这些工具基本帮上不忙。

常用方案

为了满足这类需求,很多时候,开发人员会是自行开发一套监控系统,将服务内部的状态,定时发往监控服务器,将这些状态存入数据库,然后自行汇制报表。如果你要监控的服务是个集群的话,就还需要解决监控数据汇总的问题。
另一种常用方案,将各种状态数据打印到日志文件中,定时将这些日志进行汇总,然后对汇总结果运行job分析(有些是汇总到hadoop中,跑mapreduce job),这样做的话监控效果的实时性较差。
为了避免上述的工作量,我们接触并使用了两种可用于服务内部数据监控,提供出色报表效果的的开源系统,分别是Graphite与Ganglia。

Graphite

Graphite给我最大的体会是它使用方式的简单易用。catis采用snmp协议,意味着需要在被监控节点上安装snmp代理;ganglia的监控也需要你在被监控节点上安装gmond用于采集信息。Graphite使用简单的文本协议,只需要简单地通过TCP socket向graphite server发送文本数据

quentinxxz.server.count  1234 1440245016

其中quentinxxz.server.count是一项具体的监控指标的名称, 1440245016是数据产生的时间戳,1234是该时间截下的指标数值。随后你就可以在graphite web上看到相应的数据曲线。
Graphite使用python实现,主要包含三个部份:

1.whisper

Whisper is a fixed-size database, similar in design to RRD (round-robin-database)

whipser是一个固定文件大小的数据库。这意味着whipser的数据文件被创建时具有固定的大小。
例我们对quentinxxz.server.count条目,在/opt/graphite/conf/storage-schemas.conf文件中
做如下配置

[quentinxxz]
pattern = quentinxxz.server.count
retentions = 1min:50d,10min:50d

1min表示以1分种为精度记录一个点,50d表存储50天。所以创建文件的需要保存的点数量,应为1 * 60 * 24 * 50.
whisper另一个有趣的地方是其强大的聚合功能,上述配置中10min表示我们配置的另一精度,whisper会根据我们指定的聚合方式(例如,取10个点中的最大值,最小值,平均值),按照10min一个点的精度将结果存储到另一个存储区中。具体聚合方式的配置位于/opt/graphite/conf/storage-aggregation.conf文件中。
此外,RRD是不接收先于当前最近时间截的update的,而whisper则可以做到(但是这种需求好像不多)。关于更多RRD与whisper的比较,可以参考文档 http://graphite.wikidot.com/whisper

2. carbon (监控数据的 Twisted 守护进程)

Carbon是基于Twisted实现,是Graphite的后端实现。
Carbon的主要作用,是接收被监控节点的连接,收集各个指标的数据,将这些数据写入缓存并最终持久化到whisper存储文件中去。Carbonr能保证Graphite web 绘制出实时接到的指标更新,其原理也很简单位,有点类似lucence,carbon接收到的数据会先存在缓存中,然后再一起写入whisper的硬盘存储。Graphite web通过向carbon-cache发起请求,会同时查询位于缓存与硬盘中的数据。

3. graphite-web

Graphite web是基于Django实现的webapp,其主要功能自然是绘制报表与展示。我不并建议直接使用Graphite web,因为尽管其功能还是比较强大,但界面让我觉得丑得要死。这里我推荐使用第三方的一个Graphite前端开源应用Tessera。
使用Tessera的前提还是需要Graphite web的安装,因为它会直接请求Graphite web获取数据。Tessera的界面还是相当酷炫的,比较符合技术人员的审美。这是它吸引我去使用Graphite的一个重要的加分项。
此外,其灵活的配置,可以让我们自由组合,我们的Dashboard。 不多说,直接上图。



 

Graphite使用总结

个人使用感受,Graphite配合Tessera,最主要的优点是在于界面简洁漂亮,传输协议简单。其的缺点在于,当你的应用是一个大集群时,目前Graphite没有为你把集群中来自不同服务器的数据整合汇总的能力,例如,对集群中有10个搜索结点的缓存命中情况进行监控,就需要采用10个不同的指标名称(一般在其中加入主机名区分),意味着10条不同的曲线,但无法直接利用Graphite进行汇总成一个指标或曲线,让你看到搜索集群整体的缓存命中情况。

 

20150822首发于3dobe.com   http://3dobe.com/archives/160/

iteye链接: http://quentinXXZ.iteye.com/blog/2237318

文章评论

Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
旅行,写作,编程
旅行,写作,编程
每天工作4小时的程序员
每天工作4小时的程序员
我是如何打败拖延症的
我是如何打败拖延症的
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
一个程序员的时间管理
一个程序员的时间管理
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
鲜为人知的编程真相
鲜为人知的编程真相
那些争议最大的编程观点
那些争议最大的编程观点
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
老程序员的下场
老程序员的下场
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
总结2014中国互联网十大段子
总结2014中国互联网十大段子
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
编程语言是女人
编程语言是女人
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员和编码员之间的区别
程序员和编码员之间的区别
我的丈夫是个程序员
我的丈夫是个程序员
漫画:程序员的工作
漫画:程序员的工作
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
如何成为一名黑客
如何成为一名黑客
程序员必看的十大电影
程序员必看的十大电影
程序员的鄙视链
程序员的鄙视链
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员应该关注的一些事儿
程序员应该关注的一些事儿
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
10个调试和排错的小建议
10个调试和排错的小建议
程序员都该阅读的书
程序员都该阅读的书
中美印日四国程序员比较
中美印日四国程序员比较
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
 程序员的样子
程序员的样子
代码女神横空出世
代码女神横空出世
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有