大约一年前,我曾使用过 collectd。我记得它的速度和灵活性给我留下了深刻的印象,但它从未被用作收集指标的主要来源,运行脚本将数据发送到 statsd/graphite/nagios 的 cron 作业仍然是事实上的选择。
最近,由于收集到的一些指标被认为不够准确,这个问题再次被提起。
我想知道 collectd 是否仍然被认为是完成此类任务的一个好选择,或者是否出现了更好的选择可以完成这项工作。
收集指标的要求如下:
- 每分钟至少收集一次
- 通过 puppet 或 chef 轻松部署
- 对 JVM、系统进程、MySQL、postgress、haproxy 和其他开源平台组件的深度支持
我有兴趣听听任何有这方面经验的人的意见
答案1
Collectd 是收集和呈现统计数据的不错选择。它可以从多个来源收集数据,如果您需要从某些应用程序获取深入的统计数据和数据聚合,您可以将 statd 输出输入到 collectd。然后您可以将这些数据发送到 Nagios/Icinga 和/或 Graphite。
- 可以通过
interval
指令配置 Collectd 以 1 秒为单位进行收集。 - 无法代表 puppet 或 chef,但通过 Salt 进行部署可以完美进行。
- 无法回答您的具体例子,但 collectd 有很多插件(快速浏览一下就会发现有 MySQL、Postgre 和通用 Java 插件)并且会自行收集 systat 收集的所有数据。
答案2
我绝对会推荐 Collectd,而不是一些自制的 shell 脚本解决方案(真的,任何东西都比容易失败的 shell 脚本要好)。
它非常轻量,不占用太多资源,可以轻松扩展Python或甚至重复使用现有的 shell 脚本因此,即使它缺少您想要监控的特定服务的模块,您也可以轻松地创建一个。
分钟间隔不是问题,因为默认间隔甚至更低,设置为 10 秒。
不幸的是,我无法代表任何配置管理工具的兼容性,但它应该是好的,特别是因为许多发行版都提供了它的打包版本,你可以在你的 Puppet/Chef 文件中提及它。