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

crazyhzm pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new b7b7ddfc58  jvm meter add application name label (#11255)
b7b7ddfc58 is described below

commit b7b7ddfc583dc9dded15082e12f11d0e3139d4b5
Author: songxiaosheng <[email protected]>
AuthorDate: Tue Jan 10 11:35:39 2023 +0800

     jvm meter add application name label (#11255)
    
    * fix MetericsService resource location bug
    
    * :art:为jvm指标增加dubbo应用名称
    
    * :art: jvm meter add application name label
    
    * fix unit test failure
---
 .../apache/dubbo/metrics/AbstractMetricsReporter.java   | 17 ++++++++++++-----
 .../prometheus/PrometheusMetricsReporterTest.java       | 10 +++++++---
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git 
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/AbstractMetricsReporter.java
 
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/AbstractMetricsReporter.java
index 74c0407675..571fcc5e25 100644
--- 
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/AbstractMetricsReporter.java
+++ 
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/AbstractMetricsReporter.java
@@ -20,13 +20,16 @@ package org.apache.dubbo.metrics;
 import io.micrometer.core.instrument.Gauge;
 import io.micrometer.core.instrument.MeterRegistry;
 import io.micrometer.core.instrument.Tag;
+import io.micrometer.core.instrument.Tags;
 import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
 import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
 import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics;
 import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics;
 import io.micrometer.core.instrument.binder.system.ProcessorMetrics;
+import io.micrometer.core.instrument.binder.system.UptimeMetrics;
 import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
 import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.constants.MetricsConstants;
 import org.apache.dubbo.common.lang.ShutdownHookCallbacks;
 import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
 import org.apache.dubbo.common.logger.LoggerFactory;
@@ -41,6 +44,7 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -105,11 +109,14 @@ public abstract class AbstractMetricsReporter implements 
MetricsReporter {
     private void addJvmMetrics() {
         boolean enableJvmMetrics = url.getParameter(ENABLE_JVM_METRICS_KEY, 
false);
         if (enableJvmMetrics) {
-            new ClassLoaderMetrics().bindTo(compositeRegistry);
-            new JvmMemoryMetrics().bindTo(compositeRegistry);
-            new JvmGcMetrics().bindTo(compositeRegistry);
-            new ProcessorMetrics().bindTo(compositeRegistry);
-            new JvmThreadMetrics().bindTo(compositeRegistry);
+            Tags extraTags = Tags.of(MetricsConstants.TAG_APPLICATION_NAME,
+                
Optional.ofNullable(applicationModel.getApplicationName()).orElse(""));
+            new ClassLoaderMetrics(extraTags).bindTo(compositeRegistry);
+            new JvmMemoryMetrics(extraTags).bindTo(compositeRegistry);
+            new JvmGcMetrics(extraTags).bindTo(compositeRegistry);
+            new ProcessorMetrics(extraTags).bindTo(compositeRegistry);
+            new JvmThreadMetrics(extraTags).bindTo(compositeRegistry);
+            new UptimeMetrics(extraTags).bindTo(compositeRegistry);
         }
     }
 
diff --git 
a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java
 
b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java
index 5ea7d9ffe3..333286f67e 100644
--- 
a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java
+++ 
b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java
@@ -18,6 +18,7 @@
 package org.apache.dubbo.metrics.prometheus;
 
 import org.apache.dubbo.common.utils.NetUtils;
+import org.apache.dubbo.config.ApplicationConfig;
 import org.apache.dubbo.config.MetricsConfig;
 import org.apache.dubbo.config.nested.PrometheusConfig;
 import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -61,13 +62,16 @@ class PrometheusMetricsReporterTest {
     @Test
     void testJvmMetrics() {
         metricsConfig.setEnableJvmMetrics(true);
+        String name = "metrics-test";
+        
ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(new
 ApplicationConfig(name));
+
         PrometheusMetricsReporter reporter = new 
PrometheusMetricsReporter(metricsConfig.toUrl(), applicationModel);
         reporter.init();
 
         PrometheusMeterRegistry prometheusRegistry = 
reporter.getPrometheusRegistry();
         Double d1 = 
prometheusRegistry.getPrometheusRegistry().getSampleValue("none_exist_metric");
-        Double d2 = 
prometheusRegistry.getPrometheusRegistry().getSampleValue("jvm_gc_memory_promoted_bytes_total");
-
+        Double d2 = 
prometheusRegistry.getPrometheusRegistry().getSampleValue("jvm_gc_memory_promoted_bytes_total",
+            new String[]{"application_name"},new String[]{name});
         Assertions.assertNull(d1);
         Assertions.assertNotNull(d2);
     }
@@ -84,7 +88,7 @@ class PrometheusMetricsReporterTest {
         prometheusConfig.setExporter(exporter);
         metricsConfig.setPrometheus(prometheusConfig);
         metricsConfig.setEnableJvmMetrics(true);
-
+        
ApplicationModel.defaultModel().getApplicationConfigManager().setApplication(new
 ApplicationConfig("metrics-test"));
         PrometheusMetricsReporter reporter = new 
PrometheusMetricsReporter(metricsConfig.toUrl(), applicationModel);
         reporter.init();
 

Reply via email to