From 177c36b0d61c2b0b4d2e1f10e1063219c93f98b4 Mon Sep 17 00:00:00 2001 From: Ravi Khadiwala Date: Mon, 9 Jun 2025 11:36:55 -0500 Subject: [PATCH] Fix backup metric names and use remote aggregation --- .../textsecuregcm/backup/BackupsDb.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/backup/BackupsDb.java b/service/src/main/java/org/whispersystems/textsecuregcm/backup/BackupsDb.java index 6e83f0063..c2dba70cd 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/backup/BackupsDb.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/backup/BackupsDb.java @@ -22,6 +22,7 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Predicate; +import io.micrometer.core.instrument.DistributionSummary; import io.micrometer.core.instrument.Metrics; import io.micrometer.core.instrument.Tag; import io.micrometer.core.instrument.Tags; @@ -31,6 +32,7 @@ import org.signal.libsignal.zkgroup.backups.BackupLevel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.whispersystems.textsecuregcm.auth.AuthenticatedBackupUser; +import org.whispersystems.textsecuregcm.metrics.MetricsUtil; import org.whispersystems.textsecuregcm.metrics.UserAgentTagUtil; import org.whispersystems.textsecuregcm.util.AttributeValues; import org.whispersystems.textsecuregcm.util.ExceptionUtils; @@ -85,9 +87,9 @@ public class BackupsDb { private final SecureRandom secureRandom; - private static final String NUM_OBJECTS_SUMMARY_NAME = "numObjects"; - private static final String BYTES_USED_SUMMARY_NAME = "bytesUsed"; - private static final String BACKUPS_COUNTER_NAME = "backups"; + private static final String NUM_OBJECTS_SUMMARY_NAME = MetricsUtil.name(BackupsDb.class, "numObjects"); + private static final String BYTES_USED_SUMMARY_NAME = MetricsUtil.name(BackupsDb.class, "bytesUsed"); + private static final String BACKUPS_COUNTER_NAME = MetricsUtil.name(BackupsDb.class, "backups"); // The backups table @@ -285,8 +287,17 @@ public class BackupsDb { final Tags tags = Tags.of( UserAgentTagUtil.getPlatformTag(backupUser.userAgent()), Tag.of("tier", backupUser.backupLevel().name())); - Metrics.summary(NUM_OBJECTS_SUMMARY_NAME, tags).record(mediaCount); - Metrics.summary(BYTES_USED_SUMMARY_NAME, tags).record(bytesUsed); + + DistributionSummary.builder(NUM_OBJECTS_SUMMARY_NAME) + .tags(tags) + .publishPercentileHistogram() + .register(Metrics.globalRegistry) + .record(mediaCount); + DistributionSummary.builder(BYTES_USED_SUMMARY_NAME) + .tags(tags) + .publishPercentileHistogram() + .register(Metrics.globalRegistry) + .record(mediaCount); // Report that the backup is out of quota if it cannot store a max size media object final boolean quotaExhausted = bytesUsed >=