我们正在取消 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>