Метрики Prometheus не дают значений переменных пути - PullRequest
0 голосов
/ 05 мая 2020

Пример кода из приложения весенней загрузки, которое выдает метрики Prometheus.

Я пытаюсь получить к нему доступ с помощью http://localhost: 8080 / myApi / AB C.

Но в метриках Prometheus он производит метрики с "uri = / myApi / {refNum}" .

Метрики Promotheus:

my_example_api_seconds{application="my-application",exception="None", method="GET", outcome="SUCCESS",status="200",uri="/myApi/{refNum}",quantile="0.3",} 14.495514624

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;    
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.spring.autoconfigure.MeterRegistryCustomizer;

@Configuration
public class BeansConfiguration {
@Bean
    MeterRegistryCustomizer<MeterRegistry> meterRegistryMeterRegistryCustomizer(MeterRegistry meterRegistry) {
        return meterRegistry1 -> {
            meterRegistry.config().commonTags("application","my-application");
        };
    }
}

Контроллер:

import io.micrometer.core.annotation.Timed;
import io.micrometer.core.instrument.MeterRegistry;

   @Timed(
            value="my.example.api",
            percentiles = {0.30,0.50,0.95,0.99}
    )
    @GetMapping(value = "myApi/{refNum}")
    public ResponseEntity<String> fun(@NotNull @PathVariable("refNum") String refNum) {
     ...
    }

Пом. xml

<properties>
  <micrometer.version>1.2.0</micrometer.version>
  <prometheus.registry.version>1.2.0</prometheus.registry.version>
</properties>
<dependencies>
  <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-spring-legacy</artifactId>
            <version>${micrometer.version}</version>
  </dependency>

  <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
            <version>${prometheus.registry.version}</version>
  </dependency>
  <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
            <version>${prometheus.registry.version}</version>
  </dependency>
  <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_pushgateway</artifactId>
            <version>0.8.0</version>
  </dependency>
</dependencies>

1 Ответ

0 голосов
/ 06 мая 2020

Работает, как задумано.

Представьте, что у вас есть конечная точка пользователя @GetMapping(value = "user/{userId}")

Если бы вы вызывали user/1, user/2, вплоть до user/1000000, вы бы хотели, чтобы система показателей запишите 1 метрику c с совокупным временем отключения всех вызовов для этой единственной конечной точки.

Чтобы записывать отдельные вызовы, вам нужно добавить сообщение журнала, а не структуру метрик.

...