Задать вопрос
@gerashenko

Как сдеалать метрику кол-ва вызовов за интервал времени в Spring micrometer?

Мне нужна метрика кол-ва запросов метода за последние 5 секунд, но проблема в том, что я не нашел, как сбарсывать метрику спустя эти пять секунд. Понятно, что можно вручную сделать какой-то метод по расписанию или написать какие-то свои проверки, но я полагал, что в метрике это быть что-то встроенное для этой цели.
Максимум, что я смог придумать, это:
DistributionSummary summary = DistributionSummary
	.builder("test")
	.distributionStatisticExpiry(Duration.ofSeconds(5))
	.register(meterRegistry);
summary.record(summary.max() + 1);
summary.record(summary.max() + 1);
summary.record(summary.max() + 1);

Max подходит, так как только это значение сбрасывается через 5 секунд, остальные только накапливаются. Т.е. conter только растет, а я жду, что каждые 5 секунд все будет начинаться с нуля.
test_count{application="test",} 3.0
Я что-то упустил, или неправильно понял концепцию micrometer?
  • Вопрос задан
  • 207 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@gerashenko Автор вопроса
Ответ прост, в micrometer нет метрики за минуту, так как это НЕ задача метрики. Это делается уже в агрегаторе. В моем случае это Prometheus и его range(...)[5s], а в метрике используется counter - монотонно возрастающая последовательность, на основе которой можно уже на стороне Grafana вычислить дельту за любой период. То, что приложение может перезапускаться, не играет роли, так как в Grafana исчезнет одино приложение и появится другое, а итог будет считаться как сумма по всем приложениям за указанный интервал времени.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы