gpt4 book ai didi

java - 使用来自 dropWizard 指标的仪表监控线程池

转载 作者:行者123 更新时间:2023-11-30 08:32:07 24 4
gpt4 key购买 nike

我想使用 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;

据我了解,这是在间隔时间内自动完成的。但似乎我没有获得任何有关我注册指标的监控数据。尽管我的应用程序中的其他指标(例如计数器和计时器)工作正常。

谁能帮我解决我做错的地方?

谢谢。

最佳答案

你应该注册一个实现 MetricSet 接口(interface)的类(这个有一些你可以忽略的 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 );

关于java - 使用来自 dropWizard 指标的仪表监控线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40280230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com