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

Spring启动执行器-实现自定义指标

申高卓
2023-03-14

我想使用actuator为我的spring boot rest web服务实现自定义度量或统计信息,但我找不到简单的教程。例如:

  • 如何显示某个控制器被调用了多少次以及填充了什么确切的参数字段?
  • 我如何创建一个指标,当它的URL被调用时,它会运行某些查询并显示带有某些结果的json

共有2个答案

姬泰
2023-03-14

对于第二点,解决方案是创建一个endpoint类(它可以是或不是rest控制器类)。例如:

@Component
@RestControllerEndpoint(id = "pfm-statistics")
public class StatisticsEndpoint {
  @GetMapping(value = "/", produces = "application/vnd.openxmlformats- 
     officedocument.spreadsheetml.sheet")
  @ResponseBody
  public byte[] generateStatisticsAsExcel() {
 ...

请注意,ID是要从URL调用的路径。我们也可以创建一个简单的endpoint,如果需要,只需返回一个字符串。在这种情况下,我们可以使用@Endpoint来代替@RestControllerEndpoint注释,作为旁注,id应该始终包含破折号

戚奇略
2023-03-14

这似乎是AOP(面向方面编程)的一个很好的场景,因为这将允许您将此统计逻辑与业务逻辑分开。

查看Spring文档,了解有关AOP以及如何使用Spring实现AOP的更多信息。

然后,您可以在控制器上定义一个切入点,并提供一个用于计算(可能然后存储)数据的服务。

参考以下链接AOP示例

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

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

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

  • 我目前正在从事一个Spring boot(webflux)项目,在该项目中,我们使用Spring boot-actuator依赖关系在/actuator/prometheusendpoint上公开了我们的应用程序的指标,默认情况下,该依赖关系为我们提供了例如:http\u server\u requests\u seconds\u bucket metric。默认情况下,它有{exception=

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

  • 我们有一个Spring booter应用程序,它的父级定义为spring-boot-starter-父级。但在我们的项目中,我们有一个父pom,其中定义了分发管理,项目中的所有子模块都继承自它。现在,由于Spring booter应用程序已经继承自spring-boot-starter-父级,并且我不想重复分发管理,我想拥有一个自定义的Spring booter模块,以便能够在其中定义分发管理,然