日期:2014-05-16 浏览次数:20397 次
真正有必要存储的数据可能有两个
1) 应用的历史状态信息
2) 应用的监控项数据
早起的开源监控系统,如cacti、nagios和ganglia,采用的是RRD,这种做法的好处是占用空间小,而且数据点的聚合是自动完成的,不需要监控系统的开发者自己开实现,另外出图也比较方便
但它的确点也不少:
1) 数据的提取和迁移非常的不方便
2) 聚合点的调整不方便
3) 监控数据的后期统计和分析十分不便
4) 由于它的出图是直接保存为图片格式的导致传输成本更大
这几年开始,不少监控系统如zabbix开始采用RMDB来存储监控项的数据,个人认为这种做法,应该是各大互联网公司的监控系统的主流做法,监控系统的数据存储具有以下特点:
1) 大量的写操作,但是写操作相对均匀,突发现象较少
2) 对时间的敏感度不是特别高,特别适合批量写的做法
3) 读操作较少(相对于写操作),单次读取的数据量较大
4) 且一般只做插入,不做变更
对于以mysql为代表的关系型数据库而言,经过调优以后,每秒至少可处理 10000+的写请求,再考虑读写分库的做法,对于一家拥有数万台机器的公司而言,我相信以关系型数据库作为存储,应该也是没有问题的