This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new e2013a7e5fc Refactor PrometheusWrapperFactory (#23437)
e2013a7e5fc is described below
commit e2013a7e5fcd303af3c4a3f353e106798382bcca
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jan 9 17:48:26 2023 +0800
Refactor PrometheusWrapperFactory (#23437)
---
.../wrapper/PrometheusWrapperFactory.java | 150 +++++++++------------
1 file changed, 60 insertions(+), 90 deletions(-)
diff --git
a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
index fbaac60a2ed..3575c0afbab 100644
---
a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
+++
b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
@@ -54,104 +54,75 @@ public final class PrometheusWrapperFactory implements
MetricsWrapperFactory {
metrics = metricsMap.get("metrics");
}
- /**
- * Create metrics wrapper.
- *
- * @param id id
- * @return metrics wrapper
- */
@Override
public Optional<MetricsWrapper> create(final String id) {
- return createById(id);
- }
-
- /**
- * Create gauge metric family.
- *
- * @param id string
- * @return gauge metric family
- */
- public Optional<GaugeMetricFamily> createGaugeMetricFamily(final String
id) {
Optional<Map<String, Object>> metricMap = findMetric(id);
if (!metricMap.isPresent()) {
return Optional.empty();
}
Map<String, Object> metric = metricMap.get();
- if (null == getMetricType(metric)) {
- return Optional.empty();
- }
- if ("GAUGEMETRICFAMILY".equalsIgnoreCase(getMetricType(metric))) {
- return createGaugeMetricFamily(metric);
- }
- return Optional.empty();
- }
-
- private Optional<GaugeMetricFamily> createGaugeMetricFamily(final
Map<String, Object> metric) {
- return Optional.of(null == getMetricLabels(metric)
- ? new GaugeMetricFamily(getMetricName(metric),
getMetricHelpMessage(metric), 1)
- : new GaugeMetricFamily(getMetricName(metric),
getMetricHelpMessage(metric), getMetricLabels(metric)));
+ return metric.containsKey("type") ? create(metric, (String)
metric.get("type")) : Optional.empty();
}
- private Optional<MetricsWrapper> createById(final String id) {
- Optional<Map<String, Object>> metricMap = findMetric(id);
- if (!metricMap.isPresent()) {
- return Optional.empty();
- }
- Map<String, Object> metric = metricMap.get();
- if (null == getMetricType(metric)) {
- return Optional.empty();
- }
- switch (getMetricType(metric).toUpperCase()) {
+ private Optional<MetricsWrapper> create(final Map<String, Object> metric,
final String type) {
+ switch (type.toUpperCase()) {
case "COUNTER":
- return createCounter(metric);
+ return Optional.of(createCounter(metric));
case "GAUGE":
- return createGauge(metric);
+ return Optional.of(createGauge(metric));
case "HISTOGRAM":
- return createHistogram(metric);
+ return Optional.of(createHistogram(metric));
case "SUMMARY":
- return createSummary(metric);
+ return Optional.of(createSummary(metric));
default:
return Optional.empty();
}
}
private Optional<Map<String, Object>> findMetric(final String id) {
- return metrics.stream().filter(optional ->
id.equals(getMetricId(optional))).findFirst();
+ return metrics.stream().filter(each ->
id.equals(each.get("id"))).findFirst();
}
- private Optional<MetricsWrapper> createCounter(final Map<String, Object>
metric) {
- Counter.Builder builder =
Counter.build().name(getMetricName(metric)).help(getMetricHelpMessage(metric));
- if (null != getMetricLabels(metric)) {
- builder.labelNames(getMetricLabels(metric).toArray(new String[0]));
+ @SuppressWarnings("unchecked")
+ private MetricsWrapper createCounter(final Map<String, Object> metric) {
+ Counter.Builder builder = Counter.build().name((String)
metric.get("name")).help((String) metric.get("help"));
+ List<String> metricLabels = (List<String>) metric.get("labels");
+ if (null != metricLabels) {
+ builder.labelNames(metricLabels.toArray(new String[0]));
}
- return Optional.of(new CounterWrapper(builder.register()));
+ return new CounterWrapper(builder.register());
}
- private Optional<MetricsWrapper> createGauge(final Map<String, Object>
metric) {
- Gauge.Builder builder =
Gauge.build().name(getMetricName(metric)).help(getMetricHelpMessage(metric));
- if (null != getMetricLabels(metric)) {
- builder.labelNames(getMetricLabels(metric).toArray(new String[0]));
+ @SuppressWarnings("unchecked")
+ private MetricsWrapper createGauge(final Map<String, Object> metric) {
+ Gauge.Builder builder = Gauge.build().name((String)
metric.get("name")).help((String) metric.get("help"));
+ List<String> metricLabels = (List<String>) metric.get("labels");
+ if (null != metricLabels) {
+ builder.labelNames(metricLabels.toArray(new String[0]));
}
- return Optional.of(new GaugeWrapper(builder.register()));
+ return new GaugeWrapper(builder.register());
}
- private Optional<MetricsWrapper> createHistogram(final Map<String, Object>
metric) {
- Histogram.Builder builder =
Histogram.build().name(getMetricName(metric)).help(getMetricHelpMessage(metric));
- if (null != getMetricLabels(metric)) {
- builder.labelNames(getMetricLabels(metric).toArray(new String[0]));
+ @SuppressWarnings("unchecked")
+ private MetricsWrapper createHistogram(final Map<String, Object> metric) {
+ Histogram.Builder builder = Histogram.build().name((String)
metric.get("name")).help((String) metric.get("help"));
+ List<String> metricLabels = (List<String>) metric.get("labels");
+ if (null != metricLabels) {
+ builder.labelNames(metricLabels.toArray(new String[0]));
}
- if (null != getMetricProperties(metric)) {
- parserHistogramProperties(builder, getMetricProperties(metric));
+ Map<String, Object> metricProps = (Map<String, Object>)
metric.get("props");
+ if (null != metricProps) {
+ parseHistogramProperties(builder, metricProps);
}
- return Optional.of(new HistogramWrapper(builder.register()));
+ return new HistogramWrapper(builder.register());
}
@SuppressWarnings("unchecked")
- private void parserHistogramProperties(final Histogram.Builder builder,
final Map<String, Object> props) {
- if (null == props.get("buckets")) {
+ private void parseHistogramProperties(final Histogram.Builder builder,
final Map<String, Object> props) {
+ Map<String, Object> buckets = (Map<String, Object>)
props.get("buckets");
+ if (null == buckets) {
return;
}
- Map<String, Object> buckets = (Map<String, Object>)
props.get("buckets");
if ("exp".equals(buckets.get("type"))) {
double start = null == buckets.get("start") ? 1 :
Double.parseDouble(buckets.get("start").toString());
double factor = null == buckets.get("factor") ? 1 :
Double.parseDouble(buckets.get("factor").toString());
@@ -165,37 +136,36 @@ public final class PrometheusWrapperFactory implements
MetricsWrapperFactory {
}
}
- private Optional<MetricsWrapper> createSummary(final Map<String, Object>
metric) {
- Summary.Builder builder =
Summary.build().name(getMetricName(metric)).help(getMetricHelpMessage(metric));
- if (null != getMetricLabels(metric)) {
- builder.labelNames(getMetricLabels(metric).toArray(new String[0]));
+ @SuppressWarnings("unchecked")
+ private MetricsWrapper createSummary(final Map<String, Object> metric) {
+ Summary.Builder builder = Summary.build().name((String)
metric.get("name")).help((String) metric.get("help"));
+ List<String> metricLabels = (List<String>) metric.get("labels");
+ if (null != metricLabels) {
+ builder.labelNames(metricLabels.toArray(new String[0]));
}
- return Optional.of(new SummaryWrapper(builder.register()));
+ return new SummaryWrapper(builder.register());
}
- private String getMetricId(final Map<String, Object> metric) {
- return (String) metric.get("id");
- }
-
- private String getMetricType(final Map<String, Object> metric) {
- return (String) metric.get("type");
- }
-
- private String getMetricName(final Map<String, Object> metric) {
- return (String) metric.get("name");
- }
-
- private String getMetricHelpMessage(final Map<String, Object> metric) {
- return (String) metric.get("help");
- }
-
- @SuppressWarnings("unchecked")
- private List<String> getMetricLabels(final Map<String, Object> metric) {
- return (List<String>) metric.get("labels");
+ /**
+ * Create gauge metric family.
+ *
+ * @param id string
+ * @return gauge metric family
+ */
+ public Optional<GaugeMetricFamily> createGaugeMetricFamily(final String
id) {
+ Optional<Map<String, Object>> metricMap = findMetric(id);
+ if (!metricMap.isPresent()) {
+ return Optional.empty();
+ }
+ Map<String, Object> metric = metricMap.get();
+ return "GAUGEMETRICFAMILY".equalsIgnoreCase((String)
metric.get("type")) ? createGaugeMetricFamily(metric) : Optional.empty();
}
@SuppressWarnings("unchecked")
- private Map<String, Object> getMetricProperties(final Map<String, Object>
metric) {
- return (Map<String, Object>) metric.get("props");
+ private Optional<GaugeMetricFamily> createGaugeMetricFamily(final
Map<String, Object> metric) {
+ List<String> metricLabels = (List<String>) metric.get("labels");
+ return Optional.of(null == metricLabels
+ ? new GaugeMetricFamily((String) metric.get("name"), (String)
metric.get("help"), 1d)
+ : new GaugeMetricFamily((String) metric.get("name"), (String)
metric.get("help"), metricLabels));
}
}