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

使用dropWizard度量中的计量器监视线程池

乐正烨熠
2023-03-14

我想使用DropWizard中的Guage指标来监控我的线程池大小。

        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
            2,
            2,
            1,
            TimeUnit.MINUTES,
            new ArrayBlockingQueue<Runnable>(100),
            new ThreadPoolExecutor.DiscardPolicy());

    metricRegistry.register(name(ThreadPoolExecutor.class, "ThreadPoolRemainingCapacity"), (Gauge<Integer>) () -> threadPoolExecutor.getQueue().remainingCapacity());
    metricRegistry.register(name(ThreadPoolExecutor.class, "ThreadPoolOccupiedCapacity"), (Gauge<Integer>) () -> threadPoolExecutor.getQueue().size());

    return threadPoolExecutor;

据我所知,这是在间隔时间内自动完成的。但似乎我没有获得注册指标的任何监控数据。虽然我的应用程序中的其他指标(如计数器和计时器)工作得很好。

有人能帮助我哪里做错了吗?

谢谢。

共有2个答案

宋琛
2023-03-14

您的代码应该已经是正确的。您可以执行以下操作来调试它:

  • 检查您的指标是否出现在

公西姚石
2023-03-14

您应该注册一个实现 MetricSet 接口的类,如下所示(此上有一些可以忽略的Spring注释):

@Component
public class ThreadPoolGaugeSet implements MetricSet {

    @Autowired 
    @Qualifier( "taskExecutor")
    private ThreadPoolTaskExecutor taskExecutor;

    @Autowired 
    @Qualifier( "taskExecutorLowPrio")
    private ThreadPoolTaskExecutor lowPriotaskExecutor;

    @Override
    public Map<String, Metric> getMetrics() {
        final Map<String, Metric> gauges = new HashMap<>();

        gauges.put( "highPrioActive", (Gauge<Long>) () -> (long) taskExecutor.getActiveCount() );
        gauges.put( "lowPrioActive",  (Gauge<Long>) () -> (long) lowPriotaskExecutor.getActiveCount() );
        return gauges;
    }
}

...

metricRegistry.register( "threadpool", poolGauge );
 类似资料:
  • 我正在学习DropWizard Metrics库(以前的Coda Hale指标),我不知道什么时候应该使用vs。根据文档: 仪表:仪表测量一组事件发生的速率 以及: 计时器:计时器基本上是一种事件持续时间的直方图和它发生的速率的度量 基于这些定义,我无法区分它们之间的区别。让我困惑的是,计时器的使用方式与我预期的不同。对我来说,计时器就是:计时器;它应该测量开始和停止之间的时间差。但计时器似乎也能

  • 我正在尝试使用prometheus来监视Spring-Boot中的一些缓存度量。缓存是用创建的,我的配置如下: 我的缓存是用一个简单的创建的--我没有其他缓存代码或设置。我也没有使用任何特定的缓存,只提供了内置的一个。 我看到了一些关于需要手动注册缓存的注释,但我也无法使其工作(我也不确定它是否适用)。在尝试这样做时,问题是我无法在bean中自动连接。没找到。

  • 本文向大家介绍监视器与信号量,包括了监视器与信号量的使用技巧和注意事项,需要的朋友参考一下 监视器和信号灯用于进程同步,并允许进程使用互斥来访问共享资源。但是,监视器和信号灯包含许多差异。关于这两个的详细信息如下- 监控器 监视器是一种同步构造,旨在克服由信号量引起的问题,例如定时错误。 监视器是抽象数据类型,包含共享的数据变量和过程。共享数据变量不能由进程直接访问,并且需要过程才能允许单个进程一

  • 我想监视spring-data-redis中的池度量。JedisconnectionFactory的游泳池是私人的。我怎么才能拿到?我搜索谷歌,但我找不到很好的方法做到这一点。

  • 为此,我使用spring-boot-starter-web-services(2.0.8.release)。我需要为来自遗留服务的SOAP响应添加度量标准(状态代码为200、非200等的请求数) 我的项目依赖于spring-boot-actuator,但不幸的是,我在actuator/千分尺文档中没有发现如何做到这一点。 是否可以为WebServiceTemplate启用度量标准,它实际上用于从远

  • 本文向大家介绍如何使用信号量实现监视器?,包括了如何使用信号量实现监视器?的使用技巧和注意事项,需要的朋友参考一下 为了使用信号量实现监视器,为每个监视器提供了一个信号量互斥锁(已初始化为1)。Wait(mutex)必须在进入监视器之前由进程执行,并且必须在离开监视器之后执行signal(mutex)。由于信令过程必须等待,直到恢复的过程离开或等待,所以引入了另一个信号量(下一步),初始化为0。信