@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?
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
@gerashenko Автор вопроса
Ответ прост, в micrometer нет метрики за минуту, так как это НЕ задача метрики. Это делается уже в агрегаторе. В моем случае это Prometheus и его range(...)[5s], а в метрике используется counter - монотонно возрастающая последовательность, на основе которой можно уже на стороне Grafana вычислить дельту за любой период. То, что приложение может перезапускаться, не играет роли, так как в Grafana исчезнет одино приложение и появится другое, а итог будет считаться как сумма по всем приложениям за указанный интервал времени.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы