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

将自定义标签添加到默认Spring启动执行器指标

牛凌
2023-03-14

我目前正在从事一个Spring boot(webflux)项目,在该项目中,我们使用Spring boot-actuator依赖关系在/actuator/prometheusendpoint上公开了我们的应用程序的指标,默认情况下,该依赖关系为我们提供了例如:http\u server\u requests\u seconds\u bucket metric。默认情况下,它有{exception=“None”、method=“POST”、outcome=“SUCCESS”、status=“200”、uri=“/test”、le=“0.268435456”、}标签。我想添加另一个标签,称为“挑战”,这取决于请求负载。例如,我的请求负载如下所示,

{
 "type" : "basic",
 "method" : "someMethod"
}

我想在该指标中添加一个标签,作为,http_server_requests_seconds_bucket{异常=“无”,...,挑战=“基本”},它基于请求有效负载“类型”参数。有人能告诉我如何将自定义标签添加到spring-boot-执行器提供的现有默认指标中吗

注意:“type”的值数量有限,因此不会爆炸

共有1个答案

隗和裕
2023-03-14

经过一点研究,我发现我们可以通过扩展名为DefaultWebMvcTagsProvider(用于Spring MVC)的类并添加自定义标记来实现这一点。

@Component
public class CustomTagsAdder extends DefaultWebMvcTagsProvider {

@Override
public Iterable<Tag> getTags(HttpServletRequest request, HttpServletResponse response, Object handler, Throwable exception) {

    List<Tag> tags = new ArrayList<>();
    tags.add(Tag.of("CUSTOM_TAG_KEY", "CUSTOM_TAG_VALUE")); // Repeat this line for each of the tags you want


    for(Tag tag : super.getTags(request, response, handler, exception))
        tags.add(tag);

    return tags;
}
}

类似地,对于webflux项目,您可以扩展DefaultWebFluxTagsProvider并添加自定义标记。

 类似资料:
  • 我想使用actuator为我的spring boot rest web服务实现自定义度量或统计信息,但我找不到简单的教程。例如: 如何显示某个控制器被调用了多少次以及填充了什么确切的参数字段? 我如何创建一个指标,当它的URL被调用时,它会运行某些查询并显示带有某些结果的json

  • 我目前正在从事一个Spring webflux项目,该项目具有执行器、测微计依赖项,如下所示, 公开默认指标(包括Spring webClient指标)。我使用Spring WebClient调用了4个不同的endpoint。我想知道是否有一种方法可以将特定的标签添加到每个被添加到默认指标的webclient调用中。我有一些指标,比如Webclient在/actuator/prometheusen

  • 我现在在< code >Spring靴致动器的世界里... 如何从@Service类的自定义函数添加自己的度量? 我希望有这样的东西 目前,我只能找到简单的指标,如 但当我必须聚合数据库条目之类的东西时,这并没有多大帮助。我需要一个更灵活的。我还发现了类似于<code>的MeterBinder。bindTo但这不起作用。没有错误,没有指标。我已经找了好几个月,但没有成功。 谢谢

  • 我正在我的项目中使用模块,该模块公开了要监视的RESTendpointURL 默认情况下,仅公开 和 终结点。 根据我的使用案例,我正在通过< code > application . properties 文件自定义endpoint。 我想了解,Spring启动究竟在哪里为和创建实际的endpoint,以及它如何通过HTTP公开它们?

  • 我用的是Spring靴。为了监视JVM内存,我正在使用Spring Boot Actuator的/metricsendpoint。 我无法理解键实际上代表什么: 有人能告诉我它们到底是什么吗? CMS(并发标记扫描)和MarkSweepCompact相同吗?我应该使用CMS(并发标记扫描)吗?或者我应该使用哪种GC算法?

  • 我们在这个项目上有一个微服务架构,我们使用普罗米修斯和格拉法纳进行监控。这些服务是使用Spring启动实现的,并且通过Spring启动执行器与普罗米修斯集成。该项目中有一些Kafka消费者,并且对于每个@KafkaListenerSpring都会生成一些指标。下面是用于指标的普罗米修斯时间序列 < code > org . spring framework . Kafka . kafkaliste