当前位置: 首页 > 知识库问答 >
问题:

Spring Boot Actuator正在使用URL动态参数记录选项请求

慕容越泽
2023-03-14

我们正在发布Spring Boot 1.5.9,我们确实为普罗米修斯提供了指标。

当我们收到OPTIONS请求时,不会替换path参数。对于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) {
      ...
    }
}

当调用与endpoint"/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

第一个来自选项请求。GET请求中的第二个。

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

这是/metrics输出:

counter.status.200.claims.clgrRFhIRlNDV3pJTXhXRG40dWlPWURrVTJnMU1nPT0 2counter.status.200.cloudfoundryapplication4

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

<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>

共有1个答案

方献
2023-03-14

似乎将Spring Boot更新到1.5.22。发布

导致选项请求的输出,如下所示:

# HELP counter_status_200_unmapped counter_status_200_unmapped
# TYPE counter_status_200_unmapped gauge
counter_status_200_unmapped 5.0

这并不完美,但所有选项请求都被收集到一个度量中,而不是每个单独的度量中。

 类似资料:
  • 我有一个要求。你能建议一下实现这一目标的可能方法吗。 我想根据每个路由中传递的URL更改应用程序的主题。我正在使用以下技术。-前端:AngularJS-后端:节点。js 例如:localhost/x/关于localhost/y/关于 我通过使用Location传递参数,通过cookies实现了这些。登录时进行搜索。但我在所有路线上都需要那个主题参数。基于这个主题,我们需要改变。有人能提出可能的方法

  • 我正在使用在我的Android应用程序上发送HTTP POST请求。其中一个POST请求通过截击触发时返回。当通过rest客户端(Postman、curl)触发时,API返回。我怀疑通过截击发送的请求正文中有什么错误。 有没有办法记录volley在POST请求中发送的完整请求主体?我启用了,它确实记录了完整的响应,但它没有记录请求主体或URL。 请帮助我将HTTP请求的详细信息(url、请求正文等

  • 自1.14.0开始,zuul网关支持动态修改请求参数。即在网关修改客户端传递过来的参数,然后发送到微服务端。 客户端参数{"name": "jim"} --> zuul中修改为{"name": "Lucy"} --> 微服务端将收到{"name": "Lucy"} 使用场景:客户端请求参数经过加密,在网关解密后,再次发送明文参数给微服务端 如何使用 在网关springboot启动函数中添加如下代

  • 这使得日志难以读取、冗长和不必要的复杂(在大多数情况下,其他参数都不存在)。 我想处理所有的案件,只保留必要的数据。例子: 我可以手工编码: 它应该支持可选参数,用给定的字符串替换boolean/condition,支持用和分隔空格、逗号和单词。 也许有这样的图书馆吗?或者也许至少有一种更简单的编码方式? 如果不是这样,我就没有其他办法为日志记录中的消息编写自己的库了。此外,这种库将提供所有日志的

  • 我有一个从外部数据库获取数据的功能,我可以获得特定的电影信息,如id、名称、类型等。现在,如果电影类型是例如动画,我只希望将这一种类型添加到db中。现在我可以使用isset来解决这个问题,但接下来我会为tyresnull设置db条目,我想避免这种情况。解决这个问题的最佳方法是什么?使用foreach循环?

  • 我正在创建一个动态表单。ie基于下拉框中的用户选择。根据下拉选择,我可以有2到20个字段。因此,每次用户更改下拉列表时,我们都可以有各种类型的不同表单字段。 提交url参数。是否可以仅提交可见且与用户选择相关的表单字段当前url字符串正在提交所有值。 对于场景1 当用户从下拉列表中选择“A”时。我们显示firstname和lastname输入字段以及url?fname=fname 情景2 当用户从