This is an automated email from the ASF dual-hosted git repository.
mikexue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/eventmesh.git
The following commit(s) were added to refs/heads/master by this push:
new 0164c58b8 [ISSUE #4079]The error of building metric observer:
java.util.NoSuchElementException
0164c58b8 is described below
commit 0164c58b87b2175d1ac223bd5e4a8a18ff161493
Author: pandaapo <[email protected]>
AuthorDate: Mon Jun 12 19:34:47 2023 +0800
[ISSUE #4079]The error of building metric observer:
java.util.NoSuchElementException
---
.../prometheus/metrics/PrometheusGrpcExporter.java | 4 +-
.../prometheus/metrics/PrometheusHttpExporter.java | 2 +-
.../prometheus/metrics/PrometheusTcpExporter.java | 4 +-
.../prometheus/utils/PrometheusExporterUtils.java | 46 +++++++++++++---------
4 files changed, 33 insertions(+), 23 deletions(-)
diff --git
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusGrpcExporter.java
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusGrpcExporter.java
index d3846bba1..a3b4afa06 100644
---
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusGrpcExporter.java
+++
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusGrpcExporter.java
@@ -59,7 +59,7 @@ public class PrometheusGrpcExporter {
public static void export(final String meterName, final GrpcSummaryMetrics
summaryMetrics) {
final Meter meter = GlobalMeterProvider.getMeter(meterName);
- paramPairs.forEach((k, v) ->
- observeOfValue(meter, METRICS_GRPC_PREFIX + k[0], k[1], GRPC,
v.apply(summaryMetrics)));
+ paramPairs.forEach((metricInfo, getMetric) ->
+ observeOfValue(meter, METRICS_GRPC_PREFIX + metricInfo[0],
metricInfo[1], GRPC, summaryMetrics, getMetric));
}
}
diff --git
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusHttpExporter.java
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusHttpExporter.java
index bba9a89a0..de7bf4670 100644
---
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusHttpExporter.java
+++
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusHttpExporter.java
@@ -177,7 +177,7 @@ public class PrometheusHttpExporter {
public void export(String name, HttpSummaryMetrics summaryMetrics) {
Meter meter = GlobalMeterProvider.getMeter(name);
- paramPairs.forEach((k, v) -> observeOfValue(meter, k[0], k[1], HTTP,
v.apply(summaryMetrics)));
+ paramPairs.forEach((metricInfo, getMetric) -> observeOfValue(meter,
metricInfo[0], metricInfo[1], HTTP, summaryMetrics, getMetric));
}
}
diff --git
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusTcpExporter.java
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusTcpExporter.java
index da39828a9..3fe916a82 100644
---
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusTcpExporter.java
+++
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/metrics/PrometheusTcpExporter.java
@@ -79,7 +79,7 @@ public class PrometheusTcpExporter {
public void export(final String meterName, final TcpSummaryMetrics
summaryMetrics) {
final Meter meter = GlobalMeterProvider.getMeter(meterName);
- paramPairs.forEach((k, v) ->
- observeOfValue(meter, METRICS_TCP_PREFIX + k[0], k[1], TCP,
v.apply(summaryMetrics)));
+ paramPairs.forEach((metricInfo, getMetric) ->
+ observeOfValue(meter, METRICS_TCP_PREFIX + metricInfo[0],
metricInfo[1], TCP, summaryMetrics, getMetric));
}
}
diff --git
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/utils/PrometheusExporterUtils.java
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/utils/PrometheusExporterUtils.java
index f898df057..e387e0d2f 100644
---
a/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/utils/PrometheusExporterUtils.java
+++
b/eventmesh-metrics-plugin/eventmesh-metrics-prometheus/src/main/java/org/apache/eventmesh/metrics/prometheus/utils/PrometheusExporterUtils.java
@@ -17,9 +17,16 @@
package org.apache.eventmesh.metrics.prometheus.utils;
+import org.apache.eventmesh.metrics.api.model.Metric;
+
+import java.lang.reflect.Method;
+import java.util.function.Function;
+
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.api.metrics.common.Labels;
+import lombok.SneakyThrows;
+
/**
* Utils for metrics-prometheus module
*/
@@ -29,29 +36,32 @@ public class PrometheusExporterUtils {
* Build the OpenTelemetry's Meter
*
* @param meter
- * @param name
- * @param desc
+ * @param metricName
+ * @param metricDesc
* @param protocol
- * @param number
+ * @param summaryMetrics
+ * @param getMetric
*/
- public static void observeOfValue(Meter meter, String name, String desc,
String protocol, Number number) {
- if (number instanceof Long) {
- meter.longValueObserverBuilder(name)
- .setDescription(desc)
- .setUnit(protocol)
- .setUpdater(result -> result.observe((long) number,
Labels.empty()))
- .build();
- } else if (number instanceof Double) {
- meter.doubleValueObserverBuilder(name)
- .setDescription(desc)
- .setUnit(protocol)
- .setUpdater(result -> result.observe((double) number,
Labels.empty()))
- .build();
+ @SneakyThrows
+ public static void observeOfValue(Meter meter, String metricName, String
metricDesc, String protocol,
+ Metric summaryMetrics, Function getMetric) {
+ Method method = getMetric.getClass().getMethod("apply", Object.class);
+ Class metricType = (Class) method.getGenericReturnType();
+ if (metricType == Long.class) {
+ meter.longValueObserverBuilder(metricName)
+ .setDescription(metricDesc)
+ .setUnit(protocol)
+ .setUpdater(result -> result.observe((long)
getMetric.apply(summaryMetrics), Labels.empty()))
+ .build();
+ } else if (metricType == Double.class) {
+ meter.doubleValueObserverBuilder(metricName)
+ .setDescription(metricDesc)
+ .setUnit(protocol)
+ .setUpdater(result -> result.observe((double)
getMetric.apply(summaryMetrics), Labels.empty()))
+ .build();
}
}
-
-
/**
* create and init an array contains 2 String.
*
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]