You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2019/03/19 23:31:13 UTC

[geode] branch develop updated: GEODE-6528: Use Micrometer Binder for JVM Metrics (#3312)

This is an automated email from the ASF dual-hosted git repository.

klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new 6fc7ea4  GEODE-6528: Use Micrometer Binder for JVM Metrics (#3312)
6fc7ea4 is described below

commit 6fc7ea4601141fe16912afeefb3f29193705afc6
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Tue Mar 19 16:31:02 2019 -0700

    GEODE-6528: Use Micrometer Binder for JVM Metrics (#3312)
    
    Co-Authored-By: Dale Emery demery@pivotal.io
    Co-Authored-By: Michael Oleske moleske@pivotal.io
---
 .../metrics/CacheMeterRegistryFactory.java         | 18 +++-----
 .../metrics/CacheMeterRegistryFactoryTest.java     | 52 ++++++++++++++++++----
 2 files changed, 49 insertions(+), 21 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/internal/metrics/CacheMeterRegistryFactory.java b/geode-core/src/main/java/org/apache/geode/internal/metrics/CacheMeterRegistryFactory.java
index e4336f9..70c1ac5 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/metrics/CacheMeterRegistryFactory.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/metrics/CacheMeterRegistryFactory.java
@@ -15,27 +15,21 @@
 package org.apache.geode.internal.metrics;
 
 import io.micrometer.core.instrument.MeterRegistry;
+import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
 import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
 
-import org.apache.geode.annotations.VisibleForTesting;
-
 public class CacheMeterRegistryFactory implements CompositeMeterRegistryFactory {
 
-  @VisibleForTesting
-  static final String CLUSTER_ID_TAG = "cluster.id";
-  @VisibleForTesting
-  static final String MEMBER_NAME_TAG = "member.name";
-  @VisibleForTesting
-  static final String HOST_NAME_TAG = "host.name";
-
   @Override
   public CompositeMeterRegistry create(int systemId, String memberName, String hostName) {
     CompositeMeterRegistry registry = new CompositeMeterRegistry();
 
     MeterRegistry.Config registryConfig = registry.config();
-    registryConfig.commonTags(CLUSTER_ID_TAG, String.valueOf(systemId));
-    registryConfig.commonTags(MEMBER_NAME_TAG, memberName == null ? "" : memberName);
-    registryConfig.commonTags(HOST_NAME_TAG, hostName == null ? "" : hostName);
+    registryConfig.commonTags("cluster.id", String.valueOf(systemId));
+    registryConfig.commonTags("member.name", memberName == null ? "" : memberName);
+    registryConfig.commonTags("host.name", hostName == null ? "" : hostName);
+
+    new JvmMemoryMetrics().bindTo(registry);
 
     return registry;
   }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/metrics/CacheMeterRegistryFactoryTest.java b/geode-core/src/test/java/org/apache/geode/internal/metrics/CacheMeterRegistryFactoryTest.java
index a7d76cb..de83322 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/metrics/CacheMeterRegistryFactoryTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/metrics/CacheMeterRegistryFactoryTest.java
@@ -14,14 +14,15 @@
  */
 package org.apache.geode.internal.metrics;
 
-import static org.apache.geode.internal.metrics.CacheMeterRegistryFactory.CLUSTER_ID_TAG;
-import static org.apache.geode.internal.metrics.CacheMeterRegistryFactory.HOST_NAME_TAG;
-import static org.apache.geode.internal.metrics.CacheMeterRegistryFactory.MEMBER_NAME_TAG;
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.util.Collection;
+
+import io.micrometer.core.instrument.Gauge;
 import io.micrometer.core.instrument.Meter;
 import io.micrometer.core.instrument.Tag;
 import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
+import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
 import org.junit.Test;
 
 public class CacheMeterRegistryFactoryTest {
@@ -45,10 +46,11 @@ public class CacheMeterRegistryFactoryTest {
 
     CompositeMeterRegistry registry = factory.create(CLUSTER_ID, theMemberName, HOST_NAME);
 
-    Meter meter = registry.counter("my.meter");
+    Meter meter = registry
+        .counter("my.meter");
 
     assertThat(meter.getId().getTags())
-        .contains(Tag.of(MEMBER_NAME_TAG, theMemberName));
+        .contains(Tag.of("member.name", theMemberName));
   }
 
   @Test
@@ -58,10 +60,11 @@ public class CacheMeterRegistryFactoryTest {
 
     CompositeMeterRegistry registry = factory.create(theSystemId, MEMBER_NAME, HOST_NAME);
 
-    Meter meter = registry.counter("my.meter");
+    Meter meter = registry
+        .counter("my.meter");
 
     assertThat(meter.getId().getTags())
-        .contains(Tag.of(CLUSTER_ID_TAG, String.valueOf(theSystemId)));
+        .contains(Tag.of("cluster.id", String.valueOf(theSystemId)));
   }
 
   @Test
@@ -71,9 +74,40 @@ public class CacheMeterRegistryFactoryTest {
 
     CompositeMeterRegistry registry = factory.create(CLUSTER_ID, MEMBER_NAME, theHostName);
 
-    Meter meter = registry.counter("my.meter");
+    Meter meter = registry
+        .counter("my.meter");
 
     assertThat(meter.getId().getTags())
-        .contains(Tag.of(HOST_NAME_TAG, theHostName));
+        .contains(Tag.of("host.name", theHostName));
+  }
+
+  @Test
+  public void addsGaugesForHeapMemory() {
+    CacheMeterRegistryFactory factory = new CacheMeterRegistryFactory();
+
+    CompositeMeterRegistry registry = factory.create(CLUSTER_ID, MEMBER_NAME, HOST_NAME);
+    registry.add(new SimpleMeterRegistry());
+
+    Collection<Gauge> heapGauges = registry
+        .find("jvm.memory.used")
+        .tag("area", "heap")
+        .gauges();
+
+    assertThat(heapGauges).isNotEmpty();
+  }
+
+  @Test
+  public void addsGaugesForNonHeapUsedMemory() {
+    CacheMeterRegistryFactory factory = new CacheMeterRegistryFactory();
+
+    CompositeMeterRegistry registry = factory.create(CLUSTER_ID, MEMBER_NAME, HOST_NAME);
+    registry.add(new SimpleMeterRegistry());
+
+    Collection<Gauge> nonheapGauges = registry
+        .find("jvm.memory.used")
+        .tag("area", "nonheap")
+        .gauges();
+
+    assertThat(nonheapGauges).isNotEmpty();
   }
 }