Как получить показатели для конечных точек REST с помощью библиотеки микрометров

#spring #micrometer

Вопрос:

Я работаю над компонентом, основанным на spring framework. Мы еще не перешли на весеннюю загрузку.

Мое требование состоит в том, чтобы фиксировать показатели(JVM/http/дисковое пространство) для моего компонента, который работает на сервере приложений.

Я наткнулся на библиотеку микрометров, которую можно использовать для сбора таких показателей, и она может быть очень хорошо интегрирована с Promotheus. Что я сделал, так это добавил нижеприведенную зависимость

 <dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>1.7.5</version>
</dependency> 
 

После добавления зависимости я показал конечную точку rest и добавил некоторую простую логику для извлечения показателей. Сделав это, я смог получить некоторые основные показатели JVM. Я ссылался на приведенную ниже ссылку для этого, в которой объясняется, как регистрировать показатели.

(https://micrometer.io/docs/ref/jvm)

Однако в дополнение к метрикам JVM я также хочу записывать метрики http-запросов(например. количество запросов, время, затраченное на http-вызовы служб rest).

В моем приложении довольно много конечных точек rest. Есть ли какой — нибудь способ сделать это. Я не смог найти никакой хорошей документации по этому поводу.

Любая помощь будет высоко оценена.

Спасибо

Сачин

Комментарии:

1. Не могли бы вы, пожалуйста, задать свой конкретный вопрос? Вы пытаетесь предоставить конечную точку показателей Prometheus для очистки или пытаетесь выяснить, как измерить конечную точку rest? Постарайтесь, чтобы ваш вопрос был сосредоточен на одной теме. (и опубликуйте больше вопросов позже, сосредоточенных на дальнейших моментах)

2. Прежде всего, спасибо за ответ. Я постараюсь быть более конкретным. Мне нужно понять, как измерить статистику конечных точек отдыха, например. нет запросов,время, затраченное на запросы. Я видел подобные вещи, предоставляемые приводом пружинного ботинка. Возможно ли это сделать.

Ответ №1:

Как вы сказали, Spring Boot делает это из коробки, так что, если вы можете двигаться туда, вам ничего не нужно делать.

Чтобы измерить ваши конечные точки в Интернете, вы можете сделать несколько вещей:

  1. Вы можете создать Filter и зафиксировать все свои звонки там. Это то, что делает Spring Boot, вы можете посмотреть/скопировать WebMvcMetricsFilter
  2. Вы можете добавить @Timer для своих контроллеров и настройки TimedAspect
  3. Вы можете вручную настроить свои контроллеры см. документы

Комментарии:

1. Да, весенняя загрузка-это то, что нам нужно обновить, и это лучший способ достичь этого, но тем временем я посмотрю документы.

Ответ №2:

После выполнения приведенных выше предложений я действительно смог увидеть свои показатели http

Я просто создал класс конфигурации с аннотацией @EnableAspectJAutoProxy и определил компонент внутри класса, как показано ниже

 @Bean
public TimedAspect timedAspect() {
   return new TimedAspect(registry);
}
 

А затем добавил аннотацию @Timed в мои методы публикации REST api, а затем я смог просмотреть статистику на панели мониторинга Prometheus.

Это действительно работает!