日期:2014-05-16  浏览次数:20397 次

我的监控世界观(4) -- 监控数据的存储 RRD or RMDB OR Hbase

真正有必要存储的数据可能有两个

1) 应用的历史状态信息

2) 应用的监控项数据


1. RRD

早起的开源监控系统,如cacti、nagios和ganglia,采用的是RRD,这种做法的好处是占用空间小,而且数据点的聚合是自动完成的,不需要监控系统的开发者自己开实现,另外出图也比较方便

但它的确点也不少:

1) 数据的提取和迁移非常的不方便

2) 聚合点的调整不方便

3) 监控数据的后期统计和分析十分不便

4) 由于它的出图是直接保存为图片格式的导致传输成本更大


2. RMDB

这几年开始,不少监控系统如zabbix开始采用RMDB来存储监控项的数据,个人认为这种做法,应该是各大互联网公司的监控系统的主流做法,监控系统的数据存储具有以下特点:

1) 大量的写操作,但是写操作相对均匀,突发现象较少

2) 对时间的敏感度不是特别高,特别适合批量写的做法

3) 读操作较少(相对于写操作),单次读取的数据量较大

4) 且一般只做插入,不做变更


对于以mysql为代表的关系型数据库而言,经过调优以后,每秒至少可处理 10000+的写请求,再考虑读写分库的做法,对于一家拥有数万台机器的公司而言,我相信以关系型数据库作为存储,应该也是没有问题的


3.Hbase

以TSD作为代表,以Hbase 来存储监控项数据
这个做法的好处是存储空间可以无限扩容,提取速度也比较快,因为笔者对Hbase 也不是特别了解,因此也不敢妄下结论,但是总是觉得用它来作为存储,有些杀鸡用牛刀的感觉。