微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Boot Actuator 正在记录带有 URL 动态参数的 OPTIONS 请求

如何解决Spring Boot Actuator 正在记录带有 URL 动态参数的 OPTIONS 请求

我们正在取消 Spring Boot 1.5.9,并且我们确实为 Prometheus 提供了指标。

当我们确实收到 OPTIONS 请求时,路径参数不会被替换。对于 GET 请求,参数被替换。控制器看起来像这样:

@Slf4j
@RequestMapping(method = { RequestMethod.GET },path = "/claims/{token}")
@RestController
public class ClaimDetailController {

    @GetMapping(value = "",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,params = "token")
    public ResponseEntity getDetail(@PathVariable(value = "token") final String token) {
      ...
    }
}

调用带有端点“/prometheus”的执行器时,我们得到:

# HELP gauge_response_claims_clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0 gauge_response_claims_clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0
# TYPE gauge_response_claims_clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0 gauge
gauge_response_claims_clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0 5.0
# HELP gauge_response_claims_token gauge_response_claims_token
# TYPE gauge_response_claims_token gauge
gauge_response_claims_token 1502.0

一个来自 OPTIONS 请求。来自 GET 请求的第二个。

那么为什么来自 OPTIONS 请求的令牌没有被替换?这能实现吗? 如果没有 - 是否可以从指标中删除 OPTIONS 请求?

这是 /metrics 输出

counter.status.200.claims.clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0 2 counter.status.200.cloudfoundryapplication 4

以下是我们使用的一些依赖项:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>
    
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-cloudfoundry-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-spring-legacy</artifactId>
    <version>1.3.16</version>
</dependency>

<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_spring_boot</artifactId>
    <version>0.3.0</version>
</dependency>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_servlet</artifactId>
    <version>0.3.0</version>
</dependency>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_hotspot</artifactId>
    <version>0.3.0</version>
</dependency>

解决方法

似乎将 Spring Boot 更新为 1.5.22.RELEASE

导致 OPTIONS 请求的输出如下:

# HELP counter_status_200_unmapped counter_status_200_unmapped
# TYPE counter_status_200_unmapped gauge
counter_status_200_unmapped 5.0

这并不完美,但所有 OPTIONS 请求都被收集到一个指标中,而不是每个指标都在一个单独的指标中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。