9

我正在收集由 Collectd 5.4.0 以 jiffies 为单位测量的 cpu 使用情况,然后将结果存储在 InfluxDB 0.9.4 中。我使用以下查询从 InfluxDB 获取 cpu 百分比:

SELECT MEAN(value) FROM cpu_value WHERE time >= '' and time <= '' GROUP BY type,type_instance

但是当我绘制结果时,它没有任何意义。cpu使用没有规律。如果我做错了什么,请告诉我。

谢谢

4

2 回答 2

15

从 Collectd 5.5 开始,您可以获得百分比值而不是 jiffies:

<Plugin cpu>
  ReportByState = true
  ReportByCpu = true
  ValuesPercentage = true
</Plugin>

然后你可以编写如下查询:

SELECT mean("value") FROM "cpu_value" WHERE 
  "type_instance" =~ /user|system|nice|irq/ 
  AND "type" = 'percent' AND $timeFilter 
  GROUP BY time($interval), "host"

如果你可以升级它可能是最简单的选择。否则,您可以:

使用 InfluxDB 0.12,您可以在字段之间执行算术运算,例如:

SELECT MEAN(usage_system) + MEAN(usage_user) AS cpu_total
FROM cpu

但是,要使用它,您必须从 collectd 报告user|system|nice|irqFIELDSnot TAGS

于 2016-04-16T11:22:01.973 回答
2

这是我的查询,我将它与百分比单位(在轴选项卡上)一起使用,但堆栈+百分比(在显示选项卡上)也有意义

SELECT non_negative_derivative(mean("value"), 1s) FROM "cpu_value" WHERE "type_instance" =~ /(idle|system|user|wait)/ AND $timeFilter GROUP BY time($interval), "type_instance" fill(null)

non_nagative_derivative(1s) 可以替换为导数(1s),当缺少值时,我有一些负值。

于 2016-07-12T19:01:50.173 回答