Выберите 10 лучших из подзапроса по средней загрузке ЦП и отобразите данные временных рядов с помощью Influx

Я хочу создать графическую панель в Grafana, которая показывает 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

Таблица полезна, но это всего лишь один момент времени. Мне нужно впоследствии запросить и извлечь данные временных рядов из этого измерения win_cpu для этих 10 хостов. Значения хостов являются динамическими, у меня нет возможности предсказать, что будет отображаться, и из-за этого я не могу связать вместе OR операторы, а Influx не поддерживает IN, насколько я могу видеть.


person Socketed Chinchilla    schedule 17.12.2018    source источник


Ответы (1)


Вы можете использовать регулярное выражение OR вместо IN. =~ /HOST1|HOST2|HOST3/ + GROUP BY host и один запрос InfluxDB вернет все данные. Сложная часть - это переменная Grafana, у которой будут эти 10 ведущих хостов. Когда он у вас есть, просто используйте расширенное форматирование переменных в запросе регулярного выражения - например, =~ /${tophosts:pipe}/.

person Jan Garaj    schedule 18.12.2018