我们使用 Cacti 和 RRDTool 来监控和绘制分布在大约 1,000 个 Linux 节点上的大约 100,000 个计数器。但是,我们当前的设置通常只提供 5 分钟的图表(部分数据以分钟为单位);我们经常进行更改,以便看到“近乎实时”的反馈。我想要大约一周的 5 秒或 10 秒数据、一年的 1 分钟数据和 5 年的 10 分钟数据。我有 SSD 磁盘和双六核服务器可用。
我尝试设置 Graphite/carbon/whisper 服务器,并有大约 15 个节点连接到它,但当提升到较旧的存储桶时,它的保留函数只有“平均值”。这几乎没用——我想要最小值、最大值、平均值、标准偏差,也许还有“总和”和“样本数”或“第 95 百分位数”。开发人员声称有一个新的“测试版”后端允许您编写自己的函数,但这似乎仍然只能进行 1:1 保留(当保存较旧的数据时,您确实希望将统计数据从单个输入计算到多个流中。此外,“测试版”对于此安装似乎有点冒险。如果我的这个假设是错误的,我很乐意看到我的错误!
我听说有人推荐 Zabbix,但它会将数据放入 MySQL 或其他 SQL 数据库中。5 秒间隔内的 100,000 个计数器意味着 20,000 tps,虽然我有 SSD,但我没有带电池备份缓存的 8 路 RAID-6,我认为我需要这个才能实现 :-) 再次,如果这实际上不是问题,我很乐意看到我的方法有误。此外,Zabbix 可以执行单个数据流 -> 使用统计数据进行提升吗?
最后,Munin 声称现在有一个新的 2.0 版本“处于测试阶段”,并且它拥有定制的留存计划。然而,再次强调,这是“测试阶段”的部分——有没有人真正大规模地使用过它?如果有的话,它的表现如何?
我几乎在考虑使用图形前端(例如 Graphite)并在 mmap() 和一些统计数据之上使用一个简单的层来滚动我自己的保留后端。这不会特别困难,而且性能可能会非常好,让内核找出刷新到磁盘的频率和进程操作之间的平衡。
还有什么建议我应该考虑吗?注意:它必须证明自己能够承受我上面建议的数据负载;如果你能指出你引用的具体实现,那就更好了!
答案1
你看过神经节?
我非常怀疑 Munin 能否扩展到您的规模。但 Ganglia 从一开始就是为大型服务器集群而设计的。
答案2
众所周知,Zabbix 在 1000+ 主机环境中表现良好,您的 5 秒刷新率有点闻所未闻(也许对于大多数主机,您需要这种周期,而对于其中一些主机,30 秒左右的刷新率对您来说就可以了)。
在大型安装中提倡使用 Zabbix 代理(将其视为迷你 Zabbix 服务器)来减少 Zabbix 服务器的负载。 http://www.packtpub.com/article/proxies-monitor-remote-locations-zabbix-1.8
阿列克谢本人说道:
“它将收集性能和可用性数据,并代表 ZABBIX 服务器执行自动发现:
- 它不受通信问题的影响。数据在本地存储。
- 它只需要单向(代理到服务器)TCP 连接。
- 几乎无需维护。例如,如果本地代理数据库不存在,代理将自动创建一个。因此,设置代理基本上需要一个二进制和小型配置文件。
- 配置通过正常的 WEB GUI 在服务器端进行存储和全面管理。”
答案3
查看石墨,http://graphite.wikidot.com/他们对高容量有这样的看法:
Graphite 由 Orbitz.com 内部开发,用于可视化各种关键操作数据,包括应用程序指标、数据库指标、销售额等。在撰写本文时,Orbitz 的生产系统可以在非常快的 SAN 上的两个 niagra-2 Sun 服务器上运行,每分钟处理大约 160,000 个不同的指标。
答案4
我和其他评论者一样,问为什么你需要在这么短的频率上监控这么多项目。这样做最大的问题是你的监控系统将开始在负载方面产生误报,并且你正在减少可用于其他处理的 CPU 时间。将监控间隔从 5 秒移至 15 秒将导致监控开销下降 80%,并且仍然为你提供至少两倍的正常最小可见性,通常约为 30 秒。此外,当你仔细观察时,你可能会确定某些项目不需要每 15 秒或 30 秒监控一次。磁盘就是一个例子,你可能每 30 秒或 60 秒处理一次。例如,如果你只写入 1.7MB/s,那么你一分钟只能推送 100MB。例如,如果你的监控系统设置为在 1GB 时报警,那么现在你大约有 100 分钟的时间,然后你的磁盘就会用完(使用这个慢速磁盘示例)。CPU,为什么你需要以少于 30 秒的分辨率知道它在做什么?它在云中以 100% 的负载运行,很好,它正在做一些像集群节点应该做的工作。但如果它在工作队列为 0 时负载为 100%,那么你就有问题了。
此外,如此严格的频率监控还会增加您对误报的追求,因为数据集中引入了伪像。例如,如果您的监控系统以 5 秒的间隔监控所有内容,导致基本负载为 20%,速度为 100KB/s,那么您真的能准确了解主机在做什么吗?至于误报,考虑在 500KB/s 的网络负载下触发,仅您的监控系统就可以让您实现 20% 的目标。
此外,您没有在上面提出任何建议,这让我觉得 Zabbix 无法处理您想要做的事情。试一试,我们将在 Zabbix 社区等待在您需要时为您提供帮助。