Как отобразить панель Grafana команд, выданных за интервал времени - PullRequest
0 голосов
/ 10 февраля 2019

Я увеличиваю счетчик каждый раз, когда запускается команда, и добавляется запись для притока каждые несколько миллисекунд для текущего значения счетчика, получая записи, как показано ниже.

time            value
----            -----
1549754123986   0
1549754183993   1
1549754243999   2
1549754304005   3

Я хотел быиметь панель управления временной последовательностью Grafana, которая отображает, сколько раз команда запускалась за определенный промежуток времени (например, за час, за 3 часа, за 6 часов, ...).

Например, если команды запускаютсяв 9:00, 9:30, 10:45, 11:00 и 12:15 график команд, запускаемых за час, будет выглядеть примерно так:

3|
2|       -------                 -----------
1|-------       --------    -----           -----    ----------------
0|_________________________________________________________________________
  9:00  9:30  10:00   10:30   11:00   11:30   12:00    12:30   1:00  

Из функций притока, перечисленных в https://docs.influxdata.com/influxdb/v1.5/query_language/functions, Я хотел бы сделать разницу между максимальными значениями с интервалом в 1 час (и с интервалом в 3, 6, 12, 24 часа для других интервалов).

Как бы выглядело мое отборное заявление?

Спасибо Брунорею, который ответил ниже, прежде чем я отредактировал свой вопрос, чтобы прояснить его.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Для счетчиков в час: SELECT non_negative_derivative (last ("value"), 1h) FROM "counter" WHERE $ timeFilter GROUP BY time (1h) fill (null)

0 голосов
/ 11 февраля 2019

Вы можете использовать SUM() с GROUP BY, чтобы выбрать общее количество раз, которое значение было 1 за периоды в три часа:

> SELECT SUM(value) FROM my_data GROUP BY time(3h);
name: my_data
time                 sum
----                 ---
2019-02-06T12:00:00Z 216
2019-02-06T15:00:00Z 766
2019-02-06T18:00:00Z 704
2019-02-06T21:00:00Z 547
2019-02-07T00:00:00Z 436
2019-02-07T03:00:00Z 497
> 

Из ваших данных я понимаю, что valueвсегда либо 1, либо 0.

Если есть больше разных чисел, и вы хотите получать каждый раз, когда это было 1, вы можете использовать COUNT с условием:

> SELECT COUNT(value) FROM my_data WHERE value=1 GROUP BY time(3h);

Приведенные выше запросы хороши для притока,если вы хотите реализовать их в графане, я предлагаю вам либо определить переменную интервала (см. документация ), либо использовать переменную $__interval (см. документация ), которая будет автоматически настраиваться в соответствии с вашимУровень масштабирования:

SELECT SUM(value) FROM my_data GROUP BY time($__interval);
...