From 2ccf5f7c5c8875c8c51b76a533f93d5810520e7e Mon Sep 17 00:00:00 2001 From: qinfuxiang Date: Thu, 2 Dec 2021 17:10:07 +0800 Subject: [PATCH] =?UTF-8?q?Java=20metrics=20=E5=AD=A6=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metrics/{ => metric}/CacheGauge.java | 2 +- .../metrics/{ => metric}/CounterExample.java | 2 +- ...allyDecayingReservoirHistogramExample.java | 2 +- .../{ => metric}/HistogramExample.java | 2 +- .../JmxAttributeGaugeExample.java | 2 +- .../metrics/{ => metric}/MeterExample.java | 5 +-- .../metrics/{ => metric}/RadioGauge.java | 2 +- .../{ => metric}/SimpleGaugeExample.java | 2 +- ...gTimeWindowReservoirsHistogramExample.java | 2 +- ...idingWindowReservoirsHistogramExample.java | 2 +- .../cloud/nacos/metrics/metric/TimerTest.java | 31 +++++++++++++ .../UniformReservoirHistogramExample.java | 2 +- .../reporter/ConsoleReporterExample.java | 42 ++++++++++++++++++ .../{ => reporter}/CsvReporterExample.java | 2 +- .../{ => reporter}/JmxReporterExample.java | 2 +- .../reporter/SLF4jReporterExample.java | 44 +++++++++++++++++++ 16 files changed, 130 insertions(+), 16 deletions(-) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/CacheGauge.java (96%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/CounterExample.java (97%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/ExponentiallyDecayingReservoirHistogramExample.java (96%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/HistogramExample.java (96%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/JmxAttributeGaugeExample.java (96%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/MeterExample.java (96%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/RadioGauge.java (97%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/SimpleGaugeExample.java (97%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/SlidingTimeWindowReservoirsHistogramExample.java (96%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/SlidingWindowReservoirsHistogramExample.java (96%) create mode 100644 fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/TimerTest.java rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => metric}/UniformReservoirHistogramExample.java (96%) create mode 100644 fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/ConsoleReporterExample.java rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => reporter}/CsvReporterExample.java (96%) rename fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/{ => reporter}/JmxReporterExample.java (96%) create mode 100644 fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/SLF4jReporterExample.java diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/CacheGauge.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/CacheGauge.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/CacheGauge.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/CacheGauge.java index 6b13dd7..20e0571 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/CacheGauge.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/CacheGauge.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.CachedGauge; import com.codahale.metrics.ConsoleReporter; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/CounterExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/CounterExample.java similarity index 97% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/CounterExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/CounterExample.java index 050c7b6..f980ce9 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/CounterExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/CounterExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.ConsoleReporter; import com.codahale.metrics.Counter; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/ExponentiallyDecayingReservoirHistogramExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/ExponentiallyDecayingReservoirHistogramExample.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/ExponentiallyDecayingReservoirHistogramExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/ExponentiallyDecayingReservoirHistogramExample.java index 8cb8fa8..0db58aa 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/ExponentiallyDecayingReservoirHistogramExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/ExponentiallyDecayingReservoirHistogramExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.*; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/HistogramExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/HistogramExample.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/HistogramExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/HistogramExample.java index 2d9befb..c7ee703 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/HistogramExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/HistogramExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.ConsoleReporter; import com.codahale.metrics.Histogram; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/JmxAttributeGaugeExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/JmxAttributeGaugeExample.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/JmxAttributeGaugeExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/JmxAttributeGaugeExample.java index 591cbab..7891d80 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/JmxAttributeGaugeExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/JmxAttributeGaugeExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.ConsoleReporter; import com.codahale.metrics.JmxAttributeGauge; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/MeterExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/MeterExample.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/MeterExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/MeterExample.java index 0a3435c..0b326da 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/MeterExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/MeterExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.ConsoleReporter; import com.codahale.metrics.Meter; @@ -38,7 +38,4 @@ private static void upload(byte[] bytes) { requestMeter.mark(); sizeMeter.mark(bytes.length); } - - - } diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/RadioGauge.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/RadioGauge.java similarity index 97% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/RadioGauge.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/RadioGauge.java index 38b1ff3..7ef7cc0 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/RadioGauge.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/RadioGauge.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.ConsoleReporter; import com.codahale.metrics.Meter; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/SimpleGaugeExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/SimpleGaugeExample.java similarity index 97% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/SimpleGaugeExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/SimpleGaugeExample.java index 7e84541..aef6cc1 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/SimpleGaugeExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/SimpleGaugeExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.ConsoleReporter; import com.codahale.metrics.Gauge; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/SlidingTimeWindowReservoirsHistogramExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/SlidingTimeWindowReservoirsHistogramExample.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/SlidingTimeWindowReservoirsHistogramExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/SlidingTimeWindowReservoirsHistogramExample.java index ee31fa1..6a2877b 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/SlidingTimeWindowReservoirsHistogramExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/SlidingTimeWindowReservoirsHistogramExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.*; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/SlidingWindowReservoirsHistogramExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/SlidingWindowReservoirsHistogramExample.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/SlidingWindowReservoirsHistogramExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/SlidingWindowReservoirsHistogramExample.java index fa77435..7815413 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/SlidingWindowReservoirsHistogramExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/SlidingWindowReservoirsHistogramExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.*; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/TimerTest.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/TimerTest.java new file mode 100644 index 0000000..bb0f038 --- /dev/null +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/TimerTest.java @@ -0,0 +1,31 @@ +package fast.cloud.nacos.metrics.metric; + +import com.codahale.metrics.ConsoleReporter; +import com.codahale.metrics.MetricRegistry; +import com.codahale.metrics.Timer; + +import java.util.Random; +import java.util.concurrent.TimeUnit; + +public class TimerTest { + + public static Random random = new Random(); + + public static void main(String[] args) throws InterruptedException { + MetricRegistry registry = new MetricRegistry(); + ConsoleReporter reporter = ConsoleReporter.forRegistry(registry).build(); + reporter.start(1, TimeUnit.SECONDS); + + Timer timer = registry.timer(MetricRegistry.name(TimerTest.class,"get-latency")); + + Timer.Context ctx; + + while(true){ + ctx = timer.time(); + Thread.sleep(random.nextInt(1000)); + ctx.stop(); + } + + } + +} \ No newline at end of file diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/UniformReservoirHistogramExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/UniformReservoirHistogramExample.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/UniformReservoirHistogramExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/UniformReservoirHistogramExample.java index 510da84..9ecfc3d 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/UniformReservoirHistogramExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/metric/UniformReservoirHistogramExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.metric; import com.codahale.metrics.ConsoleReporter; import com.codahale.metrics.Histogram; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/ConsoleReporterExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/ConsoleReporterExample.java new file mode 100644 index 0000000..b43c7db --- /dev/null +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/ConsoleReporterExample.java @@ -0,0 +1,42 @@ +package fast.cloud.nacos.metrics.reporter; + +import com.codahale.metrics.ConsoleReporter; +import com.codahale.metrics.Histogram; +import com.codahale.metrics.MetricRegistry; + +import java.util.concurrent.TimeUnit; + +import static java.util.concurrent.ThreadLocalRandom.current; + +public class ConsoleReporterExample { + private static final MetricRegistry registry = new MetricRegistry(); + + private static final ConsoleReporter reporter = ConsoleReporter.forRegistry(registry) + .convertRatesTo(TimeUnit.SECONDS) + .convertDurationsTo(TimeUnit.SECONDS).build(); + + private static final Histogram histogram = registry.histogram("search-result"); + + public static void main(String[] args) { + reporter.start(10,TimeUnit.SECONDS); + + while (true) { + doSearch(); + randomSleep(); + } + } + + private static void doSearch() { + histogram.update(current().nextInt(10)); + } + + + private static void randomSleep() { + try { + TimeUnit.SECONDS.sleep(current().nextInt(500)); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + +} diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/CsvReporterExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/CsvReporterExample.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/CsvReporterExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/CsvReporterExample.java index 6995928..0e34b5a 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/CsvReporterExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/CsvReporterExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.reporter; import com.codahale.metrics.CsvReporter; import com.codahale.metrics.Histogram; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/JmxReporterExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/JmxReporterExample.java similarity index 96% rename from fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/JmxReporterExample.java rename to fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/JmxReporterExample.java index 5578235..244b8e6 100644 --- a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/JmxReporterExample.java +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/JmxReporterExample.java @@ -1,4 +1,4 @@ -package fast.cloud.nacos.metrics; +package fast.cloud.nacos.metrics.reporter; import com.codahale.metrics.Histogram; import com.codahale.metrics.JmxReporter; diff --git a/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/SLF4jReporterExample.java b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/SLF4jReporterExample.java new file mode 100644 index 0000000..eae06a0 --- /dev/null +++ b/fast-source-code-analysis/code-metrics/src/main/java/fast/cloud/nacos/metrics/reporter/SLF4jReporterExample.java @@ -0,0 +1,44 @@ +package fast.cloud.nacos.metrics.reporter; + +import com.codahale.metrics.Histogram; +import com.codahale.metrics.MetricRegistry; +import com.codahale.metrics.Slf4jReporter; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.TimeUnit; + +import static java.util.concurrent.ThreadLocalRandom.current; + +public class SLF4jReporterExample { + private static final MetricRegistry registry = new MetricRegistry(); + + private static final Slf4jReporter reporter = Slf4jReporter.forRegistry(registry) + .outputTo(LoggerFactory.getLogger(SLF4jReporterExample.class)) + .convertRatesTo(TimeUnit.SECONDS) + .convertDurationsTo(TimeUnit.SECONDS).build(); + + private static final Histogram histogram = registry.histogram("search-result"); + + public static void main(String[] args) { + reporter.start(10,TimeUnit.SECONDS); + + while (true) { + doSearch(); + randomSleep(); + } + } + + private static void doSearch() { + histogram.update(current().nextInt(10)); + } + + + private static void randomSleep() { + try { + TimeUnit.SECONDS.sleep(current().nextInt(500)); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + +}