【问题标题】:Summarize CollectD CPU-Stats for multiple servers with different CPU count across servers跨服务器汇总具有不同 CPU 计数的多台服务器的 CollectD CPU-Stats
【发布时间】: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 使用情况。

我需要做但不知道如何做的事情如下:

  1. 对于段 3(服务器)中的每个,计算 cpu-*,然后
  2. 将此服务器的每个 cpu-*.foo 相加,然后除以从 1 开始的计数。
  3. 对 2 中的每一项求和并总结

我缺少的是第 2 步。基本上,我需要一种方法来规范化每台服务器的不同 CPU 值,然后再将它们汇总。

有什么办法吗?

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

【问题讨论】:

    标签: graphite grafana


    【解决方案1】:

    试试这个:

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

    我不确定它是否会起作用,但我相信它遵循您概述的步骤,也许您可​​以对其进行调整以使其起作用。 :) 请参阅有关 Graphite functions 的文档。

    【讨论】:

    • 您好 dukebody,感谢您的回复。不幸的是,这并没有进行标准化,这对我来说非常重要。问题是,我想将所有不同的 cpu-* 值总结到最大值,除了空闲,我想总结到最小值。如果在汇总它们之前我不能将每个服务器的 CPU 系列总和标准化为 100%,那么具有更多线程的服务器将扭曲空闲值
    猜你喜欢
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2021-07-23
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多