MeterRegistry IllegalArgumentException

问题描述

我正在使用MeterReigstry推送要由Prometheus轮询的指标。但是,当我添加动态代码时,出现以下异常:

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 'execution_time_seconds' containing tag keys [a,e,b,c,d]. The meter you are attempting to register has keys [a,d,f].

是什么原因造成的?如何解决?我正在使用

<dependency> 
<groupId>io.micrometer</groupId> 
<artifactId>micrometer-spring-legacy</artifactId> 
<version>1.3.2</version> 
</dependency>

解决方法

我认为这是来自底层Prometheus客户的限制。单个指标的所有测量结果都必须具有相同的标签集。

https://github.com/micrometer-metrics/micrometer/issues/877#issuecomment-425102772

解决方案将是确保该度量的所有度量都包含相同的标签集。如果这不是一种选择,那么您可能会考虑使用其他指标后端。