Как получить с Grafana общее значение перекрестного времени для значения типа счетчика, хранящегося в InfluxDB? - PullRequest
0 голосов
/ 23 марта 2020

Мы храним некоторые встречные измерения в InfluxDB. Значения монотонно растут, но время от времени могут быть сброшены. Сброс может произойти в любое время (скажем, из-за перезапуска службы).

Например: измерение: bytes_in

time                         value
----                         -----
2020-03-23T09:00:50.5335191Z 1000
2020-03-23T09:00:51.0335191Z 3000
2020-03-23T09:00:51.5335191Z 4500
2020-03-23T09:00:52.0335191Z 7000
2020-03-23T09:00:52.5335191Z 8000
2020-03-23T09:00:55.0335191Z 15000
2020-03-23T09:00:55.5335191Z 500
2020-03-23T09:00:56.0335191Z 1000
2020-03-23T09:00:56.5335191Z 1000
2020-03-23T09:00:57.5335191Z 3000

В этом случае, если я хочу получить общее число bytes_in с 2020-03-23T09: 00: 50 до 2020-03-23T09: 00: 58, я хотел бы получить: (15000-1000) + (3000 - 0) (по состоянию на 55.5335191Z он получил сброс, а затем начался с 0) = 17 000

Каким был бы способ достичь вышеуказанного результата, используя Grafana против InfluxDB (1.7 )? Какие функции следует использовать?

Спасибо

1 Ответ

0 голосов
/ 31 марта 2020

Посмотрите на NON_NEGATIVE_DIFFERENCE функцию. Запрос может выглядеть следующим образом (при необходимости добавьте группу по времени)

SELECT SUM(diffval) FROM (SELECT NON_NEGATIVE_DIFFERENCE(value) AS diffval FROM bytes_in) 
...