From 95d0aed9f5ecc52d15e8b801e67216763008273f Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Thu, 18 Jun 2026 12:49:24 +0530 Subject: [PATCH] Additional metrics for virtual machine orchestration (#13141) Signed-off-by: Alakesh Haloi Co-authored-by: Alakesh Haloi Co-authored-by: Tanisha Ghai --- .../main/java/com/cloud/server/StatsCollector.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/server/StatsCollector.java b/server/src/main/java/com/cloud/server/StatsCollector.java index b6637aa87fc..5fd8b40b148 100644 --- a/server/src/main/java/com/cloud/server/StatsCollector.java +++ b/server/src/main/java/com/cloud/server/StatsCollector.java @@ -166,6 +166,7 @@ import com.codahale.metrics.JvmAttributeGaugeSet; import com.codahale.metrics.Metric; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.MetricSet; +import com.codahale.metrics.JmxReporter; import com.codahale.metrics.jvm.BufferPoolMetricSet; import com.codahale.metrics.jvm.GarbageCollectorMetricSet; import com.codahale.metrics.jvm.MemoryUsageGaugeSet; @@ -387,7 +388,11 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc private boolean _dailyOrHourly = false; protected long managementServerNodeId = ManagementServerNode.getManagementServerId(); protected long msId = managementServerNodeId; - final static MetricRegistry METRIC_REGISTRY = new MetricRegistry(); + public static final MetricRegistry METRIC_REGISTRY = new MetricRegistry(); + + public static void registerMetric(String name, Metric metric) { + METRIC_REGISTRY.register(name, metric); + } public static StatsCollector getInstance() { return s_instance; @@ -410,6 +415,11 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc registerAll("memory", new MemoryUsageGaugeSet(), METRIC_REGISTRY); registerAll("threads", new ThreadStatesGaugeSet(), METRIC_REGISTRY); registerAll("jvm", new JvmAttributeGaugeSet(), METRIC_REGISTRY); + try { + JmxReporter.forRegistry(METRIC_REGISTRY).inDomain("vm-extra").build().start(); + } catch (Exception e) { + logger.warn("Failed to start JMX reporter for METRIC_REGISTRY, metrics will not be visible via JMX", e); + } return true; } @Override