我想在Grafana中创建一个图形面板,其中显示了CPU消耗量最大的前10名,并显示了在选择的任何时间间隔内各自的历史记录。我认为最后一部分很棘手。
到目前为止,我已经拥有了:
SELECT TOP("median_Percent_Processor_Time", 10) as "usage", host FROM (
SELECT median("Percent_Processor_Time") AS "median_Percent_Processor_Time" FROM "telegraf_monitoring"."autogen"."win_cpu" WHERE time > now() - 5s GROUP BY time(:interval:), "host" FILL(none)
)
这将产生下表:
time | usage | host
12/17/18 02:38:36PM | 88.4503173828125 | CNVDWSO202
12/17/18 02:38:36PM | 60.55384826660156 | CNVDSerr01
12/17/18 02:38:36PM | 46.807456970214844 | NVsABAr01
12/17/18 02:38:36PM | 27.402353286743164 | NVDARCH02
12/17/18 02:38:36PM | 21.320478439331055 | NVDABAr05
12/17/18 02:38:36PM | 5.546620845794678 | NVDALMBOE
12/17/18 02:38:36PM | 3.654918909072876 | NVDLeNCXE01
12/17/18 02:38:36PM | 47.08285903930664 | NVDOKTARAD01
该表很有用,但这仅是一个时间点。随后,我需要从那10个主机的win_cpu测量中查询并提取时间序列数据。主机的值是动态的,我无法预测会出现什么,因此,我无法将OR
语句串在一起,而据我所见,Influx不支持IN
。
答案 0 :(得分:0)
您可以使用OR regexp代替IN
。 =~ /HOST1|HOST2|HOST3/
+ GROUP BY host
和一个InfluxDB查询将返回所有数据。棘手的部分是Grafana变量,它将具有前10名主机。有了它后,只需在regexp查询中使用高级变量格式-例如=~ /${tophosts:pipe}/
。