Add authenticated tag to MetricsRequestEventListener

This commit is contained in:
Chris Eager
2025-09-29 17:37:24 -05:00
committed by GitHub
parent 7f301cbf95
commit 4ab58e950b
2 changed files with 90 additions and 8 deletions

View File

@@ -12,6 +12,10 @@ import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Metrics;
import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.Tags;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javax.annotation.Nullable;
import org.glassfish.jersey.server.ContainerResponse;
import org.glassfish.jersey.server.monitoring.RequestEvent;
import org.glassfish.jersey.server.monitoring.RequestEventListener;
@@ -21,11 +25,6 @@ import org.whispersystems.textsecuregcm.storage.ClientReleaseManager;
import org.whispersystems.textsecuregcm.util.logging.UriInfoUtil;
import org.whispersystems.websocket.WebSocketResourceProvider;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* Gathers and reports request-level metrics for WebSocket traffic only.
* For HTTP traffic, use {@link MetricsHttpChannelListener}.
@@ -53,6 +52,9 @@ public class MetricsRequestEventListener implements RequestEventListener {
@VisibleForTesting
static final String TRAFFIC_SOURCE_TAG = "trafficSource";
@VisibleForTesting
static final String AUTHENTICATED_TAG = "authenticated";
private final TrafficSource trafficSource;
private final MeterRegistry meterRegistry;
@@ -86,6 +88,12 @@ public class MetricsRequestEventListener implements RequestEventListener {
.map(ContainerResponse::getStatus)
.orElse(499))));
tags.add(Tag.of(TRAFFIC_SOURCE_TAG, trafficSource.name().toLowerCase()));
tags.add(Tag.of(AUTHENTICATED_TAG, Optional.ofNullable(event.getContainerRequest().getProperty(WebSocketResourceProvider.REUSABLE_AUTH_PROPERTY))
.filter(Optional.class::isInstance)
.map(Optional.class::cast)
.map(Optional::isPresent)
.orElse(false)
.toString()));
@Nullable final String userAgent;
{