汇总服务器上具有不同CPU数量的多台服务器的CollectD CPU-Stats

时间:2015-12-15 09:13:27

标签: graphite grafana

我正在尝试伪造一个图表,显示一组可变服务器的最坏情况CPU使用率。我从collectd获取数据,它分别报告每个CPU核心的统计信息。问题是集合中的服务器可能具有不同数量的CPU核心。

到目前为止(每个cpu-foo属性有一个系列): sumSeriesWithWildcards(sumSeriesWithWildcards(summarize(servers.$foo.$bar.*.collectd.cpu-*.cpu-system.value, '$timeframe', 'max', false), 5), 3)

这显然会使图形向cpu-idle倾斜,因为服务器大部分均匀加载,因此具有更多CPU核心的服务器显示出比具有更少内核的服务器更高的空闲率。

为了澄清这一点:我想将所有服务器的所有cpu- *系列总和汇总到所有服务器的最大值,除了空闲,我想总结给min。因此,在总结它们之前,我需要一种将每个服务器规范化为100%的方法。

到目前为止,我已经到了这里,这有点好一点: divideSeries(sumSeriesWithWildcards(sumSeriesWithWildcards(summarize(servers.$foo.$bar.*.collectd.cpu-*.cpu-system.value, '$timeframe', 'max', false), 5), 3), #L)

但是,这仍然不能令人满意。它并没有扭曲,但它仍然无法实现此图表的目的:显示跨服务器的最坏情况CPU使用率。

我需要做但无法弄清楚如何做到以下几点:

  1. 对于段3(服务器)中的每一个,计数cpu- *,然后
  2. 将此服务器的每个cpu - *。foo相加,并将其除以1中的计数。
  3. 从2.总结
  4. 我缺少的是第2步。基本上,我需要一种方法来规范化每个服务器的不同CPU值,然后再将它们相加。

    有没有办法做到这一点?

    编辑:当然,这对于其他指标也很有用,这些指标在服务器之间是统一的,例如: RAM。

1 个答案:

答案 0 :(得分:0)

试试这个:

summarize(sumSeries(averageSeriesWithWildcards(servers.$foo.$bar.*.collectd.cpu-*.cpu-system.value, 5)), '$timeframe', 'max', false)

我不确定它会起作用,但我相信它遵循您概述的步骤,也许您可​​以调整它以使其工作。 :)查看有关Graphite functions的文档。