简体   繁体   English

带有球衣和千分尺的Prometheus端点中的模板化URL

[英]Templated URLs in Prometheus End Point with Jersey and Micrometer

I am trying to integrate micrometer in a spring application built using Jersey REST. 我正在尝试将千分尺集成到使用Jersey REST构建的spring应用程序中。 I am using Spring Boot 1.5. 我正在使用Spring Boot 1.5。

When I have a pure Spring REST APIs (using Spring Web Annotations), prometheus results are displayed as below 当我具有纯Spring REST API(使用Spring Web注释)时,普罗米修斯结果显示如下

http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/v2/api/greeting/{name}",} 18.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/v2/api/greeting/{name}",} 0.39309228

But for the APIs built using Jersey, the prometheus metrics are not templated. 但是,对于使用Jersey生成的API,没有对prometheus指标进行模板化。

http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_1",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_1",} 0.043685372
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_2",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_2",} 0.006280183
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_3",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_3",} 0.006258448
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_4",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_4",} 0.006635791
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_5",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/v1/api/greeting/Jersey_5",} 0.006313993

Looks like there is an open issue with micrometer listed at https://github.com/micrometer-metrics/micrometer/issues/486 which causes this issue with jersey. 似乎在https://github.com/micrometer-metrics/micrometer/issues/486上列出了千分尺的一个未解决的问题,这导致球衣出现此问题。 A remedy is mentioned at https://github.com/micrometer-metrics/micrometer/issues/486#issuecomment-372446968 . https://github.com/micrometer-metrics/micrometer/issues/486#issuecomment-372446968中提到了一种补救措施。 When I add spring.jersey.type=filter, none of the actuator APIs work. 当我添加spring.jersey.type = filter时,所有执行器API均不起作用。 Neither prometheus end point works. 普罗米修斯的端点都不起作用。

I do not want un-templated URLs appearing in Prometheus end point. 我不希望未模板化的URL出现在Prometheus端点中。 Since my API can have infinitely many combinations (many names in above examples), it will create large metrics data and in turn prometheus server will have tones of metrics. 由于我的API可以具有无限多种组合(上述示例中的许多名称),因此它将创建大型指标数据,而Prometheus服务器将具有指标色调。

Any help here is highly appreciated. 非常感谢您的任何帮助。

I created a sample to reproduce the problem from your description but failed to reproduce it. 我创建了一个样本来重现您的描述中的问题,但未能重现。 I can see URI templates are being used in the Prometheus scrape endpoint ( /management/prometheus ) as follows: 我可以看到URI模板在Prometheus抓取端点( /management/prometheus )中正在使用,如下所示:

# HELP http_server_requests_seconds  
# TYPE http_server_requests_seconds summary
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/prometheus",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/prometheus",} 0.062559545
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/hello/{name}",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/hello/{name}",} 0.02323862
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="UNKNOWN",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="UNKNOWN",} 0.050339909
# HELP http_server_requests_seconds_max  
# TYPE http_server_requests_seconds_max gauge
http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/prometheus",} 0.062559545
http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/hello/{name}",} 0.02323862
http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="UNKNOWN",} 0.050339909

I guess there might be some misconfiguration in your project or I might miss some requirement(s) from your description. 我想您的项目中可能存在一些配置错误,或者我可能会从您的描述中错过某些要求。

UPDATE: 更新:

Based on the comment, disabling Web MVC metrics will provide cleaner result as follows: 根据评论,禁用Web MVC指标将提供更清晰的结果,如下所示:

# HELP http_server_requests_seconds  
# TYPE http_server_requests_seconds summary
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/hello/{name}",} 1.0
http_server_requests_seconds_sum{exception="None",method="GET",status="200",uri="/hello/{name}",} 0.032691223
# HELP http_server_requests_seconds_max  
# TYPE http_server_requests_seconds_max gauge
http_server_requests_seconds_max{exception="None",method="GET",status="200",uri="/hello/{name}",} 0.032691223

I also updated the sample in the following commit: https://github.com/izeye/sample-micrometer-spring-boot/commit/14ff838c48cea0c38cf12eeec8e7b211dffe2c50 我还在以下提交中更新了示例: https : //github.com/izeye/sample-micrometer-spring-boot/commit/14ff838c48cea0c38cf12eeec8e7b211dffe2c50

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM