我正在尝试伪造一个图表,显示一组可变服务器的最坏情况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使用率。
我需要做但无法弄清楚如何做到以下几点:
我缺少的是第2步。基本上,我需要一种方法来规范化每个服务器的不同CPU值,然后再将它们相加。
有没有办法做到这一点?
编辑:当然,这对于其他指标也很有用,这些指标在服务器之间是统一的,例如: RAM。
答案 0 :(得分:0)
试试这个:
summarize(sumSeries(averageSeriesWithWildcards(servers.$foo.$bar.*.collectd.cpu-*.cpu-system.value, 5)), '$timeframe', 'max', false)
我不确定它会起作用,但我相信它遵循您概述的步骤,也许您可以调整它以使其工作。 :)查看有关Graphite functions的文档。