Skip to content

Commit 89b0dc1

Browse files
committed
fix
1 parent 0f77238 commit 89b0dc1

File tree

10 files changed

+61
-36
lines changed

10 files changed

+61
-36
lines changed

google-cloud-bigtable/clirr-ignored-differences.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,4 +492,10 @@
492492
<className>com/google/cloud/bigtable/gaxx/grpc/BigtableChannelPoolSettings$Builder</className>
493493
<method>com.google.cloud.bigtable.gaxx.grpc.BigtableChannelPoolSettings$Builder setLoadBalancingStrategy(com.google.cloud.bigtable.gaxx.grpc.BigtableChannelPoolSettings$LoadBalancingStrategy)</method>
494494
</difference>
495+
<difference>
496+
<!-- InternalApi was udpated -->
497+
<differenceType>6001</differenceType>
498+
<className>com/google/cloud/bigtable/data/v2/stub/metrics/BuiltinMetricsConstants</className>
499+
<field>*</field>
500+
</difference>
495501
</differences>

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,9 @@ public BigtableDataClient createDefault() {
111111
sharedClientContext.getClientContext().toBuilder()
112112
.setTracerFactory(
113113
EnhancedBigtableStub.createBigtableTracerFactory(
114-
defaultSettings.getStubSettings(), sharedClientContext.getOpenTelemetry()))
114+
defaultSettings.getStubSettings(),
115+
sharedClientContext.getOpenTelemetry(),
116+
sharedClientContext.getInternalOpenTelemtry()))
115117
.build();
116118

117119
return BigtableDataClient.createWithClientContext(defaultSettings, clientContext);
@@ -139,7 +141,9 @@ public BigtableDataClient createForAppProfile(@Nonnull String appProfileId) thro
139141
sharedClientContext.getClientContext().toBuilder()
140142
.setTracerFactory(
141143
EnhancedBigtableStub.createBigtableTracerFactory(
142-
settings.getStubSettings(), sharedClientContext.getOpenTelemetry()))
144+
settings.getStubSettings(),
145+
sharedClientContext.getOpenTelemetry(),
146+
sharedClientContext.getInternalOpenTelemtry()))
143147
.build();
144148
return BigtableDataClient.createWithClientContext(settings, clientContext);
145149
}
@@ -166,7 +170,9 @@ public BigtableDataClient createForInstance(@Nonnull String projectId, @Nonnull
166170
sharedClientContext.getClientContext().toBuilder()
167171
.setTracerFactory(
168172
EnhancedBigtableStub.createBigtableTracerFactory(
169-
settings.getStubSettings(), sharedClientContext.getOpenTelemetry()))
173+
settings.getStubSettings(),
174+
sharedClientContext.getOpenTelemetry(),
175+
sharedClientContext.getInternalOpenTelemtry()))
170176
.build();
171177

172178
return BigtableDataClient.createWithClientContext(settings, clientContext);
@@ -194,7 +200,9 @@ public BigtableDataClient createForInstance(
194200
sharedClientContext.getClientContext().toBuilder()
195201
.setTracerFactory(
196202
EnhancedBigtableStub.createBigtableTracerFactory(
197-
settings.getStubSettings(), sharedClientContext.getOpenTelemetry()))
203+
settings.getStubSettings(),
204+
sharedClientContext.getOpenTelemetry(),
205+
sharedClientContext.getInternalOpenTelemtry()))
198206
.build();
199207
return BigtableDataClient.createWithClientContext(settings, clientContext);
200208
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,10 @@ public OpenTelemetry getOpenTelemetry() {
193193
return this.openTelemetry;
194194
}
195195

196+
public OpenTelemetry getInternalOpenTelemtry() {
197+
return this.internalOpenTelemetry;
198+
}
199+
196200
public ClientContext getClientContext() {
197201
return this.clientContext;
198202
}

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

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,10 @@ public static EnhancedBigtableStub create(EnhancedBigtableStubSettings settings)
205205
throws IOException {
206206
BigtableClientContext bigtableClientContext = createBigtableClientContext(settings);
207207
OpenTelemetry openTelemetry = bigtableClientContext.getOpenTelemetry();
208+
OpenTelemetry internalOtel = bigtableClientContext.getInternalOpenTelemtry();
208209
ClientContext contextWithTracer =
209210
bigtableClientContext.getClientContext().toBuilder()
210-
.setTracerFactory(createBigtableTracerFactory(settings, openTelemetry))
211+
.setTracerFactory(createBigtableTracerFactory(settings, openTelemetry, internalOtel))
211212
.build();
212213
return new EnhancedBigtableStub(settings, contextWithTracer);
213214
}
@@ -224,18 +225,21 @@ public static BigtableClientContext createBigtableClientContext(
224225
}
225226

226227
public static ApiTracerFactory createBigtableTracerFactory(
227-
EnhancedBigtableStubSettings settings, @Nullable OpenTelemetry openTelemetry)
228+
EnhancedBigtableStubSettings settings,
229+
@Nullable OpenTelemetry openTelemetry,
230+
@Nullable OpenTelemetry internalOtel)
228231
throws IOException {
229232
return createBigtableTracerFactory(
230-
settings, Tags.getTagger(), Stats.getStatsRecorder(), openTelemetry);
233+
settings, Tags.getTagger(), Stats.getStatsRecorder(), openTelemetry, internalOtel);
231234
}
232235

233236
@VisibleForTesting
234237
public static ApiTracerFactory createBigtableTracerFactory(
235238
EnhancedBigtableStubSettings settings,
236239
Tagger tagger,
237240
StatsRecorder stats,
238-
@Nullable OpenTelemetry openTelemetry)
241+
@Nullable OpenTelemetry openTelemetry,
242+
@Nullable OpenTelemetry internalOtel)
239243
throws IOException {
240244
String projectId = settings.getProjectId();
241245
String instanceId = settings.getInstanceId();
@@ -267,12 +271,13 @@ public static ApiTracerFactory createBigtableTracerFactory(
267271
.add(MetricsTracerFactory.create(tagger, stats, attributes))
268272
// Add user configured tracer
269273
.add(settings.getTracerFactory());
270-
BuiltinMetricsTracerFactory builtinMetricsTracerFactory =
271-
openTelemetry != null
272-
? BuiltinMetricsTracerFactory.create(openTelemetry, createBuiltinAttributes(settings))
273-
: null;
274-
if (builtinMetricsTracerFactory != null) {
275-
tracerFactories.add(builtinMetricsTracerFactory);
274+
if (openTelemetry != null) {
275+
tracerFactories.add(
276+
BuiltinMetricsTracerFactory.create(openTelemetry, createBuiltinAttributes(settings)));
277+
}
278+
if (internalOtel != null) {
279+
tracerFactories.add(
280+
BuiltinMetricsTracerFactory.create(internalOtel, createBuiltinAttributes(settings)));
276281
}
277282
return new CompositeTracerFactory(tracerFactories.build());
278283
}

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.FIRST_RESPONSE_LATENCIES_NAME;
2424
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.METER_NAME;
2525
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.OPERATION_LATENCIES_NAME;
26-
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.PER_CONNECTION_ERROR_COUNT_NAME;
2726
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.REMAINING_DEADLINE_NAME;
2827
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.RETRY_COUNT_NAME;
2928
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.SERVER_LATENCIES_NAME;
@@ -331,11 +330,6 @@ public Map<ProjectName, List<TimeSeries>> convert(Collection<MetricData> metricD
331330
}
332331

333332
static class InternalTimeSeriesConverter implements TimeSeriesConverter {
334-
private static final ImmutableList<String> APPLICATION_METRICS =
335-
ImmutableSet.of(PER_CONNECTION_ERROR_COUNT_NAME).stream()
336-
.map(m -> METER_NAME + m)
337-
.collect(ImmutableList.toImmutableList());
338-
339333
private final Supplier<MonitoredResource> monitoredResource;
340334

341335
InternalTimeSeriesConverter(Supplier<MonitoredResource> monitoredResource) {

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
import static com.google.api.MetricDescriptor.ValueType.DISTRIBUTION;
2626
import static com.google.api.MetricDescriptor.ValueType.DOUBLE;
2727
import static com.google.api.MetricDescriptor.ValueType.INT64;
28+
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.BIGTABLE_CLIENT_METRICS;
2829
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.BIGTABLE_PROJECT_ID_KEY;
2930
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.CLIENT_UID_KEY;
3031
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.CLUSTER_ID_KEY;
3132
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.GRPC_METRICS;
3233
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.INSTANCE_ID_KEY;
33-
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.INTERNAL_METRICS;
3434
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.METER_NAME;
3535
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.TABLE_ID_KEY;
3636
import static com.google.cloud.bigtable.data.v2.stub.metrics.BuiltinMetricsConstants.ZONE_ID_KEY;
@@ -171,6 +171,7 @@ static List<TimeSeries> convertToApplicationResourceTimeSeries(
171171
"convert application metrics is called when the supported resource is not detected");
172172
List<TimeSeries> allTimeSeries = new ArrayList<>();
173173
for (MetricData metricData : collection) {
174+
System.out.println("====== metric data: " + metricData.getName() + " data: " + metricData);
174175
metricData.getData().getPoints().stream()
175176
.map(
176177
pointData ->
@@ -186,6 +187,7 @@ static MonitoredResource createInternalMonitoredResource(EnhancedBigtableStubSet
186187
try {
187188
MonitoredResource monitoredResource = detectResource(settings);
188189
logger.log(Level.FINE, "Internal metrics monitored resource: %s", monitoredResource);
190+
System.out.println("detected resource: " + monitoredResource);
189191
return monitoredResource;
190192
} catch (Exception e) {
191193
logger.log(
@@ -317,7 +319,7 @@ private static Optional<TimeSeries> createInternalMetricsTimeSeries(
317319
// To unify these:
318320
// - the useless views should be removed
319321
// - internal metrics should use relative metric names w/o the prefix
320-
if (INTERNAL_METRICS.contains(metricData.getName())) {
322+
if (BIGTABLE_CLIENT_METRICS.contains(metricData.getName())) {
321323
metricBuilder = newApplicationMetricBuilder(metricData.getName(), pointData.getAttributes());
322324
} else if (GRPC_METRICS.containsKey(metricData.getName())) {
323325
metricBuilder = newGrpcMetricBuilder(metricData.getName(), pointData.getAttributes());

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

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,13 @@ public class BuiltinMetricsConstants {
167167
GRPC_TARGET_KEY.getKey()))
168168
.build();
169169

170-
public static final Set<String> INTERNAL_METRICS =
171-
ImmutableSet.of(PER_CONNECTION_ERROR_COUNT_NAME, OUTSTANDING_RPCS_PER_CHANNEL_NAME).stream()
170+
public static final Set<String> BIGTABLE_CLIENT_METRICS =
171+
ImmutableSet.of(
172+
PER_CONNECTION_ERROR_COUNT_NAME,
173+
OUTSTANDING_RPCS_PER_CHANNEL_NAME,
174+
BATCH_WRITE_FLOW_CONTROL_FACTOR_NAME,
175+
BATCH_WRITE_FLOW_CONTROL_TARGET_QPS_NAME)
176+
.stream()
172177
.map(m -> METER_NAME + m)
173178
.collect(ImmutableSet.toImmutableSet());
174179
// End allow list of metrics that will be exported
@@ -246,8 +251,6 @@ static void defineView(
246251
.build();
247252
Set<String> attributesFilter =
248253
ImmutableSet.<String>builder()
249-
.addAll(
250-
COMMON_ATTRIBUTES.stream().map(AttributeKey::getKey).collect(Collectors.toSet()))
251254
.addAll(attributes.stream().map(AttributeKey::getKey).collect(Collectors.toSet()))
252255
.build();
253256
ViewBuilder viewBuilder =
@@ -285,20 +288,18 @@ public static Map<InstrumentSelector, View> getInternalViews() {
285288
null,
286289
InstrumentType.GAUGE,
287290
"1",
288-
ImmutableSet.<AttributeKey>builder().addAll(COMMON_ATTRIBUTES).build());
291+
ImmutableSet.<AttributeKey>builder().add(METHOD_KEY).build());
289292
defineView(
290293
views,
291294
BATCH_WRITE_FLOW_CONTROL_FACTOR_NAME,
292295
AGGREGATION_BATCH_WRITE_FLOW_CONTROL_FACTOR_HISTOGRAM,
293296
InstrumentType.HISTOGRAM,
294297
"1",
295-
ImmutableSet.<AttributeKey>builder()
296-
.addAll(COMMON_ATTRIBUTES)
297-
.add(STATUS_KEY, APPLIED_KEY)
298-
.build());
298+
ImmutableSet.<AttributeKey>builder().add(STATUS_KEY, APPLIED_KEY, METHOD_KEY).build());
299299
return views.build();
300300
}
301301

302+
// uses cloud.BigtableTable schema
302303
public static Map<InstrumentSelector, View> getAllViews() {
303304
ImmutableMap.Builder<InstrumentSelector, View> views = ImmutableMap.builder();
304305

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -259,11 +259,6 @@ public static OpenTelemetrySdk newInternalOpentelemetry(
259259
EnhancedBigtableStubSettings settings, Credentials credentials) throws IOException {
260260
SdkMeterProviderBuilder meterProviderBuilder = SdkMeterProvider.builder();
261261

262-
for (Map.Entry<InstrumentSelector, View> e :
263-
BuiltinMetricsConstants.getInternalViews().entrySet()) {
264-
meterProviderBuilder.registerView(e.getKey(), e.getValue());
265-
}
266-
267262
meterProviderBuilder.registerMetricReader(
268263
PeriodicMetricReader.create(
269264
BigtableCloudMonitoringExporter.create(
@@ -274,6 +269,13 @@ public static OpenTelemetrySdk newInternalOpentelemetry(
274269
new BigtableCloudMonitoringExporter.InternalTimeSeriesConverter(
275270
Suppliers.memoize(
276271
() -> BigtableExporterUtils.createInternalMonitoredResource(settings))))));
272+
273+
for (Map.Entry<InstrumentSelector, View> e :
274+
BuiltinMetricsConstants.getInternalViews().entrySet()) {
275+
System.out.println("register internal view " + e.getKey().getInstrumentName());
276+
meterProviderBuilder.registerView(e.getKey(), e.getValue());
277+
}
278+
277279
return OpenTelemetrySdk.builder().setMeterProvider(meterProviderBuilder.build()).build();
278280
}
279281
}

google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/BigtableTracerCallableTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ public void sendHeaders(Metadata headers) {
136136
settings.getStubSettings(),
137137
Tags.getTagger(),
138138
localStats.getStatsRecorder(),
139+
null,
139140
null))
140141
.build();
141142
attempts = settings.getStubSettings().readRowsSettings().getRetrySettings().getMaxAttempts();
@@ -161,6 +162,7 @@ public void sendHeaders(Metadata headers) {
161162
noHeaderSettings.getStubSettings(),
162163
Tags.getTagger(),
163164
localStats.getStatsRecorder(),
165+
null,
164166
null))
165167
.build();
166168
noHeaderStub =

google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/metrics/MetricsTracerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ public void setUp() throws Exception {
131131
settings.getStubSettings(),
132132
Tags.getTagger(),
133133
localStats.getStatsRecorder(),
134+
null,
134135
null))
135136
.build();
136137
stub = new EnhancedBigtableStub(settings.getStubSettings(), clientContext);

0 commit comments

Comments
 (0)