Skip to content

Commit

Permalink
record metrics whenever it's registered
Browse files Browse the repository at this point in the history
  • Loading branch information
mutianf committed Mar 29, 2024
1 parent 21cad39 commit ecf3acd
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@
import com.google.cloud.bigtable.data.v2.models.ReadModifyWriteRow;
import com.google.cloud.bigtable.data.v2.models.Row;
import com.google.cloud.bigtable.data.v2.models.RowMutation;
import com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsView;
import com.google.cloud.bigtable.data.v2.stub.metrics.DefaultMetricsProvider;
import com.google.cloud.bigtable.data.v2.stub.metrics.MetricsProvider;
import com.google.cloud.bigtable.data.v2.stub.metrics.NoopMetricsProvider;
import com.google.cloud.bigtable.data.v2.stub.mutaterows.MutateRowsBatchingDescriptor;
import com.google.cloud.bigtable.data.v2.stub.readrows.ReadRowsBatchingDescriptor;
import com.google.common.base.MoreObjects;
Expand Down Expand Up @@ -1068,8 +1068,7 @@ public EnhancedBigtableStubSettings build() {

featureFlags.setRoutingCookie(this.getEnableRoutingCookie());
featureFlags.setRetryInfo(this.getEnableRetryInfo());
featureFlags.setClientSideMetricsEnabled(
!(this.getMetricsProvider() instanceof NoopMetricsProvider));
featureFlags.setClientSideMetricsEnabled((BuiltinMetricsView.getBuiltinViewRegistered()));

// Serialize the web64 encode the bigtable feature flags
ByteArrayOutputStream boas = new ByteArrayOutputStream();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
package com.google.cloud.bigtable.data.v2.stub.metrics;

import com.google.api.core.InternalApi;
import com.google.auth.Credentials;
import com.google.auth.oauth2.GoogleCredentials;
import io.opentelemetry.sdk.metrics.InstrumentSelector;
Expand All @@ -24,6 +25,7 @@
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.Nullable;

/**
Expand All @@ -33,6 +35,8 @@
*/
public class BuiltinMetricsView {

private static final AtomicBoolean BUILTIN_VIEW_REGISTERED = new AtomicBoolean();

private BuiltinMetricsView() {}

/**
Expand All @@ -50,10 +54,20 @@ public static void registerBuiltinMetrics(
String projectId, @Nullable Credentials credentials, SdkMeterProviderBuilder builder)
throws IOException {
MetricExporter metricExporter = BigtableCloudMonitoringExporter.create(projectId, credentials);
BUILTIN_VIEW_REGISTERED.set(true);
for (Map.Entry<InstrumentSelector, View> entry :
BuiltinMetricsConstants.getAllViews().entrySet()) {
builder.registerView(entry.getKey(), entry.getValue());
}
builder.registerMetricReader(PeriodicMetricReader.create(metricExporter));
}

@InternalApi
public static boolean getBuiltinViewRegistered() {
return BUILTIN_VIEW_REGISTERED.get();
}

static void unregister() {
BUILTIN_VIEW_REGISTERED.set(false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ public final class NoopMetricsProvider implements MetricsProvider {

public static NoopMetricsProvider INSTANCE = new NoopMetricsProvider();

private NoopMetricsProvider() {}
private NoopMetricsProvider() {
BuiltinMetricsView.unregister();
}

@Override
public String toString() {
Expand Down

0 comments on commit ecf3acd

Please sign in to comment.