From a5530ddea4fca1546586d0bba598afc883c0a50f Mon Sep 17 00:00:00 2001 From: Mattie Fu Date: Tue, 9 Aug 2022 13:26:39 -0400 Subject: [PATCH] address comments --- google-cloud-bigtable-stats/pom.xml | 31 ++- .../BigtableCreateTimeSeriesExporter.java | 13 +- .../stats/BigtableStackdriverExportUtils.java | 246 ++++++++---------- .../BigtableStackdriverStatsExporter.java | 12 +- google-cloud-bigtable/pom.xml | 1 + .../data/v2/BigtableDataSettings.java | 69 ++--- 6 files changed, 170 insertions(+), 202 deletions(-) diff --git a/google-cloud-bigtable-stats/pom.xml b/google-cloud-bigtable-stats/pom.xml index 10b64dc466..60798866d4 100644 --- a/google-cloud-bigtable-stats/pom.xml +++ b/google-cloud-bigtable-stats/pom.xml @@ -17,7 +17,6 @@ Experimental project to shade OpenCensus dependencies. - 0.31.1 3.3.6 @@ -30,20 +29,12 @@ pom import - - io.opencensus - opencensus-exporter-metrics-util - ${opencensus.version} - com.google.cloud - google-cloud-monitoring - ${cloud.monitoring.version} - - - com.google.api.grpc - proto-google-cloud-monitoring-v3 + google-cloud-monitoring-bom ${cloud.monitoring.version} + pom + import @@ -56,7 +47,7 @@ io.opencensus - opencensus-exporter-metrics-util + opencensus-exporter-stats-stackdriver io.opencensus @@ -68,6 +59,7 @@ com.google.cloud google-cloud-monitoring + com.google.http-client @@ -192,6 +184,17 @@ org.apache.maven.plugins maven-dependency-plugin 3.3.0 + + + + + + + + io.opencensus:opencensus-exporter-metrics-util:* + io.opencensus:opencensus-exporter-stats-stackdriver:* + + org.codehaus.mojo @@ -218,7 +221,7 @@ - io.opencensus:*:[${opencensus.version}] + io.opencensus:*:[0.31.1] io.opencensus:opencensus-proto:[0.2.0] diff --git a/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableCreateTimeSeriesExporter.java b/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableCreateTimeSeriesExporter.java index 8f118c02eb..67550fb512 100644 --- a/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableCreateTimeSeriesExporter.java +++ b/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableCreateTimeSeriesExporter.java @@ -19,9 +19,9 @@ import com.google.cloud.monitoring.v3.MetricServiceClient; import com.google.monitoring.v3.CreateTimeSeriesRequest; import com.google.monitoring.v3.ProjectName; -import com.google.monitoring.v3.TimeSeries; import io.opencensus.exporter.metrics.util.MetricExporter; import io.opencensus.metrics.export.Metric; +import io.opencensus.metrics.export.TimeSeries; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -48,7 +48,7 @@ final class BigtableCreateTimeSeriesExporter extends MetricExporter { } public void export(Collection metrics) { - List timeSeriesList = new ArrayList(metrics.size()); + List timeSeriesList = new ArrayList(metrics.size()); for (Metric metric : metrics) { // only export bigtable metrics @@ -56,15 +56,10 @@ public void export(Collection metrics) { continue; } - for (io.opencensus.metrics.export.TimeSeries timeSeries : metric.getTimeSeriesList()) { + for (TimeSeries timeSeries : metric.getTimeSeriesList()) { timeSeriesList.add( BigtableStackdriverExportUtils.convertTimeSeries( - metric.getMetricDescriptor().getName(), - metric.getMetricDescriptor().getType(), - metric.getMetricDescriptor().getLabelKeys(), - timeSeries, - clientId, - monitoredResource)); + metric.getMetricDescriptor(), timeSeries, clientId, monitoredResource)); } } diff --git a/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableStackdriverExportUtils.java b/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableStackdriverExportUtils.java index 20fe21c5c2..3dfbcaaf25 100644 --- a/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableStackdriverExportUtils.java +++ b/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableStackdriverExportUtils.java @@ -17,24 +17,26 @@ import com.google.api.Distribution.BucketOptions; import com.google.api.Distribution.BucketOptions.Explicit; +import com.google.api.Metric; import com.google.api.MetricDescriptor.MetricKind; import com.google.api.MonitoredResource; -import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import com.google.monitoring.v3.TimeInterval; -import com.google.monitoring.v3.TimeSeries; import com.google.monitoring.v3.TypedValue; -import com.google.protobuf.Any; -import com.google.protobuf.ByteString; +import io.opencensus.common.Function; import io.opencensus.common.Functions; +import io.opencensus.common.Timestamp; import io.opencensus.metrics.LabelKey; import io.opencensus.metrics.LabelValue; -import io.opencensus.metrics.data.AttachmentValue; +import io.opencensus.metrics.export.Distribution; import io.opencensus.metrics.export.Distribution.Bucket; import io.opencensus.metrics.export.Distribution.BucketOptions.ExplicitOptions; +import io.opencensus.metrics.export.MetricDescriptor; import io.opencensus.metrics.export.MetricDescriptor.Type; +import io.opencensus.metrics.export.Point; import io.opencensus.metrics.export.Summary; +import io.opencensus.metrics.export.TimeSeries; import io.opencensus.metrics.export.Value; import java.lang.management.ManagementFactory; import java.net.InetAddress; @@ -49,17 +51,45 @@ import javax.annotation.Nullable; class BigtableStackdriverExportUtils { - private static final Logger logger; - private static final io.opencensus.common.Function typedValueDoubleFunction; - private static final io.opencensus.common.Function typedValueLongFunction; - private static final io.opencensus.common.Function< - io.opencensus.metrics.export.Distribution, TypedValue> - typedValueDistributionFunction; - private static final io.opencensus.common.Function typedValueSummaryFunction; - private static final io.opencensus.common.Function - bucketOptionsExplicitFunction; + private static final Logger logger = + Logger.getLogger(BigtableStackdriverExportUtils.class.getName()); + private static final Function typedValueDoubleFunction = + arg -> { + TypedValue.Builder builder = TypedValue.newBuilder(); + builder.setDoubleValue(arg); + return builder.build(); + }; + private static final Function typedValueLongFunction = + arg -> { + TypedValue.Builder builder = TypedValue.newBuilder(); + builder.setInt64Value(arg); + return builder.build(); + }; + private static final Function typedValueDistributionFunction = + arg -> { + TypedValue.Builder builder = TypedValue.newBuilder(); + return builder + .setDistributionValue(BigtableStackdriverExportUtils.createDistribution(arg)) + .build(); + }; + private static final Function typedValueSummaryFunction = + arg -> { + TypedValue.Builder builder = TypedValue.newBuilder(); + return builder.build(); + }; + private static final Function bucketOptionsExplicitFunction = + arg -> { + BucketOptions.Builder builder = BucketOptions.newBuilder(); + Explicit.Builder explicitBuilder = Explicit.newBuilder(); + explicitBuilder.addBounds(0.0D); + explicitBuilder.addAllBounds(arg.getBucketBoundaries()); + builder.setExplicitBuckets(explicitBuilder.build()); + return builder.build(); + }; + + // promote the following metric labels to monitored resource labels private static final Set PROMOTED_RESOURCE_LABELS = ImmutableSet.of( BuiltinMeasureConstants.PROJECT_ID.getName(), @@ -68,6 +98,51 @@ class BigtableStackdriverExportUtils { BuiltinMeasureConstants.ZONE.getName(), BuiltinMeasureConstants.TABLE.getName()); + private static final LabelKey clientIdLabelKey = + LabelKey.create(BuiltinMeasureConstants.CLIENT_UID.getName(), "client id"); + + static com.google.monitoring.v3.TimeSeries convertTimeSeries( + MetricDescriptor metricDescriptor, + TimeSeries timeSeries, + String clientId, + MonitoredResource monitoredResource) { + String metricName = metricDescriptor.getName(); + List labelKeys = metricDescriptor.getLabelKeys(); + Type metricType = metricDescriptor.getType(); + + MonitoredResource.Builder monitoredResourceBuilder = monitoredResource.toBuilder(); + + List metricTagKeys = new ArrayList<>(); + List metricTagValues = new ArrayList<>(); + + List labelValues = timeSeries.getLabelValues(); + for (int i = 0; i < labelValues.size(); i++) { + // If the label is defined in the monitored resource, convert it to + // a monitored resource label. Otherwise, keep it as a metric label. + if (PROMOTED_RESOURCE_LABELS.contains(labelKeys.get(i).getKey())) { + monitoredResourceBuilder.putLabels( + labelKeys.get(i).getKey(), labelValues.get(i).getValue()); + } else { + metricTagKeys.add(labelKeys.get(i)); + metricTagValues.add(labelValues.get(i)); + } + } + metricTagKeys.add(clientIdLabelKey); + metricTagValues.add(LabelValue.create(clientId)); + + com.google.monitoring.v3.TimeSeries.Builder builder = + com.google.monitoring.v3.TimeSeries.newBuilder(); + builder.setResource(monitoredResourceBuilder.build()); + builder.setMetric(createMetric(metricName, metricTagKeys, metricTagValues)); + builder.setMetricKind(createMetricKind(metricType)); + builder.setValueType(createValueType(metricType)); + Timestamp startTimeStamp = timeSeries.getStartTimestamp(); + for (io.opencensus.metrics.export.Point point : timeSeries.getPoints()) { + builder.addPoints(createPoint(point, startTimeStamp)); + } + return builder.build(); + } + static String getDefaultTaskValue() { String jvmName = ManagementFactory.getRuntimeMXBean().getName(); if (jvmName.indexOf(64) < 1) { @@ -85,8 +160,7 @@ static String getDefaultTaskValue() { } } - @VisibleForTesting - static MetricKind createMetricKind(Type type) { + private static MetricKind createMetricKind(Type type) { switch (type) { case GAUGE_INT64: case GAUGE_DOUBLE: @@ -100,8 +174,7 @@ static MetricKind createMetricKind(Type type) { } } - @VisibleForTesting - static com.google.api.MetricDescriptor.ValueType createValueType(Type type) { + private static com.google.api.MetricDescriptor.ValueType createValueType(Type type) { switch (type) { case GAUGE_DOUBLE: case CUMULATIVE_DOUBLE: @@ -117,48 +190,9 @@ static com.google.api.MetricDescriptor.ValueType createValueType(Type type) { } } - static TimeSeries convertTimeSeries( - String metricName, - io.opencensus.metrics.export.MetricDescriptor.Type metricType, - List labelKeys, - io.opencensus.metrics.export.TimeSeries timeSeries, - String clientId, - MonitoredResource monitoredResource) { - - MonitoredResource.Builder monitoredResourceBuilder = monitoredResource.toBuilder(); - - List metricTagKeys = new ArrayList<>(); - List metricTagValues = new ArrayList<>(); - - List labelValues = timeSeries.getLabelValues(); - for (int i = 0; i < labelValues.size(); i++) { - if (PROMOTED_RESOURCE_LABELS.contains(labelKeys.get(i).getKey())) { - monitoredResourceBuilder.putLabels( - labelKeys.get(i).getKey(), labelValues.get(i).getValue()); - } else { - metricTagKeys.add(labelKeys.get(i)); - metricTagValues.add(labelValues.get(i)); - } - } - metricTagKeys.add(LabelKey.create(BuiltinMeasureConstants.CLIENT_UID.getName(), "client id")); - metricTagValues.add(LabelValue.create(clientId)); - - TimeSeries.Builder builder = TimeSeries.newBuilder(); - builder.setMetricKind(createMetricKind(metricType)); - builder.setResource(monitoredResourceBuilder.build()); - builder.setValueType(createValueType(metricType)); - builder.setMetric(createMetric(metricName, metricTagKeys, metricTagValues)); - io.opencensus.common.Timestamp startTimeStamp = timeSeries.getStartTimestamp(); - for (io.opencensus.metrics.export.Point point : timeSeries.getPoints()) { - builder.addPoints(createPoint(point, startTimeStamp)); - } - return builder.build(); - } - - @VisibleForTesting - static com.google.api.Metric createMetric( + private static Metric createMetric( String metricName, List labelKeys, List labelValues) { - com.google.api.Metric.Builder builder = com.google.api.Metric.newBuilder(); + Metric.Builder builder = Metric.newBuilder(); builder.setType(metricName); Map stringTagMap = Maps.newHashMap(); @@ -173,15 +207,10 @@ static com.google.api.Metric createMetric( return builder.build(); } - @VisibleForTesting - static com.google.monitoring.v3.Point createPoint( - io.opencensus.metrics.export.Point point, - @Nullable io.opencensus.common.Timestamp startTimestamp) { + private static com.google.monitoring.v3.Point createPoint(Point point, Timestamp startTimestamp) { com.google.monitoring.v3.TimeInterval.Builder timeIntervalBuilder = TimeInterval.newBuilder(); + timeIntervalBuilder.setStartTime(convertTimestamp(startTimestamp)); timeIntervalBuilder.setEndTime(convertTimestamp(point.getTimestamp())); - if (startTimestamp != null) { - timeIntervalBuilder.setStartTime(convertTimestamp(startTimestamp)); - } com.google.monitoring.v3.Point.Builder builder = com.google.monitoring.v3.Point.newBuilder(); builder.setInterval(timeIntervalBuilder.build()); @@ -189,8 +218,7 @@ static com.google.monitoring.v3.Point createPoint( return builder.build(); } - @VisibleForTesting - static TypedValue createTypedValue(Value value) { + private static TypedValue createTypedValue(Value value) { return value.match( typedValueDoubleFunction, typedValueLongFunction, @@ -199,9 +227,7 @@ static TypedValue createTypedValue(Value value) { Functions.throwIllegalArgumentException()); } - @VisibleForTesting - static com.google.api.Distribution createDistribution( - io.opencensus.metrics.export.Distribution distribution) { + private static com.google.api.Distribution createDistribution(Distribution distribution) { com.google.api.Distribution.Builder builder = com.google.api.Distribution.newBuilder() .setBucketOptions(createBucketOptions(distribution.getBucketOptions())) @@ -211,13 +237,12 @@ static com.google.api.Distribution createDistribution( ? 0.0D : distribution.getSum() / (double) distribution.getCount()) .setSumOfSquaredDeviation(distribution.getSumOfSquaredDeviations()); - setBucketCountsAndExemplars(distribution.getBuckets(), builder); + setBucketCounts(distribution.getBuckets(), builder); return builder.build(); } - @VisibleForTesting - static BucketOptions createBucketOptions( - @Nullable io.opencensus.metrics.export.Distribution.BucketOptions bucketOptions) { + private static BucketOptions createBucketOptions( + @Nullable Distribution.BucketOptions bucketOptions) { com.google.api.Distribution.BucketOptions.Builder builder = BucketOptions.newBuilder(); return bucketOptions == null ? builder.build() @@ -225,44 +250,16 @@ static BucketOptions createBucketOptions( bucketOptionsExplicitFunction, Functions.throwIllegalArgumentException()); } - private static void setBucketCountsAndExemplars( + private static void setBucketCounts( List buckets, com.google.api.Distribution.Builder builder) { builder.addBucketCounts(0L); for (Bucket bucket : buckets) { builder.addBucketCounts(bucket.getCount()); - io.opencensus.metrics.data.Exemplar exemplar = bucket.getExemplar(); - if (exemplar != null) { - builder.addExemplars(toProtoExemplar(exemplar)); - } } } - private static com.google.api.Distribution.Exemplar toProtoExemplar( - io.opencensus.metrics.data.Exemplar exemplar) { - com.google.api.Distribution.Exemplar.Builder builder = - com.google.api.Distribution.Exemplar.newBuilder() - .setValue(exemplar.getValue()) - .setTimestamp(convertTimestamp(exemplar.getTimestamp())); - - for (Map.Entry attachment : exemplar.getAttachments().entrySet()) { - AttachmentValue value = attachment.getValue(); - builder.addAttachments(toProtoStringAttachment(value)); - } - - return builder.build(); - } - - private static Any toProtoStringAttachment(AttachmentValue attachmentValue) { - return Any.newBuilder() - .setTypeUrl("type.googleapis.com/google.protobuf.StringValue") - .setValue(ByteString.copyFromUtf8(attachmentValue.getValue())) - .build(); - } - - @VisibleForTesting - static com.google.protobuf.Timestamp convertTimestamp( - io.opencensus.common.Timestamp censusTimestamp) { + private static com.google.protobuf.Timestamp convertTimestamp(Timestamp censusTimestamp) { return censusTimestamp.getSeconds() < 0L ? com.google.protobuf.Timestamp.newBuilder().build() : com.google.protobuf.Timestamp.newBuilder() @@ -270,43 +267,4 @@ static com.google.protobuf.Timestamp convertTimestamp( .setNanos(censusTimestamp.getNanos()) .build(); } - - private BigtableStackdriverExportUtils() {} - - static { - logger = Logger.getLogger(BigtableStackdriverExportUtils.class.getName()); - typedValueDoubleFunction = - arg -> { - TypedValue.Builder builder = TypedValue.newBuilder(); - builder.setDoubleValue(arg); - return builder.build(); - }; - typedValueLongFunction = - arg -> { - TypedValue.Builder builder = TypedValue.newBuilder(); - builder.setInt64Value(arg); - return builder.build(); - }; - typedValueDistributionFunction = - arg -> { - TypedValue.Builder builder = TypedValue.newBuilder(); - return builder - .setDistributionValue(BigtableStackdriverExportUtils.createDistribution(arg)) - .build(); - }; - typedValueSummaryFunction = - arg -> { - TypedValue.Builder builder = TypedValue.newBuilder(); - return builder.build(); - }; - bucketOptionsExplicitFunction = - arg -> { - BucketOptions.Builder builder = BucketOptions.newBuilder(); - Explicit.Builder explicitBuilder = Explicit.newBuilder(); - explicitBuilder.addBounds(0.0D); - explicitBuilder.addAllBounds(arg.getBucketBoundaries()); - builder.setExplicitBuckets(explicitBuilder.build()); - return builder.build(); - }; - } } diff --git a/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableStackdriverStatsExporter.java b/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableStackdriverStatsExporter.java index 6cb24505b5..970a5bf61c 100644 --- a/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableStackdriverStatsExporter.java +++ b/google-cloud-bigtable-stats/src/main/java/com/google/cloud/bigtable/stats/BigtableStackdriverStatsExporter.java @@ -34,12 +34,13 @@ @InternalApi public class BigtableStackdriverStatsExporter { - static final Object monitor = new Object(); + static final Object lock = new Object(); @Nullable @GuardedBy("monitor") private static BigtableStackdriverStatsExporter instance = null; + // Default export interval is 10 minutes private static final Duration EXPORT_INTERVAL = Duration.create(600, 0); private static final String RESOURCE_TYPE = "bigtable_client_raw"; @@ -57,7 +58,7 @@ private BigtableStackdriverStatsExporter( IntervalMetricReader.create( new BigtableCreateTimeSeriesExporter(projectId, metricServiceClient, monitoredResource), MetricReader.create( - io.opencensus.exporter.metrics.util.MetricReader.Options.builder() + MetricReader.Options.builder() .setMetricProducerManager( Metrics.getExportComponent().getMetricProducerManager()) .build()), @@ -66,9 +67,10 @@ private BigtableStackdriverStatsExporter( public static void register(@Nullable Credentials credentials, String projectId) throws IOException { - synchronized (monitor) { + synchronized (lock) { Preconditions.checkState( instance == null, "Bigtable Stackdriver stats exporter is already created"); + // Default timeout for creating a client is 1 minute MetricServiceClient client = createMetricServiceClient(credentials, Duration.create(60L, 0)); MonitoredResource resourceType = MonitoredResource.newBuilder().setType(RESOURCE_TYPE).build(); @@ -81,7 +83,7 @@ public static void register(@Nullable Credentials credentials, String projectId) @VisibleForTesting static MetricServiceClient createMetricServiceClient( @Nullable Credentials credentials, Duration deadline) throws IOException { - com.google.cloud.monitoring.v3.MetricServiceSettings.Builder settingsBuilder = + MetricServiceSettings.Builder settingsBuilder = MetricServiceSettings.newBuilder() .setTransportChannelProvider(InstantiatingGrpcChannelProvider.newBuilder().build()); if (credentials != null) { @@ -95,7 +97,7 @@ static MetricServiceClient createMetricServiceClient( } public static void unregister() { - synchronized (monitor) { + synchronized (lock) { if (instance != null) { instance.intervalMetricReader.stop(); } diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml index 4872466846..a035d507e1 100644 --- a/google-cloud-bigtable/pom.xml +++ b/google-cloud-bigtable/pom.xml @@ -146,6 +146,7 @@ grpc-alts runtime + com.google.http-client google-http-client diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java index 57ee2f124f..8520a10e3b 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java @@ -23,6 +23,8 @@ import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.auth.Credentials; +import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.bigtable.data.v2.models.Query; import com.google.cloud.bigtable.data.v2.models.Row; import com.google.cloud.bigtable.data.v2.stub.BigtableBatchingCallSettings; @@ -198,6 +200,42 @@ public static void enableGfeOpenCensusStats() { com.google.cloud.bigtable.data.v2.stub.metrics.RpcViews.registerBigtableClientGfeViews(); } + /** + * Register built in metrics. This is an experimental feature. Please fill up this form to have + * your project allow listed for the private preview: https://forms.gle/xuhu6vCunn2MjV2m9 + */ + @BetaApi("Built in metric is not currently stable and may change in the future") + public static void registerBuiltinMetrics(String projectId) throws IOException { + GoogleCredentials.getApplicationDefault(); + if (BUILTIN_METRICS_REGISTERED.compareAndSet(false, true)) { + BuiltinViews.registerBigtableBuiltinViews(); + BigtableStackdriverStatsExporter.register( + GoogleCredentials.getApplicationDefault(), projectId); + } + } + + /** + * Register built in metrics with credentials. This is an experimental feature. Please fill up + * this form to have your project allow listed for the private preview: + * https://forms.gle/xuhu6vCunn2MjV2m9 + */ + @BetaApi("Built in metric is not currently stable and may change in the future") + public static void registerBuiltinMetrics(Credentials credentials, String projectId) + throws IOException { + if (BUILTIN_METRICS_REGISTERED.compareAndSet(false, true)) { + BuiltinViews.registerBigtableBuiltinViews(); + BigtableStackdriverStatsExporter.register(credentials, projectId); + } + } + + /** Unregister built in metrics. * */ + @BetaApi("Built in metrics is not currently stable and may change in the future") + public static void unregisterBuiltinMetrics() { + if (BUILTIN_METRICS_REGISTERED.compareAndSet(true, false)) { + BigtableStackdriverStatsExporter.unregister(); + } + } + /** Returns the target project id. */ public String getProjectId() { return stubSettings.getProjectId(); @@ -253,7 +291,7 @@ public Long getBatchMutationsTargetRpcLatencyMs() { * @return */ @BetaApi("Built in metrics is not currently stable and may change in the future") - public boolean isBuiltinMetricsRegistered() { + public static boolean isBuiltinMetricsRegistered() { return BUILTIN_METRICS_REGISTERED.get(); } @@ -478,35 +516,6 @@ public Long getTargetRpcLatencyMsForBatchMutation() { return stubSettings.bulkMutateRowsSettings().getTargetRpcLatencyMs(); } - /** - * Register built in metrics. This is an experimental feature. Please fill up this form to have - * your project allow listed for the private preview: https://forms.gle/xuhu6vCunn2MjV2m9 - */ - @BetaApi("Built in metric is not currently stable and may change in the future") - public Builder registerBuiltinMetrics() throws IOException { - if (BUILTIN_METRICS_REGISTERED.compareAndSet(false, true)) { - BuiltinViews.registerBigtableBuiltinViews(); - BigtableStackdriverStatsExporter.register( - stubSettings.getCredentialsProvider().getCredentials(), stubSettings.getProjectId()); - } - return this; - } - - /** Unregister built in metrics. * */ - @BetaApi("Built in metrics is not currently stable and may change in the future") - public Builder unregisterBuiltinMetrics() { - if (BUILTIN_METRICS_REGISTERED.compareAndSet(true, false)) { - BigtableStackdriverStatsExporter.unregister(); - } - return this; - } - - /** Gets if built in metrics are registered */ - @BetaApi("Built in metric is not currently stable and may change in the future") - public boolean isBuiltinMetricsRegistered() { - return BUILTIN_METRICS_REGISTERED.get(); - } - /** * Returns the underlying settings for making RPC calls. The settings should be changed with * care.