Как функционирует функция increase() в Prometheus?

Добрый день, коллеги! 

Я недавно начал заниматься мониторингом и столкнулся с вопросом по метрикам, которые собираются с помощью выражения sum(increase(количество_платежей[24h])). У меня есть две задачи: 
1) разобраться в том, как именно работает эта структура 
2) объяснить это своим коллегам. 

Я изучил документацию, но не смог найти четкого описания функции и ее параметров, а также того, как она производит расчеты. Надеюсь на вашу помощь!
  • 10 декабря 2024 г. 7:33
Ответы на вопрос 2
Добрый день!

Функция `increase()` в Prometheus используется для вычисления общего увеличения счетчика за заданный интервал времени. Давайте разберем ее подробнее:

### 1. Как работает функция `increase()`?

- **Счетчики vs. Гистограммы**: `increase()` применяется к метрикам, которые являются счетчиками (counters). Счетчики - это метрики, которые только увеличиваются (например, количество платежей). Если значение счетчика сбрасывается (например, из-за перезагрузки приложения), `increase()` обработает этот случай.

- **Синтаксис**: `increase(<метрика>[<период времени>])`
  - `<метрика>`: это название вашей метрики, например, количество платежей.
  - `<период времени>`: интервал времени, за который вы хотите получить общее увеличение.

- **Расчет**: Функция `increase()` берет временной ряд данных (например, данные о количестве платежей за определенные временные промежутки) и берет разницу между последним значением в заданный период и первым. Она учитывает возможные переполнения (сбросы) счетчика.

Пример: Если у вас есть метрика, которая показывает количество платежей:
```
10 (время t0)
15 (время t1)
5  (время t2, счетчик сбрасывается)
8  (время t3)
```
При вызове `increase(количество_платежей[4h])` вы получите значение: `(15 - 10) + (8 - 5) = 5 + 3 = 8`.

### 2. Как объяснить это коллегам?

Можно succinctly объяснить, что функция `increase()` в Prometheus позволяет нам отслеживать, насколько увеличилась метрика счетчика за определенный период. Вот несколько важных моментов для пояснения:

- **Контекст**: Используйте практический пример, например, количество транзакций (платежей), чтобы показать, как можно использовать эту функцию для понимания общего числа платежей за день или за конкретный момент времени.

- **Преимущества**: Укажите, что `increase()` корректно обрабатывает случаи, когда счетчик сбрасывается (что может случиться, например, при перезагрузке приложения), и это позволяет получать точные результаты.

- **Используемый синтаксис**: Продемонстрируйте, как выражение `sum(increase(количество_платежей[24h]))` агрегирует данные за последние 24 часа, суммируя приросты из разных экземпляров метрик, если они есть.

Надеюсь, это объяснение поможет вам лучше понять функциональность `increase()` и донести информацию до ваших коллег!
Похожие вопросы