Skip to content

Commit 9b89f20

Browse files
authored
docs: add metrics exporter to sample app (googleapis#1809)
Add a metrics exporter to the sample application to show how to export both traces and metrics when using the JDBC driver.
1 parent efdd859 commit 9b89f20

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

samples/spring-data-jdbc/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@
8585
<artifactId>exporter-trace</artifactId>
8686
<version>0.33.0</version>
8787
</dependency>
88+
<dependency>
89+
<groupId>com.google.cloud.opentelemetry</groupId>
90+
<artifactId>exporter-metrics</artifactId>
91+
<version>0.33.0</version>
92+
</dependency>
8893

8994
<dependency>
9095
<groupId>com.google.collections</groupId>

samples/spring-data-jdbc/src/main/java/com/google/cloud/spanner/sample/OpenTelemetryConfiguration.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,17 @@
1717
package com.google.cloud.spanner.sample;
1818

1919
import com.google.auth.oauth2.GoogleCredentials;
20+
import com.google.cloud.opentelemetry.metric.GoogleCloudMetricExporter;
21+
import com.google.cloud.opentelemetry.metric.MetricConfiguration;
2022
import com.google.cloud.opentelemetry.trace.TraceConfiguration;
2123
import com.google.cloud.opentelemetry.trace.TraceExporter;
2224
import com.google.cloud.spanner.SpannerOptions;
2325
import io.opentelemetry.api.OpenTelemetry;
2426
import io.opentelemetry.api.trace.Tracer;
2527
import io.opentelemetry.sdk.OpenTelemetrySdk;
28+
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
29+
import io.opentelemetry.sdk.metrics.export.MetricExporter;
30+
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
2631
import io.opentelemetry.sdk.resources.Resource;
2732
import io.opentelemetry.sdk.trace.SdkTracerProvider;
2833
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
@@ -51,6 +56,7 @@ public OpenTelemetry openTelemetry() {
5156

5257
// Enable OpenTelemetry tracing in Spanner.
5358
SpannerOptions.enableOpenTelemetryTraces();
59+
SpannerOptions.enableOpenTelemetryMetrics();
5460

5561
if (!hasDefaultCredentials()) {
5662
// Create a no-op OpenTelemetry object if this environment does not have any default
@@ -63,6 +69,17 @@ public OpenTelemetry openTelemetry() {
6369
TraceConfiguration traceConfiguration = traceConfigurationBuilder.setProjectId(project).build();
6470
SpanExporter traceExporter = TraceExporter.createWithConfiguration(traceConfiguration);
6571

72+
MetricConfiguration.Builder metricConfigurationBuilder = MetricConfiguration.builder();
73+
MetricConfiguration metricConfiguration =
74+
metricConfigurationBuilder.setProjectId(project).build();
75+
MetricExporter metricExporter =
76+
GoogleCloudMetricExporter.createWithConfiguration(metricConfiguration);
77+
78+
SdkMeterProvider sdkMeterProvider =
79+
SdkMeterProvider.builder()
80+
.registerMetricReader(PeriodicMetricReader.builder(metricExporter).build())
81+
.build();
82+
6683
// Create an OpenTelemetry object and register it as the global OpenTelemetry object. This
6784
// will automatically be picked up by the Spanner libraries and used for tracing.
6885
return OpenTelemetrySdk.builder()
@@ -81,6 +98,7 @@ public OpenTelemetry openTelemetry() {
8198
.build())
8299
.addSpanProcessor(BatchSpanProcessor.builder(traceExporter).build())
83100
.build())
101+
.setMeterProvider(sdkMeterProvider)
84102
.buildAndRegisterGlobal();
85103
}
86104

0 commit comments

Comments
 (0)