Skip to content

Commit 6762b9e

Browse files
committed
fix
1 parent ea91e2d commit 6762b9e

File tree

3 files changed

+65
-21
lines changed

3 files changed

+65
-21
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsConstant.java

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -168,22 +168,7 @@ static Map<InstrumentSelector, View> getAllViews() {
168168
Aggregation.sum(),
169169
InstrumentType.COUNTER,
170170
"1");
171-
defineView(
172-
views,
173-
BuiltInMetricsConstant.SPANNER_METER_NAME,
174-
BuiltInMetricsConstant.GFE_LATENCIES_NAME,
175-
BuiltInMetricsConstant.GFE_LATENCIES_NAME,
176-
BuiltInMetricsConstant.AGGREGATION_WITH_MILLIS_HISTOGRAM,
177-
InstrumentType.HISTOGRAM,
178-
"ms");
179-
defineView(
180-
views,
181-
BuiltInMetricsConstant.SPANNER_METER_NAME,
182-
BuiltInMetricsConstant.AFE_LATENCIES_NAME,
183-
BuiltInMetricsConstant.AFE_LATENCIES_NAME,
184-
BuiltInMetricsConstant.AGGREGATION_WITH_MILLIS_HISTOGRAM,
185-
InstrumentType.HISTOGRAM,
186-
"ms");
171+
defineSpannerView(views);
187172
defineGRPCView(views);
188173
return views.build();
189174
}
@@ -216,6 +201,19 @@ private static void defineView(
216201
viewMap.put(selector, view);
217202
}
218203

204+
private static void defineSpannerView(ImmutableMap.Builder<InstrumentSelector, View> viewMap) {
205+
InstrumentSelector selector =
206+
InstrumentSelector.builder()
207+
.setMeterName(BuiltInMetricsConstant.SPANNER_METER_NAME)
208+
.build();
209+
Set<String> attributesFilter =
210+
BuiltInMetricsConstant.COMMON_ATTRIBUTES.stream()
211+
.map(AttributeKey::getKey)
212+
.collect(Collectors.toSet());
213+
View view = View.builder().setAttributeFilter(attributesFilter).build();
214+
viewMap.put(selector, view);
215+
}
216+
219217
private static void defineGRPCView(ImmutableMap.Builder<InstrumentSelector, View> viewMap) {
220218
for (String metric : BuiltInMetricsConstant.GRPC_METRICS_TO_ENABLE) {
221219
InstrumentSelector selector =

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerCloudMonitoringExporterUtils.java

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ static List<TimeSeries> convertToSpannerTimeSeries(
103103
metricData.getData().getPoints().stream()
104104
.map(
105105
pointData ->
106-
convertPointToSpannerTimeSeries(metricData, pointData, monitoredResourceBuilder))
106+
convertPointToSpannerTimeSeries(
107+
metricData, pointData, monitoredResourceBuilder, projectId))
107108
.forEach(allTimeSeries::add);
108109
}
109110
return allTimeSeries;
@@ -112,7 +113,8 @@ static List<TimeSeries> convertToSpannerTimeSeries(
112113
private static TimeSeries convertPointToSpannerTimeSeries(
113114
MetricData metricData,
114115
PointData pointData,
115-
MonitoredResource.Builder monitoredResourceBuilder) {
116+
MonitoredResource.Builder monitoredResourceBuilder,
117+
String projectId) {
116118
TimeSeries.Builder builder =
117119
TimeSeries.newBuilder()
118120
.setMetricKind(convertMetricKind(metricData))
@@ -208,7 +210,8 @@ private static Point createPoint(
208210
return builder
209211
.setValue(
210212
TypedValue.newBuilder()
211-
.setDistributionValue(convertHistogramData((HistogramPointData) pointData))
213+
.setDistributionValue(
214+
convertHistogramData((HistogramPointData) pointData, projectId))
212215
.build())
213216
.build();
214217
case DOUBLE_GAUGE:
@@ -238,6 +241,49 @@ private static Distribution convertHistogramData(HistogramPointData pointData, S
238241
BucketOptions.newBuilder()
239242
.setExplicitBuckets(Explicit.newBuilder().addAllBounds(pointData.getBoundaries())))
240243
.addAllBucketCounts(pointData.getCounts())
244+
.addAllExemplars(
245+
pointData.getExemplars().stream()
246+
.map(e -> mapExemplar(e, projectId))
247+
.collect(Collectors.toList()))
248+
.build();
249+
}
250+
251+
private static Distribution.Exemplar mapExemplar(ExemplarData exemplar, String projectId) {
252+
double value = 0;
253+
if (exemplar instanceof DoubleExemplarData) {
254+
value = ((DoubleExemplarData) exemplar).getValue();
255+
} else if (exemplar instanceof LongExemplarData) {
256+
value = ((LongExemplarData) exemplar).getValue();
257+
}
258+
259+
Distribution.Exemplar.Builder exemplarBuilder =
260+
Distribution.Exemplar.newBuilder()
261+
.setValue(value)
262+
.setTimestamp(mapTimestamp(exemplar.getEpochNanos()));
263+
if (exemplar.getSpanContext().isValid()) {
264+
exemplarBuilder.addAttachments(
265+
Any.pack(
266+
SpanContext.newBuilder()
267+
.setSpanName(
268+
makeSpanName(
269+
projectId,
270+
exemplar.getSpanContext().getTraceId(),
271+
exemplar.getSpanContext().getSpanId()))
272+
.build()));
273+
}
274+
if (!exemplar.getFilteredAttributes().isEmpty()) {
275+
exemplarBuilder.addAttachments(
276+
Any.pack(mapFilteredAttributes(exemplar.getFilteredAttributes())));
277+
}
278+
return exemplarBuilder.build();
279+
}
280+
281+
static final long NANO_PER_SECOND = (long) 1e9;
282+
283+
private static Timestamp mapTimestamp(long epochNanos) {
284+
return Timestamp.newBuilder()
285+
.setSeconds(epochNanos / NANO_PER_SECOND)
286+
.setNanos((int) (epochNanos % NANO_PER_SECOND))
241287
.build();
242288
}
243289

google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,8 @@ private Map<String, String> getBuiltInMetricAttributes(String key, DatabaseName
284284
() -> {
285285
Map<String, String> attributes = new HashMap<>();
286286
attributes.put(BuiltInMetricsConstant.DATABASE_KEY.getKey(), databaseName.getDatabase());
287-
// attributes.put(
288-
// BuiltInMetricsConstant.INSTANCE_ID_KEY.getKey(), databaseName.getInstance());
287+
attributes.put(
288+
BuiltInMetricsConstant.INSTANCE_ID_KEY.getKey(), databaseName.getInstance());
289289
attributes.put(
290290
BuiltInMetricsConstant.DIRECT_PATH_ENABLED_KEY.getKey(),
291291
String.valueOf(GapicSpannerRpc.DIRECTPATH_CHANNEL_CREATED));

0 commit comments

Comments
 (0)