【发布时间】:2015-12-15 09:13:27
【问题描述】:
我正在尝试制作一个图表,显示一组可变服务器的最坏情况下的 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-* 系列总和总结为所有服务器的最大值,除了空闲,我想总结到最小值。因此,我需要一种方法在汇总之前将每个服务器的总和标准化为 100%。
到目前为止,我已经做到了这一点,这有点好:
divideSeries(sumSeriesWithWildcards(sumSeriesWithWildcards(summarize(servers.$foo.$bar.*.collectd.cpu-*.cpu-system.value, '$timeframe', 'max', false), 5), 3), #L)
但是,这仍然不能令人满意。它没有那么偏斜,但仍然无法满足此图表的目的:显示服务器之间最坏情况下的 CPU 使用情况。
我需要做但不知道如何做的事情如下:
- 对于段 3(服务器)中的每个,计算 cpu-*,然后
- 将此服务器的每个 cpu-*.foo 相加,然后除以从 1 开始的计数。
- 对 2 中的每一项求和并总结
我缺少的是第 2 步。基本上,我需要一种方法来规范化每台服务器的不同 CPU 值,然后再将它们汇总。
有什么办法吗?
编辑:当然,这对于其他在服务器之间统一注释的指标也很有用,例如内存。
【问题讨论】: