From da063856d973b6c1f00ba3e20ada4475c4747d5b Mon Sep 17 00:00:00 2001 From: "yufu.deng" Date: Fri, 4 Mar 2022 13:22:40 +0800 Subject: [PATCH] update prometheus doc (#237) * update prometheus doc * add PrometheusExports link to README.md * Update metric-api.md Co-authored-by: jzw --- README.md | 8 +- doc/images/prometheus-demo.jpg | Bin 0 -> 172012 bytes doc/metric-api.md | 174 ++++++++++++++---- .../mock/plugin/api/demo/M1MetricCollect.java | 75 ++++++++ .../easeagent/zipkin/impl/SpanImplTest.java | 2 - 5 files changed, 223 insertions(+), 36 deletions(-) create mode 100644 doc/images/prometheus-demo.jpg create mode 100644 mock/plugin-api-mock/src/test/java/com/megaease/easeagent/mock/plugin/api/demo/M1MetricCollect.java diff --git a/README.md b/README.md index 6cc7ac018..87ed14d89 100644 --- a/README.md +++ b/README.md @@ -190,10 +190,12 @@ Start Prometheus $ ./prometheus --config.file=prometheus.yml # Open another console, run curl to access the test url for several times. -$ curl -v http://127.0.0.1:18888/web_client +$ for i in {1..1000}; do curl -v http://127.0.0.1:18888/web_client;sleep 0.1; done ``` +For metric name and label see: [PrometheusExports](./doc/metric-api.md#7.PrometheusExports) + ### 7. Test Data * Tracing If the tracing data is send to console, there would be some tracing log in console like this: @@ -206,9 +208,9 @@ If the tracing data is send to console, there would be some tracing log in conso * Metric Open Browser to visit [http://localhost:9090](http://localhost:9090). -After visit more pages, open Prometheus manager [http://localhost:9090](http://localhost:9090), and search `_00GET__web_client`. You will see as following. +search `application_http_request_m1{url="GET /web_client"}`. You will see as following. -![image](./doc/images/prometheus-demo-2.png) +![image](./doc/images/prometheus-demo.jpg) ## User Manual For more information, please refer to the [User Manual](./doc/user-manual.md). diff --git a/doc/images/prometheus-demo.jpg b/doc/images/prometheus-demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0f5bf509070ca6dfec7af6ffd82249f2e2a265cb GIT binary patch literal 172012 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� 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

1fC29nv?nW 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 z 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 literal 0 HcmV?d00001 diff --git a/doc/metric-api.md b/doc/metric-api.md index 72a2ac3a0..d31e339be 100644 --- a/doc/metric-api.md +++ b/doc/metric-api.md @@ -1,4 +1,4 @@ -# Metric API +# Metric API In Easeagent, Metric is inspired by Dropwizard, but Dropwizard is just the basis of Metric. @@ -16,38 +16,22 @@ These interfaces are related to business. ![image](./images/Metric-Class-UML.png) -### 1. MetricValueFetcher +### 1. MetricSubType -[com.megaease.easeagent.plugin.api.metric.name.MetricValueFetcher](../plugin-api/src/main/java/com/megaease/easeagent/plugin/api/metric/name/MetricValueFetcher.java) +[com.megaease.easeagent.plugin.api.metric.name.MetricSubType](../plugin-api/src/main/java/com/megaease/easeagent/plugin/api/metric/name/MetricSubType.java) -Metric has different types, and each type can calculate different data. +We have briefly categorized common business types. -For example: Counter can only get Count, Timer can get Max, Mean, Min, P95 ... - -Regarding the value that the type can calculate, we have encapsulated it: - -```java -public enum MetricValueFetcher { - CountingCount(Counter::getCount, Counter.class), - SnapshotMaxValue(Snapshot::getMax, Snapshot.class), - SnapshotMeanValue(Snapshot::getMean, Snapshot.class), - SnapshotMinValue(Snapshot::getMin, Snapshot.class), - Snapshot25Percentile(s -> s.getValue(0.25), Snapshot.class), - SnapshotMedianValue(Snapshot::getMedian, Snapshot.class), - Snapshot50PercentileValue(Snapshot::getMedian, Snapshot.class), - Snapshot75PercentileValue(Snapshot::get75thPercentile, Snapshot.class), - Snapshot95PercentileValue(Snapshot::get95thPercentile, Snapshot.class), - Snapshot98PercentileValue(Snapshot::get98thPercentile, Snapshot.class), - Snapshot99PercentileValue(Snapshot::get99thPercentile, Snapshot.class), - Snapshot999PercentileValue(Snapshot::get999thPercentile, Snapshot.class), - MeteredM1Rate(Meter::getOneMinuteRate, Meter.class), - MeteredM1RateIgnoreZero(Meter::getOneMinuteRate, Meter.class, aDouble -> aDouble), - MeteredM5Rate(Meter::getFiveMinuteRate, Meter.class), - MeteredM15Rate(Meter::getFifteenMinuteRate, Meter.class), - MeteredMeanRate(Meter::getMeanRate, Meter.class), - MeteredCount(Meter::getCount, Meter.class); -} -``` +|name |Description | +|---------------|------------------------------------------------------------------------------------------------------| +|DEFAULT |Default,no metric with error | +|ERROR |Metric with error | +|CHANNEL |The metric of the connection channel, for rabbitmq. | +|CONSUMER |The metric of the consumer of the data queue, for messaging kafka/rabbitmq consumer, etc. | +|PRODUCER |The metric of the producer of the data queue, for messaging kafka/rabbitmq producer, etc. | +|CONSUMER_ERROR |The error metric of the consumer of the data queue, for messaging kafka/rabbitmq consumer error, etc. | +|PRODUCER_ERROR |The error metric of the producer of the data queue, for messaging kafka/rabbitmq producer error, etc. | +|NONE |Unknown type | ### 2. MetricField @@ -147,7 +131,40 @@ public enum MetricField { } ``` -### 3. NameFactory +### 3.MetricValueFetcher + +[com.megaease.easeagent.plugin.api.metric.name.MetricValueFetcher](../plugin-api/src/main/java/com/megaease/easeagent/plugin/api/metric/name/MetricValueFetcher.java) + +Metric has different types, and each type can calculate different data. + +For example: Counter can only get Count, Timer can get Max, Mean, Min, P95 ... + +Regarding the value that the type can calculate, we have encapsulated it: + +```java +public enum MetricValueFetcher { + CountingCount(Counter::getCount, Counter.class), + SnapshotMaxValue(Snapshot::getMax, Snapshot.class), + SnapshotMeanValue(Snapshot::getMean, Snapshot.class), + SnapshotMinValue(Snapshot::getMin, Snapshot.class), + Snapshot25Percentile(s -> s.getValue(0.25), Snapshot.class), + SnapshotMedianValue(Snapshot::getMedian, Snapshot.class), + Snapshot50PercentileValue(Snapshot::getMedian, Snapshot.class), + Snapshot75PercentileValue(Snapshot::get75thPercentile, Snapshot.class), + Snapshot95PercentileValue(Snapshot::get95thPercentile, Snapshot.class), + Snapshot98PercentileValue(Snapshot::get98thPercentile, Snapshot.class), + Snapshot99PercentileValue(Snapshot::get99thPercentile, Snapshot.class), + Snapshot999PercentileValue(Snapshot::get999thPercentile, Snapshot.class), + MeteredM1Rate(Meter::getOneMinuteRate, Meter.class), + MeteredM1RateIgnoreZero(Meter::getOneMinuteRate, Meter.class, aDouble -> aDouble), + MeteredM5Rate(Meter::getFiveMinuteRate, Meter.class), + MeteredM15Rate(Meter::getFifteenMinuteRate, Meter.class), + MeteredMeanRate(Meter::getMeanRate, Meter.class), + MeteredCount(Meter::getCount, Meter.class); +} +``` + +### 4. NameFactory [com.megaease.easeagent.plugin.api.metric.name.NameFactory](../plugin-api/src/main/java/com/megaease/easeagent/plugin/api/metric/name/NameFactory.java) @@ -417,3 +434,98 @@ public class MD5ReportConsumer { } } ``` + +### 7.PrometheusExports + +We have redefined Prometheus Exports according to the following naming standard and statistics rules. + +#### Metric Name + +For better readability, we get the `category` and `type` from `Tags`, and add `MetricField.field` as the metric name + +Name format: `${category}_${type}_${MetricField.field}` + +Example: `application_http_request_m1` + +##### Metric Label + +Except `category`, `type`, `MetricField.field` and `value`, other fields will be exported in the form of labels. + +By default, there will be the following labels. + +|label name |label value |Description | +|---------------------|-----------------------------------------------------------------------------------|---------------------------------------------------------------| +|MetricSubType |enum: `DEFAULT,ERROR,CHANNEL,CONSUMER,PRODUCER,CONSUMER_ERROR,PRODUCER_ERROR,NONE` |The enum MetricSubType value. | +|MetricType |enum: `TimerType,HistogramType,MeterType,CounterType,GaugeType` |The Metric Type by metric calculate. | +|host_ipv4 |String, xxx.xxx.xxx.xx |The ipv4 by host. | +|host_name |String |host name. | +|service |String |The `name` read from the configuration. for you service name. | +|system |String |The `system` read from the configuration. for you system name. | +|${Tags.keyFieldName} |${metricKey} |The metric label by metric key. | +|${Tags.tags().key} |${Tags.tags().value} |Your custom label, which comes from `Tags` | + +##### Metric Value + +Under normal circumstances, each metric name should correspond to a calculation method. + +Example : + +Metric name is `application_http_request_m1`, the value is `1.0`, which is the weighted average QPS of the last minute calculated. + +It is calculated using `Meter::getOneMinuteRate`. Its corresponding `MetricValueFetcher` is `MeteredM1RateIgnoreZero`. + +```java +public class M1MetricCollect { + static final M1Metric m1Metric; + + static { + IPluginConfig config = EaseAgent.getConfig("observability", "collectM1", ConfigConst.PluginID.METRIC); + Tags tags = new Tags("application", "http-request", "url").put("city", "beijing"); + ServiceMetricSupplier m1MetricSupplier = new ServiceMetricSupplier() { + @Override + public NameFactory newNameFactory() { + return NameFactory.createBuilder() + .meterType(MetricSubType.DEFAULT, ImmutableMap.builder() + .put(MetricField.M1_RATE, MetricValueFetcher.MeteredM1RateIgnoreZero) + .build()) + .build(); + } + + @Override + public M1Metric newInstance(MetricRegistry metricRegistry, NameFactory nameFactory) { + return new M1Metric(metricRegistry, nameFactory); + } + }; + + m1Metric = EaseAgent.getOrCreateServiceMetric(config, tags, m1MetricSupplier); + } + + public void collectM1() { + String url = "GET /web_client"; + for (int i = 0; i < 100; i++) { + m1Metric.collectMetric(url); + } + } + + public static class M1Metric extends ServiceMetric { + + public M1Metric(@Nonnull MetricRegistry metricRegistry, @Nonnull NameFactory nameFactory) { + super(metricRegistry, nameFactory); + } + + public void collectMetric(String key) { + final Meter meter = meter(key, MetricSubType.DEFAULT); + meter.mark(); + } + } +} +``` + +The above example will export metrics like the following + +name and label: `application_http_request_m1{MetricSubType="DEFAULT",MetricType="MeterType",city="beijing",host_ipv4="10.127.48.163",host_name="MacBook-Pro.local",service="demo-service",system="demo-system",url="GET /web_client"}` + +value : `90.0` + +![image](./images/prometheus-demo.jpg) + diff --git a/mock/plugin-api-mock/src/test/java/com/megaease/easeagent/mock/plugin/api/demo/M1MetricCollect.java b/mock/plugin-api-mock/src/test/java/com/megaease/easeagent/mock/plugin/api/demo/M1MetricCollect.java new file mode 100644 index 000000000..ee17db022 --- /dev/null +++ b/mock/plugin-api-mock/src/test/java/com/megaease/easeagent/mock/plugin/api/demo/M1MetricCollect.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2021, MegaEase + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.megaease.easeagent.mock.plugin.api.demo; + +import com.megaease.easeagent.plugin.api.config.ConfigConst; +import com.megaease.easeagent.plugin.api.config.IPluginConfig; +import com.megaease.easeagent.plugin.api.metric.Meter; +import com.megaease.easeagent.plugin.api.metric.MetricRegistry; +import com.megaease.easeagent.plugin.api.metric.ServiceMetric; +import com.megaease.easeagent.plugin.api.metric.ServiceMetricSupplier; +import com.megaease.easeagent.plugin.api.metric.name.*; +import com.megaease.easeagent.plugin.bridge.EaseAgent; +import com.megaease.easeagent.plugin.utils.ImmutableMap; + +import javax.annotation.Nonnull; + +public class M1MetricCollect { + static final M1Metric m1Metric; + + static { + IPluginConfig config = EaseAgent.getConfig("observability", "collectM1", ConfigConst.PluginID.METRIC); + Tags tags = new Tags("application", "http-request", "url").put("city", "beijing"); + ServiceMetricSupplier m1MetricSupplier = new ServiceMetricSupplier() { + @Override + public NameFactory newNameFactory() { + return NameFactory.createBuilder() + .meterType(MetricSubType.DEFAULT, ImmutableMap.builder() + .put(MetricField.M1_RATE, MetricValueFetcher.MeteredM1RateIgnoreZero) + .build()) + .build(); + } + + @Override + public M1Metric newInstance(MetricRegistry metricRegistry, NameFactory nameFactory) { + return new M1Metric(metricRegistry, nameFactory); + } + }; + + m1Metric = EaseAgent.getOrCreateServiceMetric(config, tags, m1MetricSupplier); + } + + public void collectM1() { + String url = "GET /web_client"; + for (int i = 0; i < 100; i++) { + m1Metric.collectMetric(url); + } + } + + public static class M1Metric extends ServiceMetric { + + public M1Metric(@Nonnull MetricRegistry metricRegistry, @Nonnull NameFactory nameFactory) { + super(metricRegistry, nameFactory); + } + + public void collectMetric(String key) { + final Meter meter = meter(key, MetricSubType.DEFAULT); + meter.mark(); + } + } +} diff --git a/zipkin/src/test/java/com/megaease/easeagent/zipkin/impl/SpanImplTest.java b/zipkin/src/test/java/com/megaease/easeagent/zipkin/impl/SpanImplTest.java index fbee7362c..6ac74711b 100644 --- a/zipkin/src/test/java/com/megaease/easeagent/zipkin/impl/SpanImplTest.java +++ b/zipkin/src/test/java/com/megaease/easeagent/zipkin/impl/SpanImplTest.java @@ -244,11 +244,9 @@ public void abandon() { MockReport.setMockSpanReport(mockAtomicReferenceReport); eSpan.abandon(); assertNull(MockReport.getLastSpan()); - assertNull(MockReport.getLastSkipSpan()); MockReport.cleanSkipSpan(); eSpan.flush(); assertNull(MockReport.getLastSpan()); - assertNull(MockReport.getLastSkipSpan()); } @Test