Пружинный загрузочный привод записывает запросы опций с динамическим параметром URL

#spring-boot #prometheus #metrics #actuator

#spring-boot #prometheus #показатели #привод

Вопрос:

мы открываем Spring Boot 1.5.9 и предоставляем метрики для Prometheus.

Когда мы получаем запросы ОПЦИЙ, параметр path не заменяется. Для запросов GET параметр заменяется. Контроллер выглядит следующим образом:

 @Slf4j
@RequestMapping(method = { RequestMethod.GET }, path = "/claims/{token}")
@RestController
public class ClaimDetailController {

    @GetMapping(value = "", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, params = "token")
    public ResponseEntity getDetail(@PathVariable(value = "token") final String token) {
      ...
    }
}

 

При вызове привода с конечной точкой «/prometheus» мы получаем:

 # HELP gauge_response_claims_clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0 gauge_response_claims_clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0
# TYPE gauge_response_claims_clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0 gauge
gauge_response_claims_clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0 5.0
# HELP gauge_response_claims_token gauge_response_claims_token
# TYPE gauge_response_claims_token gauge
gauge_response_claims_token 1502.0
 

Первый из запроса ОПЦИЙ. Второй из запроса GET.

Итак, почему токен из запроса ОПЦИЙ не заменяется? Можно ли этого добиться? Если нет — возможно ли удалить запросы опций из метрик?

И это вывод /metrics:

counter.status.200.claims.clgrrrfhirlndv3pjtxhxrg40dwlpwurrvtjnmu1npt0 2 counter.status.200.cloudfoundryприложение 4

Вот некоторые зависимости, используемые нами:

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>
    
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-cloudfoundry-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-spring-legacy</artifactId>
    <version>1.3.16</version>
</dependency>

<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_spring_boot</artifactId>
    <version>0.3.0</version>
</dependency>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_servlet</artifactId>
    <version>0.3.0</version>
</dependency>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_hotspot</artifactId>
    <version>0.3.0</version>
</dependency>
 

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

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

2. Спасибо за ваш комментарий. Spring Boot Actuator записывает запрос в пределах своих метрик.

3. да, но это не связано с протоколированием. Итак, вы беспокоитесь об именовании в метриках? кроме того, вы уверены, что simpleclient_spring_boot записывает метрики, а не spring? и как выглядит ваш контроллер опций?

4. если ваши запросы опций отправляются в не сопоставленные показатели, сопоставлены ли они вообще с каким-либо контроллером…

5. Запросы опций не отображаются мной. Я использую отображение Spring по умолчанию для этого запроса.

Ответ №1:

Похоже, что обновление Spring Boot до версии 1.5.22.RELEASE

результаты для запросов ОПЦИЙ, подобных этому:

 # HELP counter_status_200_unmapped counter_status_200_unmapped
# TYPE counter_status_200_unmapped gauge
counter_status_200_unmapped 5.0
 

Это не идеально, но все запросы ОПЦИЙ собираются в одну метрику, а не каждый в отдельную.