Во-первых, давайте выясним, что такое сводка : сводная метрика фиксирует отдельные наблюдения из события и суммирует их в ряд связанных метрик:
- сумма значений(он же наблюдения)
- количество наблюдений
- квантили
В качестве примера: если вы измеряете время ответа службы:
сначала вы создаете сводные метрики, предоставляющие
- имя и метки (как обычно для определения метрики) - например:
foobar_request_duration_seconds
- обычно каким-то образомукажите окна измерений (количество наблюдений или максимальный возраст событий)
- список квантилей для расчета - например: 0,1, 0,5 (медиана), 0,75, 0,9
для каждого запроса вы будете вычислять время ответа на запрос - это наблюдение
- затем вы будете передавать вычисленное время ответа на запрос в итоговый объект
когда Прометей очищает вашу конечную точку, метрикивычисляются из наблюдаемых показателей времени ответа
foobar_request_duration_seconds_sum
: общее количество секунд, потребленных запросами foobar_request_duration_seconds_count
: количество запросов (обратите внимание, что вы можете вычислить среднее с суммой) foobar_request_duration_seconds_seconds{quantile="0.1"}
: время отклика 10% (... одинаково для всех настроенных квантилей)
Надеюсь, это должно помочь вам понять документация для выпускного клиента :
Первый пример показывает, как указать квантили для вычисления
new client.Summary({
name: 'metric_name',
help: 'metric_help',
percentiles: [0.01, 0.1, 0.9, 0.99]
});
Второй - как ограничить окно измерений;здесь, мера вычисляется за последние 10 минут (используя 5 сегментов - это влияет на сглаживание значений):
new client.Summary({
name: 'metric_name',
help: 'metric_help',
maxAgeSeconds: 600,
ageBuckets: 5
});
Возвращаясь к вашему вопросу, метод observe()
должен вызываться для того, что вы наблюдаете.
Если вы хотите измерить некоторые данные, возвращаемые serviceCall()
, вы передаете их в сводку
number_bytes_exchanged = await this.serviceCall();
summary.observe(number_bytes_exchanged);
Если вы хотите измерить время, затраченное сервисным вызовом
const observe_response_time = summary.startTimer();
await this.serviceCall();
observe_response_time();