Galaxy driver spans and galaxy.events.* counters are never exported (missing from the OTel allowlists) #892

Closed
opened 2026-11-12 20:31:01 -05:00 by dohertj2 · 1 comment
Owner

What: AddOtOpcUaObservability hands AddZbTelemetry strict allowlists (ZbTelemetryOptions.Meters / .ActivitySources, no wildcard) that named only ZB.MOM.WW.OtOpcUa (+ the LocalDb meter). The in-process Galaxy driver opens its spans (galaxy.subscribe_bulk, galaxy.unsubscribe_bulk, galaxy.stream_events, galaxy.write, galaxy.get_hierarchy) on ActivitySource ZB.MOM.WW.OtOpcUa.Driver.Galaxy, and its event pump records galaxy.events.* counters (received / dispatched / dropped / replay_gaps / stream_attached / undecodable / early_*) on a Meter of the same name. Neither is registered, so all of them are silently dropped from /metrics and from OTLP.

Found by: scadaproj#13 (first end-to-end OTLP exercise against a collector).

Fix: a public GalaxyDriverTelemetryNames in the Galaxy driver; ObservabilityExtensions.ObservedMeters / ObservedActivitySources name it; listener-side tests (span sampled / instrument enabled) with an unregistered-name negative control, mutation-checked.

**What:** `AddOtOpcUaObservability` hands `AddZbTelemetry` strict allowlists (`ZbTelemetryOptions.Meters` / `.ActivitySources`, no wildcard) that named only `ZB.MOM.WW.OtOpcUa` (+ the LocalDb meter). The in-process Galaxy driver opens its spans (`galaxy.subscribe_bulk`, `galaxy.unsubscribe_bulk`, `galaxy.stream_events`, `galaxy.write`, `galaxy.get_hierarchy`) on ActivitySource `ZB.MOM.WW.OtOpcUa.Driver.Galaxy`, and its event pump records `galaxy.events.*` counters (received / dispatched / dropped / replay_gaps / stream_attached / undecodable / early_*) on a Meter of the same name. Neither is registered, so all of them are silently dropped from `/metrics` and from OTLP. **Found by:** scadaproj#13 (first end-to-end OTLP exercise against a collector). **Fix:** a public `GalaxyDriverTelemetryNames` in the Galaxy driver; `ObservabilityExtensions.ObservedMeters` / `ObservedActivitySources` name it; listener-side tests (span sampled / instrument enabled) with an unregistered-name negative control, mutation-checked.
dohertj2 added the type:bugpriority:p2 labels 2026-11-12 20:31:01 -05:00
Author
Owner

Fixed on master db86b996 (fix 0b90379f): GalaxyDriverTelemetryNames + ObservabilityExtensions.ObservedMeters/ObservedActivitySources; ObservabilityAllowlistTests (listener-side, negative control, mutation-checked: dropping the Galaxy entries fails 3/8). Galaxy driver tests 584/584. Live OTLP proof of the host's other spans/metrics against the scadaproj#13 collector is in scadaproj components/observability/2026-11-12-otlp-end-to-end-evidence.md; a live galaxy.* span was not driven (needs a Galaxy driver deployment). Not deployed.

Fixed on master `db86b996` (fix `0b90379f`): `GalaxyDriverTelemetryNames` + `ObservabilityExtensions.ObservedMeters/ObservedActivitySources`; `ObservabilityAllowlistTests` (listener-side, negative control, mutation-checked: dropping the Galaxy entries fails 3/8). Galaxy driver tests 584/584. Live OTLP proof of the host's other spans/metrics against the scadaproj#13 collector is in scadaproj `components/observability/2026-11-12-otlp-end-to-end-evidence.md`; a live `galaxy.*` span was not driven (needs a Galaxy driver deployment). Not deployed.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#892