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