Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.

Commit 3c44862

Browse files
move otel creation to MetricsImpl
Change-Id: Ife3da0fbd1b68e180a579c1fcc8dfc6f9177f58d
1 parent 17722a4 commit 3c44862

4 files changed

Lines changed: 49 additions & 51 deletions

File tree

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/csm/MetricsImpl.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@
1818
import com.google.api.gax.grpc.GaxGrpcProperties;
1919
import com.google.api.gax.tracing.ApiTracerFactory;
2020
import com.google.api.gax.tracing.OpencensusTracerFactory;
21+
import com.google.auth.Credentials;
2122
import com.google.cloud.bigtable.Version;
23+
import com.google.cloud.bigtable.data.v2.BigtableDataSettings;
2224
import com.google.cloud.bigtable.data.v2.internal.csm.attributes.ClientInfo;
25+
import com.google.cloud.bigtable.data.v2.stub.metrics.BigtableCloudMonitoringExporter;
2326
import com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants;
2427
import com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsTracerFactory;
2528
import com.google.cloud.bigtable.data.v2.stub.metrics.ChannelPoolMetricsTracer;
@@ -37,9 +40,18 @@
3740
import io.opencensus.tags.Tagger;
3841
import io.opentelemetry.api.OpenTelemetry;
3942
import io.opentelemetry.sdk.OpenTelemetrySdk;
43+
import io.opentelemetry.sdk.metrics.InstrumentSelector;
44+
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
45+
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
46+
import io.opentelemetry.sdk.metrics.View;
47+
import io.opentelemetry.sdk.metrics.export.MetricExporter;
48+
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
49+
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReaderBuilder;
4050
import java.io.Closeable;
51+
import java.io.IOException;
4152
import java.util.ArrayList;
4253
import java.util.List;
54+
import java.util.Map;
4355
import java.util.concurrent.ScheduledExecutorService;
4456
import java.util.concurrent.ScheduledFuture;
4557
import javax.annotation.Nullable;
@@ -135,6 +147,41 @@ public ChannelPoolMetricsTracer getChannelPoolMetricsTracer() {
135147
return channelPoolMetricsTracer;
136148
}
137149

150+
public static OpenTelemetrySdk createBuiltinOtel(
151+
ClientInfo clientInfo,
152+
@Nullable Credentials defaultCredentials,
153+
@Nullable String metricsEndpoint,
154+
String universeDomain,
155+
ScheduledExecutorService executor)
156+
throws IOException {
157+
158+
Credentials credentials =
159+
BigtableDataSettings.getMetricsCredentials() != null
160+
? BigtableDataSettings.getMetricsCredentials()
161+
: defaultCredentials;
162+
163+
SdkMeterProviderBuilder meterProvider = SdkMeterProvider.builder();
164+
165+
for (Map.Entry<InstrumentSelector, View> entry :
166+
BuiltinMetricsConstants.getAllViews().entrySet()) {
167+
meterProvider.registerView(entry.getKey(), entry.getValue());
168+
}
169+
170+
for (Map.Entry<InstrumentSelector, View> e :
171+
BuiltinMetricsConstants.getInternalViews().entrySet()) {
172+
meterProvider.registerView(e.getKey(), e.getValue());
173+
}
174+
175+
MetricExporter publicExporter =
176+
BigtableCloudMonitoringExporter.create(
177+
clientInfo, credentials, metricsEndpoint, universeDomain, executor);
178+
PeriodicMetricReaderBuilder readerBuilder =
179+
PeriodicMetricReader.builder(publicExporter).setExecutor(executor);
180+
meterProvider.registerMetricReader(readerBuilder.build());
181+
182+
return OpenTelemetrySdk.builder().setMeterProvider(meterProvider.build()).build();
183+
}
184+
138185
private static ApiTracerFactory createOCTracingFactory(ClientInfo clientInfo) {
139186
return new OpencensusTracerFactory(
140187
ImmutableMap.<String, String>builder()

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import com.google.cloud.bigtable.data.v2.internal.csm.MetricsImpl;
3333
import com.google.cloud.bigtable.data.v2.internal.csm.attributes.ClientInfo;
3434
import com.google.cloud.bigtable.data.v2.stub.metrics.CustomOpenTelemetryMetricsProvider;
35-
import com.google.cloud.bigtable.data.v2.stub.metrics.Util;
3635
import com.google.cloud.bigtable.gaxx.grpc.BigtableTransportChannelProvider;
3736
import com.google.cloud.bigtable.gaxx.grpc.ChannelPrimer;
3837
import io.grpc.ManagedChannelBuilder;
@@ -113,7 +112,7 @@ public static BigtableClientContext create(
113112
try {
114113
if (settings.areInternalMetricsEnabled()) {
115114
builtinOtel =
116-
Util.createBuiltinOtel(
115+
MetricsImpl.createBuiltinOtel(
117116
clientInfo,
118117
credentials,
119118
settings.getMetricsEndpoint(),

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableCloudMonitoringExporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public final class BigtableCloudMonitoringExporter implements MetricExporter {
113113

114114
private final AtomicBoolean exportFailureLogged = new AtomicBoolean(false);
115115

116-
static BigtableCloudMonitoringExporter create(
116+
public static BigtableCloudMonitoringExporter create(
117117
ClientInfo clientInfo,
118118
@Nullable Credentials credentials,
119119
@Nullable String endpoint,

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/Util.java

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import com.google.api.gax.grpc.GrpcStatusCode;
2020
import com.google.api.gax.rpc.ApiCallContext;
2121
import com.google.api.gax.rpc.ApiException;
22-
import com.google.auth.Credentials;
2322
import com.google.bigtable.v2.AuthorizedViewName;
2423
import com.google.bigtable.v2.CheckAndMutateRowRequest;
2524
import com.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest;
@@ -33,21 +32,10 @@
3332
import com.google.bigtable.v2.ResponseParams;
3433
import com.google.bigtable.v2.SampleRowKeysRequest;
3534
import com.google.bigtable.v2.TableName;
36-
import com.google.cloud.bigtable.data.v2.BigtableDataSettings;
37-
import com.google.cloud.bigtable.data.v2.internal.csm.attributes.ClientInfo;
3835
import com.google.cloud.bigtable.data.v2.stub.MetadataExtractorInterceptor;
3936
import com.google.common.collect.ImmutableMap;
4037
import io.grpc.Metadata;
4138
import io.grpc.Status;
42-
import io.opentelemetry.sdk.OpenTelemetrySdk;
43-
import io.opentelemetry.sdk.metrics.InstrumentSelector;
44-
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
45-
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
46-
import io.opentelemetry.sdk.metrics.View;
47-
import io.opentelemetry.sdk.metrics.export.MetricExporter;
48-
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
49-
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReaderBuilder;
50-
import java.io.IOException;
5139
import java.time.Instant;
5240
import java.time.temporal.ChronoUnit;
5341
import java.util.Arrays;
@@ -56,7 +44,6 @@
5644
import java.util.Map;
5745
import java.util.Optional;
5846
import java.util.concurrent.CancellationException;
59-
import java.util.concurrent.ScheduledExecutorService;
6047
import javax.annotation.Nullable;
6148

6249
/** Utilities to help integrating with OpenCensus. */
@@ -147,41 +134,6 @@ static Map<String, List<String>> createStatsHeaders(ApiCallContext apiCallContex
147134
return headers.build();
148135
}
149136

150-
public static OpenTelemetrySdk createBuiltinOtel(
151-
ClientInfo clientInfo,
152-
@Nullable Credentials defaultCredentials,
153-
@Nullable String metricsEndpoint,
154-
String universeDomain,
155-
ScheduledExecutorService executor)
156-
throws IOException {
157-
158-
Credentials credentials =
159-
BigtableDataSettings.getMetricsCredentials() != null
160-
? BigtableDataSettings.getMetricsCredentials()
161-
: defaultCredentials;
162-
163-
SdkMeterProviderBuilder meterProvider = SdkMeterProvider.builder();
164-
165-
for (Map.Entry<InstrumentSelector, View> entry :
166-
BuiltinMetricsConstants.getAllViews().entrySet()) {
167-
meterProvider.registerView(entry.getKey(), entry.getValue());
168-
}
169-
170-
for (Map.Entry<InstrumentSelector, View> e :
171-
BuiltinMetricsConstants.getInternalViews().entrySet()) {
172-
meterProvider.registerView(e.getKey(), e.getValue());
173-
}
174-
175-
MetricExporter publicExporter =
176-
BigtableCloudMonitoringExporter.create(
177-
clientInfo, credentials, metricsEndpoint, universeDomain, executor);
178-
PeriodicMetricReaderBuilder readerBuilder =
179-
PeriodicMetricReader.builder(publicExporter).setExecutor(executor);
180-
meterProvider.registerMetricReader(readerBuilder.build());
181-
182-
return OpenTelemetrySdk.builder().setMeterProvider(meterProvider.build()).build();
183-
}
184-
185137
public static String formatTransportTypeMetricLabel(
186138
MetadataExtractorInterceptor.SidebandData sidebandData) {
187139
return Optional.ofNullable(sidebandData)

0 commit comments

Comments
 (0)