This is an automated email from the ASF dual-hosted git repository. jbertram pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/main by this push: new 40425d422a ARTEMIS-4291 Add the "broker" tag in a consistent manner to all exported metrics. 40425d422a is described below commit 40425d422abe8e6121510a5f7bb18af12c22f147 Author: Roelof Naude <roelof.na...@gmail.com> AuthorDate: Thu May 25 09:26:20 2023 +0200 ARTEMIS-4291 Add the "broker" tag in a consistent manner to all exported metrics. Some scrapers, e.g. prometheus, add an "instance" tag. This value may not be the same as the broker name, which results in these metrics becoming more difficult to match up with the corresponding broker. --- .../core/server/metrics/MetricsManager.java | 32 ++++++++--------- .../tests/integration/plugin/JvmMetricsTest.java | 5 +++ .../{JvmMetricsTest.java => NettyMetricsTest.java} | 41 +++++++--------------- 3 files changed, 33 insertions(+), 45 deletions(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/MetricsManager.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/MetricsManager.java index e5c84d48df..02e366640a 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/MetricsManager.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/metrics/MetricsManager.java @@ -57,20 +57,23 @@ public class MetricsManager { MetricsConfiguration metricsConfiguration, HierarchicalRepository<AddressSettings> addressSettingsRepository) { this.brokerName = brokerName; - meterRegistry = metricsConfiguration.getPlugin().getRegistry(); - Metrics.globalRegistry.add(meterRegistry); + this.meterRegistry = metricsConfiguration.getPlugin().getRegistry(); this.addressSettingsRepository = addressSettingsRepository; - if (metricsConfiguration.isJvmMemory()) { - new JvmMemoryMetrics().bindTo(meterRegistry); - } - if (metricsConfiguration.isJvmGc()) { - new JvmGcMetrics().bindTo(meterRegistry); - } - if (metricsConfiguration.isJvmThread()) { - new JvmThreadMetrics().bindTo(meterRegistry); - } - if (metricsConfiguration.isNettyPool()) { - new NettyPooledAllocatorMetrics(PooledByteBufAllocator.DEFAULT.metric()).bindTo(meterRegistry); + if (meterRegistry != null) { + Metrics.globalRegistry.add(meterRegistry); + meterRegistry.config().commonTags("broker", brokerName); + if (metricsConfiguration.isJvmMemory()) { + new JvmMemoryMetrics().bindTo(meterRegistry); + } + if (metricsConfiguration.isJvmGc()) { + new JvmGcMetrics().bindTo(meterRegistry); + } + if (metricsConfiguration.isJvmThread()) { + new JvmThreadMetrics().bindTo(meterRegistry); + } + if (metricsConfiguration.isNettyPool()) { + new NettyPooledAllocatorMetrics(PooledByteBufAllocator.DEFAULT.metric()).bindTo(meterRegistry); + } } } @@ -92,7 +95,6 @@ public class MetricsManager { builder.accept((metricName, state, f, description) -> { Gauge.Builder meter = Gauge .builder("artemis." + metricName, state, f) - .tag("broker", brokerName) .tag("address", address) .tag("queue", queue) .description(description); @@ -109,7 +111,6 @@ public class MetricsManager { builder.accept((metricName, state, f, description) -> { Gauge.Builder meter = Gauge .builder("artemis." + metricName, state, f) - .tag("broker", brokerName) .tag("address", address) .description(description); gaugeBuilders.add(meter); @@ -125,7 +126,6 @@ public class MetricsManager { builder.accept((metricName, state, f, description) -> { Gauge.Builder meter = Gauge .builder("artemis." + metricName, state, f) - .tag("broker", brokerName) .description(description); gaugeBuilders.add(meter); }); diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/JvmMetricsTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/JvmMetricsTest.java index 501948a675..c7c36decc3 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/JvmMetricsTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/JvmMetricsTest.java @@ -72,13 +72,18 @@ public class JvmMetricsTest extends ActiveMQTestBase { .setJvmThread(thread))); server.start(); boolean result = false; + String brokerTagValue = ""; for (Meter.Id meterId : MetricsPluginTest.getMetrics(server).keySet()) { if (meterId.getName().startsWith(match)) { result = true; + brokerTagValue = meterId.getTag("broker"); break; } } assertEquals(found, result); + if (found) { + assertEquals(brokerTagValue, server.getConfiguration().getName()); + } } } diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/JvmMetricsTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/NettyMetricsTest.java similarity index 61% copy from tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/JvmMetricsTest.java copy to tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/NettyMetricsTest.java index 501948a675..a0d7971274 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/JvmMetricsTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/plugin/NettyMetricsTest.java @@ -25,7 +25,7 @@ import org.apache.activemq.artemis.tests.util.ActiveMQTestBase; import org.junit.Before; import org.junit.Test; -public class JvmMetricsTest extends ActiveMQTestBase { +public class NettyMetricsTest extends ActiveMQTestBase { @Override @Before @@ -34,51 +34,34 @@ public class JvmMetricsTest extends ActiveMQTestBase { } @Test - public void testJvmMemoryMetricsPositive() throws Exception { - internalTestMetrics(true, true, false, false, "jvm.memory"); + public void testNettyPoolMetricsPositive() throws Exception { + internalTestMetrics(true, true, "netty.pooled"); } @Test - public void testJvmMemoryMetricsNegative() throws Exception { - internalTestMetrics(false, false, false, false, "jvm.memory"); + public void testNettyPoolMetricsNegative() throws Exception { + internalTestMetrics(false, false, "netty.pooled"); } - @Test - public void testJvmGcMetricsPositive() throws Exception { - internalTestMetrics(true, false, true, false, "jvm.gc"); - } - - @Test - public void testJvmGcMetricsNegative() throws Exception { - internalTestMetrics(false, false, false, false, "jvm.gc"); - } - - @Test - public void testJvmThreadMetricsPositive() throws Exception { - internalTestMetrics(true, false, false, true, "jvm.thread"); - } - - @Test - public void testJvmThreadMetricsNegative() throws Exception { - internalTestMetrics(false, false, false, false, "jvm.thread"); - } - - private void internalTestMetrics(boolean found, boolean memory, boolean gc, boolean thread, String match) throws Exception { + private void internalTestMetrics(boolean found, boolean pool, String match) throws Exception { ActiveMQServer server = createServer(false, createDefaultInVMConfig() .setMetricsConfiguration(new MetricsConfiguration() .setPlugin(new SimpleMetricsPlugin().init(null)) - .setJvmMemory(memory) - .setJvmGc(gc) - .setJvmThread(thread))); + .setNettyPool(pool))); server.start(); boolean result = false; + String brokerTagValue = ""; for (Meter.Id meterId : MetricsPluginTest.getMetrics(server).keySet()) { if (meterId.getName().startsWith(match)) { result = true; + brokerTagValue = meterId.getTag("broker"); break; } } assertEquals(found, result); + if (found) { + assertEquals(brokerTagValue, server.getConfiguration().getName()); + } } }