Prometheus 指标没有给出路径变量值
Posted
技术标签:
【中文标题】Prometheus 指标没有给出路径变量值【英文标题】:Prometheus metrics not give path variable values 【发布时间】:2020-08-20 02:52:42 【问题描述】:来自 spring boot 应用程序的代码示例,它正在生成 prometheus 指标。
我正在尝试使用http://localhost:8080/myApi/ABC 访问它。
但在 prometheus 指标中,它使用 "uri=/myApi/refNum" 生成指标。
Promotheus 指标:
my_example_api_secondsapplication="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)
...
Pom.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】:它按设计工作。
假设您有一个用户端点 @GetMapping(value = "user/userId")
如果您要调用 user/1
、user/2
,一直到 user/1000000
,您会希望指标系统记录 1 个指标,以及该单个端点的所有调用的聚合时间。
要记录单个呼叫,您需要添加日志消息,而不是指标框架。
【讨论】:
以上是关于Prometheus 指标没有给出路径变量值的主要内容,如果未能解决你的问题,请参考以下文章
ECS 中 docker 任务的 Prometheus 指标抓取
在 C 中给出 unsigned long long 变量值的警告
如何在 grafana 变量中为 prometheus 数据源提供带有时间范围的 label_values?
在 Spring Boot Camel 应用程序公开的 Micrometer / Prometheus 信息中包含其他 JMX 指标