假设我想监视1000台主机。 对于每个主机,有100个或更多的variables我想要监测:ping,磁盘IO /延迟,RAM释放/交换/等,等等。 每5-10分钟100,000个数据点,保存5年。
什么系统规模这么大?
如果我有10倍的主机数量呢? 那么你会select什么?
在我们真的能给你一个build议之前,你还需要回答几个问题。 对于初学者,你想存储5年的原始数据? 或者是汇总的数据够好? 这比你想象的要重要得多,而这个function本身就可以决定你的select。
当你谈论5年的时间跨度时,你几乎总是在讨论将要卷起的趋势信息,随着时间的推移你将失去精确度。 如果你不汇总数据,那么你正在处理大量的数据,很less的系统(包括软件和硬件)将能够处理它。
幸运的是,这就是为什么RRDtool和循环数据库(RRD)被发明出来的原因。 如果你不认识,那没关系。 您可能不知道名称,但是如果您正在查看开源工具,则几乎可以看到构build于其上的所有内容。 几乎所有的开源程序都会随着时间的推移趋势数据,并给你漂亮的图表,可能是在底层使用RRDtool。 RRDtool创build固定大小的数据库,自动卷起数据并将固定精度存储到指定的限制。 例如,您可能会以5分钟精确度存储30天的数据,30分钟精度的90天数据,1小时精确度的180天数据,1天精度的365天数据,3年数据精度为1周,10年数据精度为1个月。 这是全部可configuration的,并且每次添加新的数据点时,都会计算卷起数据。
现在,一旦确定了您的数据保留要求,您需要弄清楚您计划如何监控系统。 如果有各种各样的设备,特别是如果有很多networking设备,SNMP是标准的。 另外,还有很多设备不能被SNMP以外的其他设备监控,所以至less有一些SNMP支持很重要(例如UPS,发电机,打印机等)。 如果您有很多服务器,则可能需要使用基于代理的系统,在每个要监控的设备上安装监控代理。 这通常会给你更详细的信息,但会大大增加所需的pipe理费用。
接下来,您需要知道您的预计增长超出了“处理X和处理10倍X的东西”。 即使在列出的1K主机上,1K与10K主机是完全不同的野兽。 很多系统会处理1k,但是当你接近10k时,很多时候你需要一个分布式系统来分担负载。 另外,你提到每个系统要监视的100个variables。 。 。 你确定吗? 并不是所有支持监视许多variables的监视系统都是如此。 这是从每个设备拉大量的信息。
最后,当你开始接近大规模时,你需要考虑的不仅仅是监测系统。 以5分钟的分辨率将100个可变数据位从1k(或10k)设备拉回将需要一些相当严重的带宽。 为此做好准备,否则您会发现您的监控系统对您的networking造成了负面影响。 如果您的系统分布在多个站点并且您正在通过WAN链接,这一点尤其重要。
在这个庞大的networking监控规模中,有一些开放源码系统声称具有竞争力,但并不多。 Nagios已经有很长一段时间了,并且已经知道监视1k +系统。 Zenoss同时提供了一个开源的核心产品和一个商业支持的产品,并试图挑战一些“大打者”。 Zabbix是完全开源的公司支持它提供支持。
当涉及到需要监控的数千个设备/系统的大型公司时,最大的参与者是CA的Spectrum / eHealth / Unicenter,IBM的Tivoli套件以及HP的OpenView。 这些都可以处理巨大的规模,但也带有巨大的价格标签。
注意:我的日常工作是实施和维护networking监视工具,我们监视超过5k个networking设备和8k服务器。 find在这些规模上运行良好的工具是很困难的 。
Nagios似乎是这类问题的默认答案,但是在这个尺度上有一些使用它的安装。
在扩展的基础上,它很灵活,易于定制。
我会说Nagios或者Zenoss:
Nagios http://www.nagios.org
Zenoss http://www.zenoss.com
如果configuration正确,任何一个都应该能够处理您的要求。
在工作中,我们使用Opsview 。 它build立在Nagios之上,可以处理录制数据和其他东西。 监控请求由一组监控节点处理,并报告给主站。 如果您有多个数据中心,这可能非常方便,但我们主要将其用于冗余和负载平衡。 我以为它使用RRDtool,但它似乎使用MySQL。
不过,你的要求有点荒谬。 首先,5年的数据可能会超过给定个人主机的使用期限。 其次,你没有提到有关查询这些数据的任何信息。 你只是想要总数来估计configuration? 主机出现故障时是否丢弃数据? 你甚至想深入到特定的主机? 将所有样品存储五年将是一个负担,更不用说存储了。
接下来,假设您实际上将100个采样合并为800字节,则您每年要存储的数据量为每台主机80 MB。 (RRD需要每个样本大约8个字节)。 整个系统每年将消耗80 GB,并且会很难查询。 10倍,你需要谷歌的帮助。 如果你做了一些愚蠢的事情,比如loggingps的结果,那么对你有祸害。
认真的汤姆,告诉我们这次Google发明了什么,或者让你该死的公司在MapReduce和BigTable上写下你需要的东西。 在Google的规模上,认真重新deviseRRD等格式以更好地适应数据冗余可能是最好的计划。
检查这slashdot线程吨的build议;)
http://ask.slashdot.org/story/09/07/08/210241/What-Would-You-Want-In-a-Large-Scale-Monitoring-System
我们使用Zabbix来监控150台主机和10台服务器。
它应该处理您的需求。

我也会build议Nagios,但我真的不确定它是否会存储5年的数据,因为我从来没有在一台机器上运行这么长时间。 除此之外,我没有理由不使用它。