Skip to content

Commit f77032e

Browse files
committed
Add a test that directly creates and reports metrics
1 parent 898303e commit f77032e

File tree

1 file changed

+46
-5
lines changed

1 file changed

+46
-5
lines changed

x-pack/plugin/metricsdb/src/internalClusterTest/java/org/elasticsearch/xpack/metrics/MetricsDBIndexingIT.java

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,18 @@
77

88
package org.elasticsearch.xpack.metrics;
99

10+
import io.opentelemetry.api.common.AttributeKey;
1011
import io.opentelemetry.api.common.Attributes;
1112
import io.opentelemetry.api.metrics.Meter;
1213
import io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporter;
14+
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
1315
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
16+
import io.opentelemetry.sdk.metrics.data.MetricData;
1417
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
18+
import io.opentelemetry.sdk.metrics.internal.data.ImmutableDoublePointData;
19+
import io.opentelemetry.sdk.metrics.internal.data.ImmutableGaugeData;
20+
import io.opentelemetry.sdk.metrics.internal.data.ImmutableMetricData;
21+
import io.opentelemetry.sdk.resources.Resource;
1522

1623
import org.elasticsearch.action.admin.cluster.node.info.NodeInfo;
1724
import org.elasticsearch.action.admin.cluster.node.info.NodesInfoResponse;
@@ -42,6 +49,7 @@
4249

4350
public class MetricsDBIndexingIT extends ESSingleNodeTestCase {
4451

52+
private OtlpHttpMetricExporter exporter;
4553
private SdkMeterProvider meterProvider;
4654

4755
@Override
@@ -66,10 +74,7 @@ protected boolean addMockHttpTransport() {
6674
@Override
6775
public void setUp() throws Exception {
6876
super.setUp();
69-
OtlpHttpMetricExporter exporter = OtlpHttpMetricExporter.builder()
70-
.setEndpoint("http://localhost:" + getHttpPort() + "/_otlp/v1/metrics")
71-
.build();
72-
77+
exporter = OtlpHttpMetricExporter.builder().setEndpoint("http://localhost:" + getHttpPort() + "/_otlp/v1/metrics").build();
7378
meterProvider = SdkMeterProvider.builder()
7479
.registerMetricReader(
7580
PeriodicMetricReader.builder(exporter)
@@ -98,7 +103,7 @@ public void tearDown() throws Exception {
98103
}
99104

100105
@Test
101-
public void testIngestMetric() {
106+
public void testIngestMetricViaMeterProvider() throws Exception {
102107
Meter sampleMeter = meterProvider.get("io.opentelemetry.example.metrics");
103108

104109
sampleMeter.gaugeBuilder("jvm.memory.total")
@@ -122,6 +127,42 @@ public void testIngestMetric() {
122127
}
123128
}
124129

130+
@Test
131+
public void testIngestMetricDataViaMetricExporter() throws Exception {
132+
MetricData jvmMemoryMetricData = ImmutableMetricData.createDoubleGauge(
133+
Resource.create(Attributes.of(AttributeKey.stringKey("service.name"), "elasticsearch")),
134+
InstrumentationScopeInfo.create("io.opentelemetry.example.metrics"),
135+
"jvm.memory.total",
136+
"Reports JVM memory usage.",
137+
"By",
138+
ImmutableGaugeData.create(
139+
List.of(
140+
ImmutableDoublePointData.create(
141+
System.currentTimeMillis(),
142+
System.currentTimeMillis(),
143+
Attributes.empty(),
144+
Runtime.getRuntime().totalMemory()
145+
)
146+
)
147+
)
148+
);
149+
150+
var result = exporter.export(List.of(jvmMemoryMetricData)).join(1, TimeUnit.SECONDS);
151+
assertThat(result.isSuccess(), is(true));
152+
153+
admin().indices().prepareRefresh().execute().actionGet();
154+
String[] indices = admin().indices().prepareGetIndex(TimeValue.timeValueSeconds(1)).setIndices("metrics*").get().indices();
155+
assertThat(indices, not(emptyArray()));
156+
157+
try (EsqlQueryResponse resp = query("""
158+
FROM metrics*
159+
| STATS avg(value_double) WHERE metric_name == "jvm.memory.total"
160+
""")) {
161+
double avgJvmMemoryTotal = (double) resp.column(0).next();
162+
assertThat(avgJvmMemoryTotal, greaterThan(0.0));
163+
}
164+
}
165+
125166
protected EsqlQueryResponse query(String esql) {
126167
return EsqlQueryRequestBuilder.newSyncEsqlQueryRequestBuilder(client()).query(esql).execute().actionGet();
127168
}

0 commit comments

Comments
 (0)