我正在尝试将千分尺集成到使用 Jersey REST 构建的弹簧应用程序中。我正在使用 Spring Boot 1.5。
当我有一个纯 Spring REST APIs(使用 Spring Web Annotations)时,prometheus 结果显示如下
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
但是对于使用 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
看起来在https://github.com/micrometer-metrics/micrometer/issues/486中列出的千分尺存在一个未解决的问题,导致球衣出现此问题。https://github.com/micrometer-metrics/micrometer/issues/486#issuecomment-372446968中提到了一种补救措施。当我添加 spring.jersey.type=filter 时,没有一个执行器 API 起作用。普罗米修斯端点都不起作用。
我不希望在 Prometheus 端点中出现未模板化的 URL。由于我的 API 可以有无限多的组合(上面示例中的许多名称),它将创建大量的指标数据,而普罗米修斯服务器将拥有大量的指标。
非常感谢这里的任何帮助。