假设我想监控 1,000 台主机。对于每台主机,我想监控 100 个或更多变量:ping、磁盘 IO/延迟、RAM 空闲/交换/等等,等等。每 5-10 分钟 100,000 个数据点,存储 5 年。
什么系统可以规模这么大?
如果我的主机数量是 10 倍会怎样?那么您会选择什么?
答案1
在我们真正给您建议之前,您还需要回答几个问题。首先,您是否想将原始数据存储 5 年?还是汇总数据就足够了?这比您想象的更重要,仅凭这一功能就可能决定您的选择。
当您谈论 5 年的时间跨度时,您几乎总是在谈论趋势信息,这些信息将被汇总,随着时间的推移,您会失去准确性。如果您不汇总数据,您将处理大量的数据,并且很少有系统(软件和硬件)能够处理它。
幸运的是,这就是为什么RRD工具并发明了循环数据库 (RRD)。如果您不认识它,没关系。您可能不知道这个名字,但是如果您正在查看开源工具,您会看到几乎所有东西都建立在它之上。几乎任何随时间趋势数据并为您提供漂亮图表的开源程序可能都在使用 RRDtool。RRDtool 创建固定大小的数据库,可自动汇总数据并将固定精度存储到指定的限制。例如,您可能让它以 5 分钟的精度存储 30 天的数据,以 30 分钟的精度存储 90 天的数据,以 1 小时的精度存储 180 天的数据,以 1 天的精度存储 365 天的数据,以 1 周的精度存储 3 年的数据,以 1 个月的精度存储 10 年的数据。它都是可配置的,并且每次您添加新数据点时,它都会计算汇总数据。
现在,一旦您确定了数据保留要求,您就需要弄清楚您计划如何监控系统。如果设备种类繁多,尤其是如果有很多网络设备,则 SNMP 是标准。此外,有很多设备无法通过 SNMP 以外的任何方式进行监控,因此至少某种程度的 SNMP 支持很重要(例如 UPS、发电机、打印机等)。如果您有很多服务器,您可能需要使用基于代理的系统,在要监控的每个设备上安装一个监控代理。这通常会为您提供更详细的信息,但会显著增加所需的管理开销。
接下来,您需要知道除了“处理 X 和处理 10 倍 X”之外,预计的增长情况是什么。即使在列出的 1k 台主机中,1k 也与 10k 台主机有很大不同。许多系统将处理 1k,但当您接近 10k 时,很多时候您需要一个分布式系统来分担负载。此外,您提到每个系统要监控 100 个变量。。。您确定吗?支持监控这么多变量的监控系统并不多。这是一个很多从每个设备中提取的信息。
最后,当您开始接近大规模时,您需要考虑的不仅仅是监控系统。以 5 分钟的分辨率从 1k(或 10k)设备中拉回 100 个可变数据位将需要相当多的带宽。为此做好准备,否则您可能会发现您的监控系统正在对您的网络产生负面影响。如果您的系统分布在多个站点并且您正在跨越 WAN 链接,这一点尤其重要。
有一些开源系统声称在这种大规模网络监控中具有竞争力,但数量并不多。 纳吉奥斯已经存在很长时间了,并且已知可以监控 1k+ 个系统。 芝诺斯提供开源核心产品和商业支持产品,并试图挑战一些“巨头”。 扎比克斯是完全开源的,并由其背后的公司提供支持。
然而,对于需要监控数千台设备/系统的大公司来说,最大的参与者是 CA 的 Spectrum/eHealth/Unicenter、IBM 的 Tivoli 套件、HP 的 OpenView。这些产品都可以处理巨大的规模,但也伴随着巨大的价格标签。
注意:我的日常工作是实施和维护网络监控工具,我们监控超过 5000 个网络设备和 8000 个服务器。寻找有效的工具出色地在这些尺度上难的。
答案2
Nagios 似乎是这类问题的默认答案,但有些这种规模的安装正在使用它。
除了良好的扩展性之外,它还灵活且易于定制。
答案3
答案4
查看这个 slashdot 线程以获得大量建议 ;)