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());
+      }
    }
 }

Reply via email to