From a89bc972c68a5f81c03df1ef166e8338676a8a29 Mon Sep 17 00:00:00 2001 From: Mattie Fu Date: Fri, 25 Apr 2025 13:54:04 -0400 Subject: [PATCH 1/2] fix: use universe domain when creating the monitoring client --- .../bigtable/data/v2/stub/BigtableClientContext.java | 12 +++++++++--- .../metrics/BigtableCloudMonitoringExporter.java | 6 +++++- .../data/v2/stub/metrics/BuiltinMetricsView.java | 11 +++++++++++ .../data/v2/stub/metrics/DefaultMetricsProvider.java | 6 ++++-- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java index 3fbdf29f39..bc3660e7c6 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java @@ -70,6 +70,8 @@ public static BigtableClientContext create(EnhancedBigtableStubSettings settings } builder.setCredentialsProvider(FixedCredentialsProvider.create(credentials)); + String universeDomain = settings.getUniverseDomain(); + // Set up OpenTelemetry OpenTelemetry openTelemetry = null; try { @@ -77,7 +79,10 @@ public static BigtableClientContext create(EnhancedBigtableStubSettings settings // the OTEL instance and log the exception instead. openTelemetry = getOpenTelemetryFromMetricsProvider( - settings.getMetricsProvider(), credentials, settings.getMetricsEndpoint()); + settings.getMetricsProvider(), + credentials, + settings.getMetricsEndpoint(), + universeDomain); } catch (Throwable t) { logger.log(Level.WARNING, "Failed to get OTEL, will skip exporting client side metrics", t); } @@ -194,7 +199,8 @@ public void close() throws Exception { private static OpenTelemetry getOpenTelemetryFromMetricsProvider( MetricsProvider metricsProvider, @Nullable Credentials defaultCredentials, - @Nullable String metricsEndpoint) + @Nullable String metricsEndpoint, + String universeDomain) throws IOException { if (metricsProvider instanceof CustomOpenTelemetryMetricsProvider) { CustomOpenTelemetryMetricsProvider customMetricsProvider = @@ -206,7 +212,7 @@ private static OpenTelemetry getOpenTelemetryFromMetricsProvider( ? BigtableDataSettings.getMetricsCredentials() : defaultCredentials; DefaultMetricsProvider defaultMetricsProvider = (DefaultMetricsProvider) metricsProvider; - return defaultMetricsProvider.getOpenTelemetry(metricsEndpoint, credentials); + return defaultMetricsProvider.getOpenTelemetry(metricsEndpoint, universeDomain, credentials); } else if (metricsProvider instanceof NoopMetricsProvider) { return null; } diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableCloudMonitoringExporter.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableCloudMonitoringExporter.java index 6842bf8394..bf022308ff 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableCloudMonitoringExporter.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableCloudMonitoringExporter.java @@ -113,15 +113,19 @@ static BigtableCloudMonitoringExporter create( String exporterName, @Nullable Credentials credentials, @Nullable String endpoint, + String universeDomain, TimeSeriesConverter converter) throws IOException { - + Preconditions.checkNotNull(universeDomain); MetricServiceSettings.Builder settingsBuilder = MetricServiceSettings.newBuilder(); CredentialsProvider credentialsProvider = Optional.ofNullable(credentials) .map(FixedCredentialsProvider::create) .orElse(NoCredentialsProvider.create()); settingsBuilder.setCredentialsProvider(credentialsProvider); + + settingsBuilder.setUniverseDomain(universeDomain); + if (MONITORING_ENDPOINT_OVERRIDE_SYS_PROP != null) { logger.warning( "Setting the monitoring endpoint through system variable will be removed in future" diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsView.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsView.java index 3bb07e3e42..f6df7fe6cd 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsView.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsView.java @@ -99,11 +99,22 @@ public static void registerBuiltinMetrics( public static void registerBuiltinMetrics( @Nullable Credentials credentials, SdkMeterProviderBuilder builder, @Nullable String endpoint) throws IOException { + registerBuiltinMetricsWithUniverseDomain( + credentials, builder, endpoint, Credentials.GOOGLE_DEFAULT_UNIVERSE); + } + + static void registerBuiltinMetricsWithUniverseDomain( + @Nullable Credentials credentials, + SdkMeterProviderBuilder builder, + @Nullable String endpoint, + String universeDomain) + throws IOException { MetricExporter publicExporter = BigtableCloudMonitoringExporter.create( "bigtable metrics", credentials, endpoint, + universeDomain, new BigtableCloudMonitoringExporter.PublicTimeSeriesConverter()); for (Map.Entry entry : diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/DefaultMetricsProvider.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/DefaultMetricsProvider.java index ae4df85893..7b18125b95 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/DefaultMetricsProvider.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/DefaultMetricsProvider.java @@ -39,9 +39,11 @@ private DefaultMetricsProvider() {} @InternalApi public OpenTelemetry getOpenTelemetry( - @Nullable String metricsEndpoint, @Nullable Credentials credentials) throws IOException { + @Nullable String metricsEndpoint, String universeDomain, @Nullable Credentials credentials) + throws IOException { SdkMeterProviderBuilder meterProvider = SdkMeterProvider.builder(); - BuiltinMetricsView.registerBuiltinMetrics(credentials, meterProvider, metricsEndpoint); + BuiltinMetricsView.registerBuiltinMetricsWithUniverseDomain( + credentials, meterProvider, metricsEndpoint, universeDomain); return OpenTelemetrySdk.builder().setMeterProvider(meterProvider.build()).build(); } From 60e1a62a167bdc5c11e6cc0d3b66250564f3c9ff Mon Sep 17 00:00:00 2001 From: Mattie Fu Date: Fri, 25 Apr 2025 14:12:17 -0400 Subject: [PATCH 2/2] fix Util --- .../com/google/cloud/bigtable/data/v2/stub/metrics/Util.java | 1 + 1 file changed, 1 insertion(+) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/Util.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/Util.java index be3ae5e2e4..093d7800d3 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/Util.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/metrics/Util.java @@ -263,6 +263,7 @@ public static OpenTelemetrySdk newInternalOpentelemetry( "application metrics", credentials, settings.getMetricsEndpoint(), + settings.getUniverseDomain(), new BigtableCloudMonitoringExporter.InternalTimeSeriesConverter( Suppliers.memoize( () -> BigtableExporterUtils.createInternalMonitoredResource(settings))))));