使用cxf-spring-boot-starter-jaxrs的Spring Boot应用程序中的指标http_server_requests_seconds_count包含uri为“未知”

时间:2019-04-04 13:42:26

标签: spring spring-boot metrics spring-boot-actuator spring-micrometer

版本为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

3 个答案:

答案 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);
}