Count reported messages by destination country code in addition to source country code

This commit is contained in:
Jon Chambers 2022-03-18 16:43:26 -04:00 committed by Jon Chambers
parent f75e616397
commit bab6b36e4d
2 changed files with 16 additions and 3 deletions

View File

@ -474,7 +474,7 @@ public class WhisperServerService extends Application<WhisperServerConfiguration
SubscriptionManager subscriptionManager = new SubscriptionManager(
config.getDynamoDbTables().getSubscriptions().getTableName(), dynamoDbAsyncClient);
ReportedMessageMetricsListener reportedMessageMetricsListener = new ReportedMessageMetricsListener();
ReportedMessageMetricsListener reportedMessageMetricsListener = new ReportedMessageMetricsListener(accountsManager);
reportMessageManager.addListener(reportedMessageMetricsListener);
AccountAuthenticator accountAuthenticator = new AccountAuthenticator(accountsManager);

View File

@ -9,17 +9,30 @@ import static com.codahale.metrics.MetricRegistry.name;
import io.micrometer.core.instrument.Metrics;
import java.util.UUID;
import org.whispersystems.textsecuregcm.storage.AccountsManager;
import org.whispersystems.textsecuregcm.storage.ReportMessageManager;
import org.whispersystems.textsecuregcm.storage.ReportedMessageListener;
import org.whispersystems.textsecuregcm.util.Util;
public class ReportedMessageMetricsListener implements ReportedMessageListener {
private final AccountsManager accountsManager;
// ReportMessageManager name used deliberately to preserve continuity of metrics
private static final String REPORT_COUNTER_NAME = name(ReportMessageManager.class, "reported");
private static final String REPORTED_COUNTER_NAME = name(ReportMessageManager.class, "reported");
private static final String REPORTER_COUNTER_NAME = name(ReportMessageManager.class, "reporter");
private static final String COUNTRY_CODE_TAG_NAME = "countryCode";
public ReportedMessageMetricsListener(final AccountsManager accountsManager) {
this.accountsManager = accountsManager;
}
@Override
public void handleMessageReported(final String sourceNumber, final UUID messageGuid, final UUID reporterUuid) {
Metrics.counter(REPORT_COUNTER_NAME, "countryCode", Util.getCountryCode(sourceNumber)).increment();
Metrics.counter(REPORTED_COUNTER_NAME, COUNTRY_CODE_TAG_NAME, Util.getCountryCode(sourceNumber)).increment();
accountsManager.getByAccountIdentifier(reporterUuid).ifPresent(reporter ->
Metrics.counter(REPORTER_COUNTER_NAME, COUNTRY_CODE_TAG_NAME, Util.getCountryCode(reporter.getNumber())).increment());
}
}