【发布时间】:2021-12-23 18:42:22
【问题描述】:
我自己有一个想法,为具有各种自定义功能和控件的 linux 系统构建自己的指标收集代理。想知道从 linux 系统连续收集指标的最佳做法是什么。
-
对于所需的数据收集时间间隔,是否最好使用带有睡眠的无限 while 循环?或任何其他可用于递归数据收集而不浪费太多系统内存的最佳方法。
-
如果我想收集多个指标,如 CPU util、memory util、disk util 等。并行执行所有命令的最佳方法是什么?使用 & 并将其留作后台并收集所有进程 ID 并验证所有进程是否已完成,这是一种好方法吗?或任何其他为此目的的最佳方式?
提前致谢。
【问题讨论】:
-
Sooo,为什么不推出现有的解决方案? Zabbix,nagios?
Is it best to用什么来衡量“最好”?很可能不会,因为sleep会比需要的睡眠时间多一点。使用特定于操作系统的工具以特定间隔执行任务可能更准确。我的意思是timer_create()。但这取决于什么被认为是“最好的”。What is the best way用什么来衡量“最好”?没有“最好”或“更差”,这完全取决于。因此,我认为您的问题过于宽泛。请看How to Ask,我推荐meta.stackoverflow.com/q/260648/9072753 -
感谢您的回复。 1. 我以 CPU、Mem 等为例来解释我的用例。在实际场景中,收集指标可能会有所不同,这在 Nagios 等现有解决方案上可能不可用。 2. 最佳手段,遵循的最佳方法。这个问题背后的原因是,这是一个在操作系统上无限运行的代理。所以我需要低 CPU 和内存消耗代理来完成我的所有操作。如果 while 循环继续向 ram 添加数据,那么我不推荐使用 while 循环。这就是我所说的最好的意思。降低计算消耗。
-
which may not available on existing solutions like Nagios都有“自定义指标”或类似的东西。Best means, the best method to follow不回答问题。如何衡量“最佳”?如何衡量最好遵循什么?最好的在我看来,不是重新发明轮子。如果您真的需要自定义语义,请使用 zabbix-agent2 源代码并根据需要对其进行修改。如果您只需要自定义指标,我认为滚动自定义解决方案没有任何价值,因为它会很昂贵,而且会占用大量没有价值的工作时间。使用现有的解决方案会更有价值。
标签: linux parallel-processing infinite-loop agent infinite-recursion