我收集了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使用中没有模式。如果我做错了,请告诉我。
由于
答案 0 :(得分:10)
从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
但是,对于使用此功能,您必须从[{1}}作为user|system|nice|irq
而非FIELDS
报告。
答案 1 :(得分:1)
这是我的查询,我使用百分比单位(在Axes选项卡上),但堆栈+百分比(在显示选项卡上)也有意义
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)替换,当值丢失时我有一些负值。