Class OpenTelemetryMetricsCollector
- All Implemented Interfaces:
MetricsCollector
MetricsCollector for Soklet HTTP and SSE telemetry.
This implementation records counters/histograms via OpenTelemetry's metrics API and is designed to be lightweight, thread-safe, and non-blocking in request hot paths.
By default, standard HTTP metrics use OpenTelemetry Semantic Convention names. Soklet-specific concepts
(for example SSE queue/drop/broadcast details) are emitted with soklet.* names.
If inbound requests include W3C trace context, Soklet exposes it via Request.getTraceContext() to
custom metrics collectors and application code. This metrics-only implementation intentionally does not emit
trace IDs, parent IDs, or tracestate values as metric attributes because those values are high-cardinality
and belong in logs, spans, or exemplar-aware tracing integrations instead.
See https://soklet.com/docs/metrics-collection for Soklet's metrics/telemetry documentation.
- Author:
- Mark Allen
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classBuilder used to construct instances ofOpenTelemetryMetricsCollector.static enumNaming strategy for HTTP metric instrument names.Nested classes/interfaces inherited from interface MetricsCollector
MetricsCollector.Histogram, MetricsCollector.HistogramSnapshot, MetricsCollector.HttpServerRouteKey, MetricsCollector.HttpServerRouteStatusKey, MetricsCollector.McpEndpointRequestOutcomeKey, MetricsCollector.McpEndpointSessionTerminationKey, MetricsCollector.McpEndpointSseStreamTerminationKey, MetricsCollector.MetricsFormat, MetricsCollector.RequestReadFailureKey, MetricsCollector.RequestRejectionKey, MetricsCollector.RouteType, MetricsCollector.Snapshot, MetricsCollector.SnapshotTextOptions, MetricsCollector.SseCommentRouteDropKey, MetricsCollector.SseCommentRouteEnqueueOutcomeKey, MetricsCollector.SseCommentRouteKey, MetricsCollector.SseEventDropReason, MetricsCollector.SseEventEnqueueOutcome, MetricsCollector.SseEventRouteDropKey, MetricsCollector.SseEventRouteEnqueueOutcomeKey, MetricsCollector.SseEventRouteHandshakeFailureKey, MetricsCollector.SseEventRouteKey, MetricsCollector.SseStreamRouteTerminationKey -
Method Summary
Modifier and TypeMethodDescriptionbuilder()Acquires a builder forOpenTelemetryMetricsCollectorinstances, usingGlobalOpenTelemetryby default.voiddidAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress) voiddidAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) voiddidBroadcastSseComment(@NonNull ResourcePathDeclaration route, @NonNull SseComment.CommentType commentType, int attempted, int enqueued, int dropped) voiddidBroadcastSseEvent(@NonNull ResourcePathDeclaration route, int attempted, int enqueued, int dropped) voiddidDropSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull MetricsCollector.SseEventDropReason reason, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) voiddidDropSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull MetricsCollector.SseEventDropReason reason, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) voiddidEstablishSseConnection(@NonNull SseConnection sseConnection) voiddidFailToAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @NonNull ConnectionRejectionReason reason, @Nullable Throwable throwable) voiddidFailToAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget, @NonNull RequestRejectionReason reason, @Nullable Throwable throwable) voiddidFailToEstablishSseConnection(@NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull SseConnection.HandshakeFailureReason reason, @Nullable Throwable throwable) voiddidFailToReadRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget, @NonNull RequestReadFailureReason reason, @Nullable Throwable throwable) voiddidFailToWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration responseWriteDuration, @NonNull Throwable throwable) voiddidFailToWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull Duration writeDuration, @NonNull Throwable throwable, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) voiddidFailToWriteSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull Duration writeDuration, @NonNull Throwable throwable, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) voiddidFinishRequestHandling(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration duration, @NonNull List<@NonNull Throwable> throwables) voiddidStartRequestHandling(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod) voiddidTerminateSseConnection(@NonNull SseConnection sseConnection, @NonNull StreamTermination termination) voiddidWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration responseWriteDuration) voiddidWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull Duration writeDuration, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) voiddidWriteSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull Duration writeDuration, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) Creates an instance from a requiredMeterwithout additional customization.fromOpenTelemetry(@NonNull OpenTelemetry openTelemetry) Creates an instance from a requiredOpenTelemetrywithout additional customization.Acquires a builder seeded with a requiredMeter.withOpenTelemetry(@NonNull OpenTelemetry openTelemetry) Acquires a builder seeded with a requiredOpenTelemetryinstance.Methods inherited from class Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface MetricsCollector
didCreateMcpSession, didEstablishMcpSseStream, didFinishMcpRequestHandling, didReadRequest, didStartMcpRequestHandling, didTerminateMcpSession, didTerminateMcpSseStream, reset, snapshot, snapshotText, willAcceptConnection, willAcceptRequest, willEstablishSseConnection, willReadRequest, willTerminateSseConnection, willWriteResponse, willWriteSseComment, willWriteSseEvent
-
Method Details
-
builder
Acquires a builder forOpenTelemetryMetricsCollectorinstances, usingGlobalOpenTelemetryby default.- Returns:
- the builder
-
withMeter
-
withOpenTelemetry
public static @NonNull OpenTelemetryMetricsCollector.Builder withOpenTelemetry(@NonNull OpenTelemetry openTelemetry) Acquires a builder seeded with a requiredOpenTelemetryinstance.- Parameters:
openTelemetry- the OpenTelemetry instance used to build a meter- Returns:
- the builder
-
fromMeter
Creates an instance from a requiredMeterwithout additional customization.- Parameters:
meter- the meter used to build instruments- Returns:
- an
OpenTelemetryMetricsCollectorinstance
-
fromOpenTelemetry
public static @NonNull OpenTelemetryMetricsCollector fromOpenTelemetry(@NonNull OpenTelemetry openTelemetry) Creates an instance from a requiredOpenTelemetrywithout additional customization.- Parameters:
openTelemetry- the OpenTelemetry instance used to build a meter- Returns:
- an
OpenTelemetryMetricsCollectorinstance
-
didAcceptConnection
public void didAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress) - Specified by:
didAcceptConnectionin interfaceMetricsCollector
-
didFailToAcceptConnection
public void didFailToAcceptConnection(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @NonNull ConnectionRejectionReason reason, @Nullable Throwable throwable) - Specified by:
didFailToAcceptConnectionin interfaceMetricsCollector
-
didAcceptRequest
public void didAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget) - Specified by:
didAcceptRequestin interfaceMetricsCollector
-
didFailToAcceptRequest
public void didFailToAcceptRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget, @NonNull RequestRejectionReason reason, @Nullable Throwable throwable) - Specified by:
didFailToAcceptRequestin interfaceMetricsCollector
-
didFailToReadRequest
public void didFailToReadRequest(@NonNull ServerType serverType, @Nullable InetSocketAddress remoteAddress, @Nullable String requestTarget, @NonNull RequestReadFailureReason reason, @Nullable Throwable throwable) - Specified by:
didFailToReadRequestin interfaceMetricsCollector
-
didStartRequestHandling
public void didStartRequestHandling(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod) - Specified by:
didStartRequestHandlingin interfaceMetricsCollector
-
didFinishRequestHandling
public void didFinishRequestHandling(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration duration, @NonNull List<@NonNull Throwable> throwables) - Specified by:
didFinishRequestHandlingin interfaceMetricsCollector
-
didWriteResponse
public void didWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration responseWriteDuration) - Specified by:
didWriteResponsein interfaceMetricsCollector
-
didFailToWriteResponse
public void didFailToWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration responseWriteDuration, @NonNull Throwable throwable) - Specified by:
didFailToWriteResponsein interfaceMetricsCollector
-
didEstablishSseConnection
- Specified by:
didEstablishSseConnectionin interfaceMetricsCollector
-
didFailToEstablishSseConnection
public void didFailToEstablishSseConnection(@NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull SseConnection.HandshakeFailureReason reason, @Nullable Throwable throwable) - Specified by:
didFailToEstablishSseConnectionin interfaceMetricsCollector
-
didTerminateSseConnection
public void didTerminateSseConnection(@NonNull SseConnection sseConnection, @NonNull StreamTermination termination) - Specified by:
didTerminateSseConnectionin interfaceMetricsCollector
-
didWriteSseEvent
public void didWriteSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull Duration writeDuration, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didWriteSseEventin interfaceMetricsCollector
-
didFailToWriteSseEvent
public void didFailToWriteSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull Duration writeDuration, @NonNull Throwable throwable, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didFailToWriteSseEventin interfaceMetricsCollector
-
didDropSseEvent
public void didDropSseEvent(@NonNull SseConnection sseConnection, @NonNull SseEvent sseEvent, @NonNull MetricsCollector.SseEventDropReason reason, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didDropSseEventin interfaceMetricsCollector
-
didWriteSseComment
public void didWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull Duration writeDuration, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didWriteSseCommentin interfaceMetricsCollector
-
didFailToWriteSseComment
public void didFailToWriteSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull Duration writeDuration, @NonNull Throwable throwable, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didFailToWriteSseCommentin interfaceMetricsCollector
-
didDropSseComment
public void didDropSseComment(@NonNull SseConnection sseConnection, @NonNull SseComment sseComment, @NonNull MetricsCollector.SseEventDropReason reason, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didDropSseCommentin interfaceMetricsCollector
-
didBroadcastSseEvent
public void didBroadcastSseEvent(@NonNull ResourcePathDeclaration route, int attempted, int enqueued, int dropped) - Specified by:
didBroadcastSseEventin interfaceMetricsCollector
-
didBroadcastSseComment
public void didBroadcastSseComment(@NonNull ResourcePathDeclaration route, @NonNull SseComment.CommentType commentType, int attempted, int enqueued, int dropped) - Specified by:
didBroadcastSseCommentin interfaceMetricsCollector
-