Skip to content

Monitoring and Metrics

Calvin Xiao edited this page Dec 17, 2013 · 4 revisions

Overview

这个领域包含Metrics数据的收集、存储、显示与告警四个领域.\ 其中收集又包括系统信息(CPU/内存)或第三方服务(MySQL),及应用、业务数据(TPS)两条分支。\ 有繁多的开源系统,各自覆盖了其中一个或多个领域。

每个软件只做自己的一部分,效果比大而全的系统效果要好。

Collectd

专门的系统数据采集项目: http://collectd.org/ ,基于C。

它的插件机制支持收集CPU/内存之外,也可以收集其他系统信息如Redis,MySQL,还有JMX的插件,也可以自己写脚本收集。支持将结果写到本地的RRDTool,或者远程的Graphite,或者mongodb,csv文件,http等。 还有Nagios插件将数据发给Nagios。

Metrics Library

Java开源的应用Metrics库有两个:Yammer CodehaleNetflix Servo,其中Netflix Servo完全不成熟,而Yammer Codehale也有种种不如意的地方(详见Metrics Library)

另外Statsd是另一个跨语言的有趣实现,是一个Node.js应用,开着TCP端口,所有metric数据都会实时发给它,它10秒汇总后再发给Graphite或其他地方。但全部metric都在网络上传输有点狠,还是更愿意 Yammer Codehale这种在JVM内计算再发送的方式。

SpringSide最后的做法是汇总了Yammer Codehale 和 Statsd 的优点,重新写了一次。

Graphite

Graphite基于Python,有三部分,一个是基于Twist的TCP Server,负责收集数据,然后存储成类似于RRDTool格式的精度递减数据,然后提供一个基于Django的Web应用,支持Restful的URL,输出图片或JSON数据,支持在URL里带有各种有用的函数。不考虑性能,Graphite非常完美。