Skip to content

Commit fa43a91

Browse files
committed
fix(bigtable): add handling for gauge metrics
1 parent c91272b commit fa43a91

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import com.google.monitoring.v3.TimeInterval;
5555
import com.google.monitoring.v3.TimeSeries;
5656
import com.google.monitoring.v3.TypedValue;
57+
import com.google.protobuf.Timestamp;
5758
import com.google.protobuf.util.Timestamps;
5859
import io.opentelemetry.api.common.AttributeKey;
5960
import io.opentelemetry.api.common.Attributes;
@@ -281,11 +282,19 @@ private static TimeSeries convertPointToBigtableTimeSeries(
281282
metricBuilder.putLabels(CLIENT_UID_KEY.getKey(), taskId);
282283
builder.setMetric(metricBuilder.build());
283284

285+
MetricKind kind = convertMetricKind(metricData);
286+
287+
Timestamp endTimestamp = Timestamps.fromNanos(pointData.getEpochNanos());
288+
Timestamp startTimestamp;
289+
290+
if (kind == GAUGE) {
291+
// GAUGE metrics must have start_time equal to end_time.
292+
startTimestamp = endTimestamp;
293+
} else {
294+
startTimestamp = Timestamps.fromNanos(pointData.getStartEpochNanos());
295+
}
284296
TimeInterval timeInterval =
285-
TimeInterval.newBuilder()
286-
.setStartTime(Timestamps.fromNanos(pointData.getStartEpochNanos()))
287-
.setEndTime(Timestamps.fromNanos(pointData.getEpochNanos()))
288-
.build();
297+
TimeInterval.newBuilder().setStartTime(startTimestamp).setEndTime(endTimestamp).build();
289298

290299
builder.addPoints(createPoint(metricData.getType(), pointData, timeInterval));
291300

0 commit comments

Comments
 (0)