Ошибка от promtheus в java (spring acuator)

#java #spring #prometheus #spring-boot-actuator #actuator

#java #весна #prometheus #spring-boot-actuator #привод

Вопрос:

Я включил и настроил пружинный привод с конечной точкой Prometheus в моем приложении Spring boot. Но я получаю сообщение об ошибке, что Prometheus требует, чтобы все счетчики с одинаковым именем имели одинаковый набор ключей тегов. Но, к сожалению, Spring Actuator не сделает этого для jvm_gc_pause_seconds .

Я использую:

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.1.RELEASE</version>
</parent>
  

с

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

....

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

Это мое сообщение об ошибке:

 java.lang.IllegalArgumentException: Prometheus requires that all meters with the same name have the same set of tag keys. There is already an existing meter named 'jvm_gc_pause_seconds'  │
│     at io.micrometer.prometheus.PrometheusMeterRegistry.lambda$applyToCollector$17(PrometheusMeterRegistry.java:429)                                                                       │
│     at java.base/java.util.concurrent.ConcurrentHashMap.compute(Unknown Source)                                                                                                            │
│     at io.micrometer.prometheus.PrometheusMeterRegistry.applyToCollector(PrometheusMeterRegistry.java:413)                                                                                 │
│     at io.micrometer.prometheus.PrometheusMeterRegistry.newTimer(PrometheusMeterRegistry.java:196)                                                                                         │
│     at io.micrometer.core.instrument.MeterRegistry.lambda$timer$2(MeterRegistry.java:308)                                                                                                  │
│     at io.micrometer.core.instrument.MeterRegistry.getOrCreateMeter(MeterRegistry.java:612)                                                                                                │
│     at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:566)                                                                                        │
│     at io.micrometer.core.instrument.MeterRegistry.timer(MeterRegistry.java:306)                                                                                                           │
│     at io.micrometer.core.instrument.Timer$Builder.register(Timer.java:539)                                                                                                                │
│     at io.micrometer.core.instrument.binder.jvm.JvmGcMetrics.lambda$bindTo$1(JvmGcMetrics.java:151)                                                                                        │
│     at java.management/sun.management.NotificationEmitterSupport.sendNotification(Unknown Source)                                                                                          │
│     at jdk.management/com.sun.management.internal.GarbageCollectorExtImpl.createGCNotification(Unknown Source)
  

Есть идеи?!
У меня нет этой ошибки, когда я удаляю конфигурацию конечной точки Prometheus ( micrometer-registry-prometheus зависимость).

Ответ №1:

Я решил свою проблему, обновив micrometer-registry-prometheus с 1.5.1 до 1.5.4

С этим обновлением сообщение об ошибке стало более понятным:

 Prometheus requires that all meters with the same name have the same set of tag keys. There is already an existing meter named 'jvm_gc_pause_seconds' containing tag keys [username, endpoint]. The meter you are attempting to register has keys [username, endpoint, service].
  

Итак, я нашел проблему. Я добавил общий тег ко всем показателям. После удаления общего тега ошибка была устранена.

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

1. моя версия уже 1.5.4, но продолжает получать эту ошибку. я обновился до 1.6.1, это сработало!