Class OpenTelemetryMetricsCollector
java.lang.Object
com.soklet.otel.OpenTelemetryMetricsCollector
- All Implemented Interfaces:
MetricsCollector
@ThreadSafe
public final class OpenTelemetryMetricsCollector
extends Object
implements MetricsCollector
OpenTelemetry-backed
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.
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.MetricsFormat, MetricsCollector.RequestReadFailureKey, MetricsCollector.RequestRejectionKey, MetricsCollector.RouteType, MetricsCollector.ServerRouteKey, MetricsCollector.ServerRouteStatusKey, MetricsCollector.ServerSentEventCommentRouteDropKey, MetricsCollector.ServerSentEventCommentRouteEnqueueOutcomeKey, MetricsCollector.ServerSentEventCommentRouteKey, MetricsCollector.ServerSentEventDropReason, MetricsCollector.ServerSentEventEnqueueOutcome, MetricsCollector.ServerSentEventRouteDropKey, MetricsCollector.ServerSentEventRouteEnqueueOutcomeKey, MetricsCollector.ServerSentEventRouteHandshakeFailureKey, MetricsCollector.ServerSentEventRouteKey, MetricsCollector.ServerSentEventRouteTerminationKey, MetricsCollector.Snapshot, MetricsCollector.SnapshotTextOptions -
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) voiddidBroadcastServerSentEvent(@NonNull ResourcePathDeclaration route, int attempted, int enqueued, int dropped) voiddidBroadcastServerSentEventComment(@NonNull ResourcePathDeclaration route, @NonNull ServerSentEventComment.CommentType commentType, int attempted, int enqueued, int dropped) voiddidDropServerSentEvent(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEvent serverSentEvent, @NonNull MetricsCollector.ServerSentEventDropReason reason, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) voiddidDropServerSentEventComment(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEventComment serverSentEventComment, @NonNull MetricsCollector.ServerSentEventDropReason reason, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) voiddidEstablishServerSentEventConnection(@NonNull ServerSentEventConnection serverSentEventConnection) 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) voiddidFailToEstablishServerSentEventConnection(@NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull ServerSentEventConnection.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) voiddidFailToWriteServerSentEvent(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEvent serverSentEvent, @NonNull Duration writeDuration, @NonNull Throwable throwable, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) voiddidFailToWriteServerSentEventComment(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEventComment serverSentEventComment, @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) voiddidTerminateServerSentEventConnection(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull Duration connectionDuration, @NonNull ServerSentEventConnection.TerminationReason terminationReason, @Nullable Throwable throwable) voiddidWriteResponse(@NonNull ServerType serverType, @NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull MarshaledResponse marshaledResponse, @NonNull Duration responseWriteDuration) voiddidWriteServerSentEvent(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEvent serverSentEvent, @NonNull Duration writeDuration, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) voiddidWriteServerSentEventComment(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEventComment serverSentEventComment, @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
didReadRequest, reset, snapshot, snapshotText, willAcceptConnection, willAcceptRequest, willEstablishServerSentEventConnection, willReadRequest, willTerminateServerSentEventConnection, willWriteResponse, willWriteServerSentEvent, willWriteServerSentEventComment
-
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
-
didEstablishServerSentEventConnection
public void didEstablishServerSentEventConnection(@NonNull ServerSentEventConnection serverSentEventConnection) - Specified by:
didEstablishServerSentEventConnectionin interfaceMetricsCollector
-
didFailToEstablishServerSentEventConnection
public void didFailToEstablishServerSentEventConnection(@NonNull Request request, @Nullable ResourceMethod resourceMethod, @NonNull ServerSentEventConnection.HandshakeFailureReason reason, @Nullable Throwable throwable) - Specified by:
didFailToEstablishServerSentEventConnectionin interfaceMetricsCollector
-
didTerminateServerSentEventConnection
public void didTerminateServerSentEventConnection(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull Duration connectionDuration, @NonNull ServerSentEventConnection.TerminationReason terminationReason, @Nullable Throwable throwable) - Specified by:
didTerminateServerSentEventConnectionin interfaceMetricsCollector
-
didWriteServerSentEvent
public void didWriteServerSentEvent(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEvent serverSentEvent, @NonNull Duration writeDuration, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didWriteServerSentEventin interfaceMetricsCollector
-
didFailToWriteServerSentEvent
public void didFailToWriteServerSentEvent(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEvent serverSentEvent, @NonNull Duration writeDuration, @NonNull Throwable throwable, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didFailToWriteServerSentEventin interfaceMetricsCollector
-
didDropServerSentEvent
public void didDropServerSentEvent(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEvent serverSentEvent, @NonNull MetricsCollector.ServerSentEventDropReason reason, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didDropServerSentEventin interfaceMetricsCollector
-
didWriteServerSentEventComment
public void didWriteServerSentEventComment(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEventComment serverSentEventComment, @NonNull Duration writeDuration, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didWriteServerSentEventCommentin interfaceMetricsCollector
-
didFailToWriteServerSentEventComment
public void didFailToWriteServerSentEventComment(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEventComment serverSentEventComment, @NonNull Duration writeDuration, @NonNull Throwable throwable, @Nullable Duration deliveryLag, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didFailToWriteServerSentEventCommentin interfaceMetricsCollector
-
didDropServerSentEventComment
public void didDropServerSentEventComment(@NonNull ServerSentEventConnection serverSentEventConnection, @NonNull ServerSentEventComment serverSentEventComment, @NonNull MetricsCollector.ServerSentEventDropReason reason, @Nullable Integer payloadBytes, @Nullable Integer queueDepth) - Specified by:
didDropServerSentEventCommentin interfaceMetricsCollector
-
didBroadcastServerSentEvent
public void didBroadcastServerSentEvent(@NonNull ResourcePathDeclaration route, int attempted, int enqueued, int dropped) - Specified by:
didBroadcastServerSentEventin interfaceMetricsCollector
-
didBroadcastServerSentEventComment
public void didBroadcastServerSentEventComment(@NonNull ResourcePathDeclaration route, @NonNull ServerSentEventComment.CommentType commentType, int attempted, int enqueued, int dropped) - Specified by:
didBroadcastServerSentEventCommentin interfaceMetricsCollector
-