ecluse:ecluse-runtime
Safe HaskellNone
LanguageGHC2021

Ecluse.Runtime.Telemetry.Tracing

Description

The request-lifecycle tracing layer over the OpenTelemetry substrate (Ecluse.Runtime.Telemetry): the WAI server span, the data plane's http-client child spans, and the hand-added domain spans. Every entry point takes the Telemetry handle and is inert when telemetry is off, so the middleware is id, manager settings come back untouched, and a domain-span bracket runs its body against no span. The data-plane http-client instrumentation records no request or response header and the WAI instrumentation never records Authorization, so a forwarded client token never reaches a span, while the high-cardinality package, version, and denial message deliberately do.

Synopsis

WAI server span

telemetryWaiMiddleware :: Telemetry -> IO Middleware Source #

Build the WAI server-span middleware, or id when telemetry is disabled. It belongs outermost in the stack, so the span covers the whole request (see Ecluse.Runtime.Server).

http-client data-plane instrumentation

instrumentDataPlaneManagerSettings :: Telemetry -> ManagerSettings -> IO ManagerSettings Source #

Instrument a data-plane ManagerSettings so upstream fetches open a client span and carry W3C trace-context headers. Return the settings untouched when telemetry is disabled.

Domain spans

The core tracing ports

tracingPortOf :: Telemetry -> TracingPort Source #

Project this module's serve-path spans onto the core TracingPort the pipeline brackets with.

workerTracingPortOf :: Telemetry -> WorkerTracingPort Source #

Project withMirrorJobSpan onto the core WorkerTracingPort that Ecluse.Core.Worker uses.

advisorySyncTracingPortOf :: Telemetry -> AdvisorySyncTracingPort Source #

Project withAdvisorySyncSpan onto the core AdvisorySyncTracingPort that Ecluse.Runtime.Cve.Sync brackets through. Inert when telemetry is disabled.