Class OpenTelemetryMetricsCollector
java.lang.Object
com.pyranid.otel.OpenTelemetryMetricsCollector
- All Implemented Interfaces:
com.pyranid.MetricsCollector
@ThreadSafe
public final class OpenTelemetryMetricsCollector
extends Object
implements com.pyranid.MetricsCollector
OpenTelemetry-backed
MetricsCollector for Pyranid database metrics.
Standard database-client metrics use OpenTelemetry semantic-convention names directly. Pyranid-specific lifecycle
events use pyranid.* metric and attribute names.
Notification metrics use bounded lifecycle attributes. Channel names, payloads, notification-session identifiers, and backend process identifiers are never exported.
This implementation is thread-safe and expects the supplied Meter to be backed by a non-blocking exporter.
Pyranid core catches collector exceptions, but exporters that block can still stall the calling JDBC thread.
- Since:
- 1.0.0
- Author:
- Mark Allen
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classBuilder used to construct instances ofOpenTelemetryMetricsCollector.Nested classes/interfaces inherited from interface com.pyranid.MetricsCollector
com.pyranid.MetricsCollector.NotificationSessionOutcome, com.pyranid.MetricsCollector.NotificationSnapshot, com.pyranid.MetricsCollector.PhysicalTransactionBeginFailurePhase, com.pyranid.MetricsCollector.Snapshot, com.pyranid.MetricsCollector.StreamTerminalOutcome, com.pyranid.MetricsCollector.TransactionClosureOutcome -
Method Summary
Modifier and TypeMethodDescriptionstatic @NonNull OpenTelemetryMetricsCollector.Builderbuilder()Acquires a builder forOpenTelemetryMetricsCollectorinstances, usingGlobalOpenTelemetryby default.voiddidAcquireStatementConnection(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull Duration acquisitionDuration) voiddidAcquireTransactionConnection(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration acquisitionDuration) voiddidBeginPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.TransactionIsolation isolation, @NonNull com.pyranid.DatabaseType databaseType) voiddidCloseNotificationSession(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull com.pyranid.MetricsCollector.NotificationSessionOutcome outcome, @NonNull Duration sessionDuration, @Nullable Throwable throwable) voiddidCloseStream(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.MetricsCollector.StreamTerminalOutcome outcome, @NonNull Long rowsConsumed, @NonNull Duration streamDuration, @Nullable Throwable throwable) voiddidCommitPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration physicalDuration) voiddidCreateSavepoint(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType) voiddidDeliverNotificationBatch(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull Long notificationCount) voiddidExecuteStatement(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.StatementLog<?> statementLog, @NonNull com.pyranid.StatementResult result) voiddidExitTransactionClosure(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.MetricsCollector.TransactionClosureOutcome outcome, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration logicalDuration, @Nullable Throwable thrown) voiddidFailToAcquireStatementConnection(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration acquisitionDuration, @NonNull Throwable throwable) voiddidFailToAcquireTransactionConnection(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration acquisitionDuration, @NonNull Throwable throwable) voiddidFailToBeginPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.TransactionIsolation isolation, @NonNull com.pyranid.MetricsCollector.PhysicalTransactionBeginFailurePhase phase, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Throwable throwable) voiddidFailToCommitPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration physicalDuration, @NonNull Throwable throwable) voiddidFailToExecuteStatement(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.StatementLog<?> statementLog, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Throwable throwable) voiddidFailToOpenNotificationSession(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull Duration openDuration, @NonNull Throwable throwable) voiddidFailToOpenStream(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration openDuration, @NonNull Throwable throwable) voiddidFailToReleaseStatementConnection(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull Duration heldDuration, @NonNull Throwable throwable) voiddidFailToReleaseTransactionConnection(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration heldDuration, @NonNull Throwable throwable) voiddidFailToRollbackPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration physicalDuration, @NonNull Throwable throwable) voiddidLoseNotificationConnection(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull Throwable throwable) voiddidOpenNotificationSession(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull Duration openDuration) voiddidReleaseSavepoint(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType) voiddidReleaseStatementConnection(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull Duration heldDuration) voiddidReleaseTransactionConnection(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration heldDuration) voiddidRollbackPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration physicalDuration) voiddidRollbackToSavepoint(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType) voiddidRunPostTransactionOperation(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.TransactionResult result, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration duration, @Nullable Throwable throwable) static @NonNull OpenTelemetryMetricsCollectorfromMeter(@NonNull io.opentelemetry.api.metrics.Meter meter) Creates an instance from a requiredMeterwithout additional customization.static @NonNull OpenTelemetryMetricsCollectorfromOpenTelemetry(@NonNull io.opentelemetry.api.OpenTelemetry openTelemetry) Creates an instance from a requiredOpenTelemetrywithout additional customization.@NonNull Optional<com.pyranid.MetricsCollector.Snapshot> snapshot()voidwillOpenNotificationSession(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId) static @NonNull OpenTelemetryMetricsCollector.BuilderwithMeter(@NonNull io.opentelemetry.api.metrics.Meter meter) Acquires a builder seeded with a requiredMeter.static @NonNull OpenTelemetryMetricsCollector.BuilderwithOpenTelemetry(@NonNull io.opentelemetry.api.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 com.pyranid.MetricsCollector
didEnterTransactionClosure, didOpenStream, notificationSnapshot, reset, willAcquireStatementConnection, willAcquireTransactionConnection, willExecuteStatement, willOpenStream
-
Method Details
-
builder
Acquires a builder forOpenTelemetryMetricsCollectorinstances, usingGlobalOpenTelemetryby default.- Returns:
- the builder
-
withMeter
public static @NonNull OpenTelemetryMetricsCollector.Builder withMeter(@NonNull io.opentelemetry.api.metrics.Meter meter) Acquires a builder seeded with a requiredMeter.- Parameters:
meter- the meter used to build instruments- Returns:
- the builder
-
withOpenTelemetry
public static @NonNull OpenTelemetryMetricsCollector.Builder withOpenTelemetry(@NonNull io.opentelemetry.api.OpenTelemetry openTelemetry) Acquires a builder seeded with a requiredOpenTelemetryinstance.- Parameters:
openTelemetry- the OpenTelemetry instance used to build a meter- Returns:
- the builder
-
fromMeter
public static @NonNull OpenTelemetryMetricsCollector fromMeter(@NonNull io.opentelemetry.api.metrics.Meter meter) 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 io.opentelemetry.api.OpenTelemetry openTelemetry) Creates an instance from a requiredOpenTelemetrywithout additional customization.- Parameters:
openTelemetry- the OpenTelemetry instance used to build a meter- Returns:
- an
OpenTelemetryMetricsCollectorinstance
-
didAcquireStatementConnection
public void didAcquireStatementConnection(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull Duration acquisitionDuration) - Specified by:
didAcquireStatementConnectionin interfacecom.pyranid.MetricsCollector
-
didFailToAcquireStatementConnection
public void didFailToAcquireStatementConnection(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration acquisitionDuration, @NonNull Throwable throwable) - Specified by:
didFailToAcquireStatementConnectionin interfacecom.pyranid.MetricsCollector
-
didAcquireTransactionConnection
public void didAcquireTransactionConnection(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration acquisitionDuration) - Specified by:
didAcquireTransactionConnectionin interfacecom.pyranid.MetricsCollector
-
didFailToAcquireTransactionConnection
public void didFailToAcquireTransactionConnection(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration acquisitionDuration, @NonNull Throwable throwable) - Specified by:
didFailToAcquireTransactionConnectionin interfacecom.pyranid.MetricsCollector
-
didReleaseStatementConnection
public void didReleaseStatementConnection(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull Duration heldDuration) - Specified by:
didReleaseStatementConnectionin interfacecom.pyranid.MetricsCollector
-
didFailToReleaseStatementConnection
public void didFailToReleaseStatementConnection(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull Duration heldDuration, @NonNull Throwable throwable) - Specified by:
didFailToReleaseStatementConnectionin interfacecom.pyranid.MetricsCollector
-
didReleaseTransactionConnection
public void didReleaseTransactionConnection(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration heldDuration) - Specified by:
didReleaseTransactionConnectionin interfacecom.pyranid.MetricsCollector
-
didFailToReleaseTransactionConnection
public void didFailToReleaseTransactionConnection(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration heldDuration, @NonNull Throwable throwable) - Specified by:
didFailToReleaseTransactionConnectionin interfacecom.pyranid.MetricsCollector
-
didExitTransactionClosure
public void didExitTransactionClosure(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.MetricsCollector.TransactionClosureOutcome outcome, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration logicalDuration, @Nullable Throwable thrown) - Specified by:
didExitTransactionClosurein interfacecom.pyranid.MetricsCollector
-
didBeginPhysicalTransaction
public void didBeginPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.TransactionIsolation isolation, @NonNull com.pyranid.DatabaseType databaseType) - Specified by:
didBeginPhysicalTransactionin interfacecom.pyranid.MetricsCollector
-
didFailToBeginPhysicalTransaction
public void didFailToBeginPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.TransactionIsolation isolation, @NonNull com.pyranid.MetricsCollector.PhysicalTransactionBeginFailurePhase phase, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Throwable throwable) - Specified by:
didFailToBeginPhysicalTransactionin interfacecom.pyranid.MetricsCollector
-
didCommitPhysicalTransaction
public void didCommitPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration physicalDuration) - Specified by:
didCommitPhysicalTransactionin interfacecom.pyranid.MetricsCollector
-
didFailToCommitPhysicalTransaction
public void didFailToCommitPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration physicalDuration, @NonNull Throwable throwable) - Specified by:
didFailToCommitPhysicalTransactionin interfacecom.pyranid.MetricsCollector
-
didRollbackPhysicalTransaction
public void didRollbackPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration physicalDuration) - Specified by:
didRollbackPhysicalTransactionin interfacecom.pyranid.MetricsCollector
-
didFailToRollbackPhysicalTransaction
public void didFailToRollbackPhysicalTransaction(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration physicalDuration, @NonNull Throwable throwable) - Specified by:
didFailToRollbackPhysicalTransactionin interfacecom.pyranid.MetricsCollector
-
didCreateSavepoint
public void didCreateSavepoint(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType) - Specified by:
didCreateSavepointin interfacecom.pyranid.MetricsCollector
-
didRollbackToSavepoint
public void didRollbackToSavepoint(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType) - Specified by:
didRollbackToSavepointin interfacecom.pyranid.MetricsCollector
-
didReleaseSavepoint
public void didReleaseSavepoint(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.DatabaseType databaseType) - Specified by:
didReleaseSavepointin interfacecom.pyranid.MetricsCollector
-
didExecuteStatement
public void didExecuteStatement(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.StatementLog<?> statementLog, @NonNull com.pyranid.StatementResult result) - Specified by:
didExecuteStatementin interfacecom.pyranid.MetricsCollector
-
didFailToExecuteStatement
public void didFailToExecuteStatement(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.StatementLog<?> statementLog, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Throwable throwable) - Specified by:
didFailToExecuteStatementin interfacecom.pyranid.MetricsCollector
-
didFailToOpenStream
public void didFailToOpenStream(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration openDuration, @NonNull Throwable throwable) - Specified by:
didFailToOpenStreamin interfacecom.pyranid.MetricsCollector
-
didCloseStream
public void didCloseStream(@NonNull com.pyranid.StatementContext<?> ctx, @NonNull com.pyranid.MetricsCollector.StreamTerminalOutcome outcome, @NonNull Long rowsConsumed, @NonNull Duration streamDuration, @Nullable Throwable throwable) - Specified by:
didCloseStreamin interfacecom.pyranid.MetricsCollector
-
willOpenNotificationSession
public void willOpenNotificationSession(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId) - Specified by:
willOpenNotificationSessionin interfacecom.pyranid.MetricsCollector
-
didOpenNotificationSession
public void didOpenNotificationSession(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull Duration openDuration) - Specified by:
didOpenNotificationSessionin interfacecom.pyranid.MetricsCollector
-
didFailToOpenNotificationSession
public void didFailToOpenNotificationSession(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull Duration openDuration, @NonNull Throwable throwable) - Specified by:
didFailToOpenNotificationSessionin interfacecom.pyranid.MetricsCollector
-
didDeliverNotificationBatch
public void didDeliverNotificationBatch(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull Long notificationCount) - Specified by:
didDeliverNotificationBatchin interfacecom.pyranid.MetricsCollector
-
didLoseNotificationConnection
public void didLoseNotificationConnection(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull Throwable throwable) - Specified by:
didLoseNotificationConnectionin interfacecom.pyranid.MetricsCollector
-
didCloseNotificationSession
public void didCloseNotificationSession(@NonNull com.pyranid.DatabaseType databaseType, @NonNull UUID notificationSessionId, @NonNull com.pyranid.MetricsCollector.NotificationSessionOutcome outcome, @NonNull Duration sessionDuration, @Nullable Throwable throwable) - Specified by:
didCloseNotificationSessionin interfacecom.pyranid.MetricsCollector
-
didRunPostTransactionOperation
public void didRunPostTransactionOperation(@NonNull com.pyranid.Transaction transaction, @NonNull com.pyranid.TransactionResult result, @NonNull com.pyranid.DatabaseType databaseType, @NonNull Duration duration, @Nullable Throwable throwable) - Specified by:
didRunPostTransactionOperationin interfacecom.pyranid.MetricsCollector
-
snapshot
-