/** * 依賴jar包 metrics-core-4.1.9.jar *
* NettyServer.exec 對象的定義 見 https://www.cnblogs.com/xiaodu9499/p/14328906.html
*/
public class MetricsUtils { /** * 監控堆外內存使用情況 * 工作線程的隊列情況 */ public static void start() { // 注冊 MetricRegistry metricRegistry = new MetricRegistry(); metricRegistry.register("已使用直接內存", (Gauge<Long>) () -> PlatformDependent.usedDirectMemory()); metricRegistry.register("最大直接內存", (Gauge<Long>) () -> PlatformDependent.maxDirectMemory()); for (EventExecutor eventExecutor : NettyServer.exec) { metricRegistry.register("exec=======等待隊列大小"+eventExecutor.hashCode(), (Gauge<Integer>) () ->((SingleThreadEventExecutor)eventExecutor).pendingTasks()); } // 打印到控制台 ConsoleReporter consoleReporter = ConsoleReporter.forRegistry(metricRegistry).build(); // 每5秒打印一次 consoleReporter.start(5, TimeUnit.SECONDS); } }