版本为2.0.8的Spring Boot应用程序中的指标http_server_requests_seconds_count。使用弹簧执行器公开的版本包含uri为“未知”。 Spring Boot应用程序使用cxf-spring-boot-starter-jaxrs公开其余端点。 我在项目中添加了micrometer-registry-prometheus依赖性。
http_server_requests_seconds_count{exception="None",method="POST",status="200",uri="UNKNOWN",} 2.0
我尝试在项目中添加micrometer-jersey2依赖项。
实际
http_server_requests_seconds_count{exception="None",method="POST",status="200",uri="UNKNOWN",} 2.0
预期:
http_server_requests_seconds_count{exception="None",method="GET",status="200",uri="/sayHello",} 2.0
答案 0 :(得分:1)
在OP注释中澄清后(CXF是另一个JAX-RS实现):Micrometer当前不支持处理CXF请求。它(Spring WebMvc)无法提取可选参数化的请求url,在这种情况下,它会退回到UNKNOWN。 (否则,如果您的CXF终结点提供一些可高度参数化的URL并获得大量流量,则可能会导致指标爆炸式增长。)
因此,您可以看看micrometer-jersey2
的实现并得出micrometer-cxf
的实现;)(或者(如果不是这样的话)(使用搜索)-导致Micrometer或CXF出现问题项目。我提到的是后者,因为他们可能会对执行该项目感兴趣。)
答案 1 :(得分:0)
您还可以使用io.github.ddk-prog:cxf-prometheus-metrics收集普罗米修斯的cxf指标。
向您的pom.xml添加依赖项
<dependency>
<groupId>io.github.ddk-prog</groupId>
<artifactId>cxf-prometheus-metrics</artifactId>
<version>1.0.0</version>
</dependency>
和以下bean到您的应用程序配置。
@Bean
public FactoryBeanListener cxfPrometheusFeatureBean(final CollectorRegistry registry) {
return new PrometheusFactoryBeanListener(registry);
}
您将在Spring Boot执行器Prometheus报告中获得每个端点和操作的cxf_requests_total,cxf_requests_success,cxf_requests_failed,cxf_requests_seconds。 例如,
cxf_requests_seconds{endpoint="server1",operation="server1Method",} 0.0157349
答案 2 :(得分:0)
如果需要cxf统计信息以获取千分尺报告,可以尝试
<dependency>
<groupId>io.github.kdprog</groupId>
<artifactId>cxf-micrometer-metrics</artifactId>
<version>1.0.0</version>
</dependency>
将报告以下统计信息
cxf_requests_processed_total - total number of cxf requests ,
cxf_requests_seconds_sum - total execution time of cxf requests,
cxf_requests_seconds_max - maximum execution time of cxf request,
cxf_requests_success_total - total number of successfully processed cxf requests,
cxf_requests_failed_total - total number of failed cxf requests
每个客户端或服务器cxf端点的每种Web服务方法。
对于spring应用程序,将以下bean添加到您的应用程序配置中。
@Bean
public FactoryBeanListener cxfMicrometerBean(final MeterRegistry registry) {
return new MicrometerFactoryBeanListener(registry);
}