Визуализация данных о сумме (стоимости) в Grafana с использованием InfluxQL

У меня есть таблица, которая имеет много строк, которые следуют этой структуре:

time                acknowledgement crit current_attempt downtime_depth execution_time hostname latency max_check_attempts metric reachable service state state_type value warn
----                --------------- ---- --------------- -------------- -------------- -------- ------- ------------------ ------ --------- ------- ----- ---------- ----- ----
1507171563000000000                 999                                                a01-pdu                             kw               pdu                      14.94 999
1507171621000000000                 999                                                a01-pdu                             kw               pdu                      14.92 999
1507171678000000000                 999                                                a01-pdu                             kw               pdu                      14.45 999
1507171736000000000                 999                                                a01-pdu                             kw               pdu                      14.93 999
1507171793000000000                 999                                                a01-pdu                             kw               pdu                      14.88 999
1507171852000000000                 999                                                a01-pdu                             kw               pdu                      14.92 999
1507171909000000000                 999                                                a01-pdu                             kw               pdu                      14.9  999
1507171995000000000                 999                                                a01-pdu                             kw               pdu                      14.91 999
1507171999000000000                 999                                                a02-pdu                             kw               pdu                      13.41 999

Моя цель - получить последнюю запись, где hostname =~ /a01-pdu|a02-pdu/ и подвести их value колонка

Например, если я бегу:

SELECT last(value) AS last INTO pdu_abcd12 FROM pdu WHERE hostname =~ /a01-pdu/;
SELECT last(value) AS last INTO pdu_abcd12 FROM pdu WHERE hostname =~ /a02-pdu/;

SELECT sum(last) FROM (SELECT * FROM pdu_abcd12 ORDER BY DESC LIMIT 8)

time sum
---- ---
0    105.97

Я могу получить сумму этих двух значений, но для этого требуется, чтобы я запускал указанные выше команды influenxQL каждый раз, когда я хочу увидеть данные. Есть ли способ периодически запускать команды, чтобы я мог визуализировать живые данные в Grafana?

1 ответ

Создайте непрерывные запросы, например:

CREATE CONTINUOUS QUERY last_sum ON <db name>
BEGIN
  SELECT last(value) AS last INTO pdu_abcd12 
  FROM pdu 
  WHERE hostname =~ /a01-pdu/ 
  GROUP BY time(1h), hostname
END

Обратите внимание, что CQ требуют group by, Имя хоста также включено в группу выше для учета нескольких имен хостов, которые сопоставляются с регулярным выражением. Их значения были бы выбраны вместе.

Однако у CQ есть несколько недостатков, таких как периодичность, то есть они выполняются только один раз в пределах группы за интервалом, они не будут содержать промежуточных данных между интервалами, не будут выполняться, если БД не работает, что приводит к пробелам в данных. генерировать уникальные поля при использовании подстановочных знаков и т. д., см. документацию.

Другой вариант - Kapacitor и его более гибкий, но также более сложный синтаксис потоковой обработки.

Другие вопросы по тегам