Запрос InfxDB для 5 лучших использования процессора
Я использую общий веб-хостинг, используя CloudLinux. Из этого я могу получить кучу показателей производительности
Итак, мой InfluxDB это:
измерение: lve
поля: CPU,EP,IO,IOPS,MEM,MEMPHY,NETI,NETO,NPROC,fEP,fMEM,fMEMPHY,fNPROC,lCPU,lCPUW,lEP,lIO,lIOPS,lMEM,lMEMPHY,lNETI,lNeto, lCPRO
теги: xpool, хост, пользователь (где: xpool - это идентификатор xen-пула, хост - это имя хоста cloudLinux, пользователь - имя пользователя общего хостинга)
данные собираются каждые 5 секунд
Как это предложение запроса к:
Выберите записи из определенного xpool+host, и
получить 5 уникальных имен пользователей, которые выдают ТОП использования ЦП за 5 минут? Есть сотни имен, но я хочу получить только топ-5.
Примечание: То же самое, что и в примере 4 из TOP() из https://docs.influxdata.com/influxdb/v1.5/query_language/functions/, если только ожидаемые результаты не являются следующими:
name: h2o_feet
time top location
---- --- --------
2015-08-18T00:00:00Z 8.12 coyote_creek
2015-08-18T00:54:00Z 2.054 santa_monica
Скорее, чем:
name: h2o_feet
time top location
---- --- --------
2015-08-18T00:48:00Z 7.11 coyote_creek
2015-08-18T00:54:00Z 6.982 coyote_creek
2015-08-18T00:54:00Z 2.054 santa_monica
2015-08-18T00:24:00Z 7.635 coyote_creek
2015-08-18T00:30:00Z 7.5 coyote_creek
2015-08-18T00:36:00Z 7.372 coyote_creek
2015-08-18T00:00:00Z 8.12 coyote_creek
2015-08-18T00:06:00Z 8.005 coyote_creek
2015-08-18T00:12:00Z 7.887 coyote_creek
Поскольку "8,12" является самым высоким значением "coyote_creek", а "2,054" является самым высоким значением "Santa_monica"
Искренне
-bino-
1 ответ
Вероятно, подзапрос мог бы помочь, например, это из базы данных, использующей telegraf:
SELECT top,host FROM (SELECT TOP(usage_user, 1) AS top, host from cpu WHERE time > now() -1m GROUP BY host)
Это выведет что-то вроде:
name: cpu
time top host
---- --- ----
1527489800000000000 1.4937106918238994 1.host.tld
1527489808000000000 0.3933910306845004 2.host.tld
1527489810000000000 4.17981072555205 3.host.tld
1527489810000000000 0.8654602675059009 4.host.tld
Первый запрос:
SELECT TOP(usage_user, 1) AS top, host from cpu WHERE time > now() -1m GROUP BY host
Использует TOP
получить только 1 предмет и используя поле usage_user
Затем для "красивой печати" используется подзапрос:
SELECT top,host FROM (...)