You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is naturally event-shaped: it happens once at a specific moment, the payload is a one-shot record (outcome + final dropped count), and a metric can't really answer "did my pipeline drain cleanly at container shutdown?". A standardized Event (general semantics) lets every SDK emit the same well-known signal.
Starting with spans avoids the log self-feedback concern (a log event reporting log-pipeline drops would route through the failing pipeline). This is intended as the first of a series of self-observability Events; others (cardinality limit reached, runtime data-loss markers, lifecycle events) will be proposed once this lands.
Proposal
Event name: otel.sdk.component.shutdown
The component is identified via the existing otel.component.* attributes, not in the event name.
Attribute
Status
Notes
otel.component.type
existing
initial scope: batching_span_processor
otel.component.name
existing
e.g. batching_span_processor/0
outcome
new
success / failed / timed_out
dropped count
new
total items dropped over the component's lifetime
Severity: WARN if outcome != success or dropped > 0, INFO otherwise.
Body: not used (per Event guidelines).
Open questions
One event name with variable severity (above), or two event names like .NET (shutdown + shutdown_with_loss)?
Outcome: reuse otel.status_code (OK/ERROR) or new attribute that distinguishes timed_out?
There is no standardized Event today for "an SDK component (e.g. BatchSpanProcessor) has shut down." Each SDK does its own thing:
tracingifdropped > 0. Silent otherwise.EventSource— Warning ifdropped > 0, Informational otherwise (two distinct event names).This is naturally event-shaped: it happens once at a specific moment, the payload is a one-shot record (outcome + final dropped count), and a metric can't really answer "did my pipeline drain cleanly at container shutdown?". A standardized Event (general semantics) lets every SDK emit the same well-known signal.
Starting with spans avoids the log self-feedback concern (a log event reporting log-pipeline drops would route through the failing pipeline). This is intended as the first of a series of self-observability Events; others (cardinality limit reached, runtime data-loss markers, lifecycle events) will be proposed once this lands.
Proposal
Event name:
otel.sdk.component.shutdownThe component is identified via the existing
otel.component.*attributes, not in the event name.otel.component.typebatching_span_processorotel.component.namebatching_span_processor/0success/failed/timed_outSeverity: WARN if
outcome != successordropped > 0, INFO otherwise.Body: not used (per Event guidelines).
Open questions
shutdown+shutdown_with_loss)?otel.status_code(OK/ERROR) or new attribute that distinguishestimed_out?LoggerProviderif it's also shutting down. Spec PR Reference semantic conventions for SDK self-observability metrics opentelemetry-specification#5087 is the natural home for this guidance.exported_countand/orshutdown_durationas attributes?Related