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

如何在SpringBoot 2.1.2中启用ExecutorServiceMetrics?

长孙弘盛
2023-03-14

如何启用此处列出的ExecutorServiceMetrics?

https://github.com/micrometer-metrics/micrometer/blob/master/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm/ExecutorServiceMetrics.java

SpringBoot版本:2.1.2。释放

在/actuator/metrics下,我可以看到jvm和其他一些机箱外自动配置的指标,但看不到执行器指标。

我试过设置这个,但没有运气。

management:
  metrics:
    enable.executor: true

感谢任何帮助。

共有3个答案

凌朗
2023-03-14

以下是我(在kotlin)解决这个问题的方法:

@EnableAsync
@Configuration
class AsyncConfig(
        private val taskExecutorBuilder: TaskExecutorBuilder,
        private val meterRegistry: MeterRegistry) : AsyncConfigurer {

    /**
     * Add monitoring of executor using micrometer.
     */
    override fun getAsyncExecutor(): Executor {
        // create executor based on default spring-boot properties
        val executor = taskExecutorBuilder.build()
        // we need to initialize it before calling monitor
        executor.initialize()
        // monitor the executor (so it is available in metrics) (must be wrapped)
        return ExecutorServiceMetrics.monitor(meterRegistry, executor.threadPoolExecutor, "AsyncExecutor", "async")
    }

}

所以基本上:

  • 利用自动连线的TaskExecutorBuilder,根据Spring构建执行器。任务执行* 属性

请注意,要做到这一点,您必须归还装饰的遗嘱执行人!

在此示例中,由于我给出了前缀(async),因此可用的指标是:

  • 异步。遗嘱执行人
  • 异步。遗嘱执行人。活动
  • 异步。遗嘱执行人。已完成
  • 异步。遗嘱执行人。空闲
  • 异步。遗嘱执行人。水塘核心
  • 异步。遗嘱执行人。水塘最大值
  • 异步。遗嘱执行人。水塘尺寸
  • 异步。遗嘱执行人。队列剩余
  • 异步。遗嘱执行人。已排队
蒋浩
2023-03-14

我发现如果你想用Spring Boot锁定它,你必须手动操作。我使用的是Spring Boot 2.2.9。释放。

创建一个ExecutorServiceMetrics bean,使用应用程序任务执行器bean(这样,您就可以获得之前配置的任何bean大小)。它会自动绑定。

像这样的东西:

@Bean
@ConditionalOnMissingBean
public ExecutorServiceMetrics executorServiceMetrics(@Qualifier("applicationTaskExecutor") ThreadPoolTaskExecutor applicationTaskExecutor) {
    return new ExecutorServiceMetrics(applicationTaskExecutor.getThreadPoolExecutor(), "applicationTaskExecutor",
            Collections.emptyList());
}
单于骁
2023-03-14

我能够在Spring Boot 2.1.2中获得ExecutorServiceMetrics报告指标。发布应用程序,只需创建一个受监控的ExecutorServicebean。我不需要在我的应用程序中添加任何内容。yml或应用程序。属性来实现此功能。

例子:

@Configuration
public class ExecutorConfig {

    @Bean
    public ExecutorService executorService(final MeterRegistry registry) {
        return ExecutorServiceMetrics.monitor(registry, Executors.newFixedThreadPool(20), "my executor", Tags.of("key", "value"));
    }
}

然后,只需将您的executorService连接到您的组件中,并将任务提交给该executorService。

 类似资料:
  • 问题内容: 尝试执行以下行时,仅显示最后两个语句(“ Here is some ERROR”和“ Here is some FATAL”),并且不显示前三个语句。我刚刚开始学习此主题,任何人都可以告诉为什么会这样呢? log4j.property有 问题答案: 您可能在项目中的某个地方有一个log4j.properties文件。在该文件中,您可以配置所需的调试输出级别。请参阅以下示例: 第一行将根

  • 问题内容: 我使用Flickr照片搜索API的JavaScript创建了一个演示。现在,我将其转换为AngularJs。我在互联网上搜索,发现下面的配置。 组态: 服务: 控制器: 问题答案: 你不知道 您请求的服务器必须实现CORS才能从您的网站访问权限中授予JavaScript。您的JavaScript无法授予自己访问其他网站的权限。

  • 问题内容: 标题说说我的问题。我需要将DTO包装到javascript方法回调中。目前,我应要求返回JSON。但是在Ajax中使用此问题,因为我将GET发送到其他域。当然还有治安警察。 我有创建附加提供的想法。有任何示例,链接或建议如何执行。 问题答案: RESTEasy中没有明确支持JSONP,但是在应用程序中启用JSONP的一种简单方法是编写Servlet过滤器。 这里有一些链接可以帮助您编写

  • 问题内容: 我正在尝试使用jquery提出跨源请求,但它一直被消息拒绝 XMLHttpRequest无法加载http:// …请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不能访问Origin…。 我正在使用flask,heroku和jquery 客户端代码如下所示: 在heroku方面,我正在使用flask,就像这样 问题答案: 当我部署到Heroku

  • 问题内容: 当我在MySQL中执行查询时,它返回一条错误消息,说明未启用InnoDB。当我单击存储引擎时,InnoDB被禁用。 如何启用InnoDB? 问题答案: 您需要在文件中启用它,然后重新启动服务器: http://dev.mysql.com/doc/refman/5.1/zh-CN/innodb- parameters.html#option_mysqld_innodb 或者,您可以在运行

  • 问题内容: 如何在xampp中启用curl? 我的PHP Twitter应用程序需要curl函数。但是未在XAMPP中启用它。如何启用它。我没有选择这样做的选择。 问题答案: 您必须修改xampp文件夹中的php.ini文件。需要更改三个不同位置的三个文件。 请按照以下步骤在Windows中使用XAMPP启用curl库: 步骤1: 浏览并打开以下3个文件 第2步: 通过删除分号(;)取消注释php