feat(obs): distributed traces across the .NET services (S-16b, closes #123) #126

Merged
not merged 4 commits from feat/123-distributed-traces into main 2026-07-23 14:38:27 +00:00
4 Commits
Author SHA1 Message Date
not 4ab2ef4285 fix(infra): cap observability containers' memory to protect the e2e browser (refs #123)
CI / frontend (pull_request) Successful in 2m55s
CI / mutation (pull_request) Successful in 6m17s
CI / verify-stack (pull_request) Successful in 5m31s
CI / lint (pull_request) Successful in 1m28s
CI / build (pull_request) Successful in 1m19s
CI / unit (pull_request) Successful in 1m21s
verify-e2e (registration.spec) timed out on the shared CI runner — locator waits
failing at different steps across attempt/retry, the signature of memory
contention, not a logic bug (this e2e has an OOM history, d5e5fa2). The three
observability containers had no memory bound; cap them (tempo/prometheus 400m,
grafana 512m — generous vs idle) so they can't starve the app stack + the
Playwright chromium. Frees back more headroom than the OTel SDK added.

refs #123
2026-07-23 15:31:52 +02:00
not 8474b72bf4 docs: demo note + backlog tick for distributed tracing (refs #123)
CI / lint (pull_request) Successful in 4m29s
CI / build (pull_request) Successful in 59s
CI / unit (pull_request) Successful in 1m16s
CI / frontend (pull_request) Successful in 2m36s
CI / mutation (pull_request) Successful in 6m6s
CI / verify-stack (pull_request) Failing after 13m54s
refs #123
2026-07-23 14:37:50 +02:00
not 271c54197e feat(obs): OpenTelemetry distributed tracing across the five .NET services (refs #123)
Each host adds AddOpenTelemetry().WithTracing with ASP.NET Core + HttpClient
auto-instrumentation and an OTLP exporter to Tempo; service name + endpoint from
OTEL_* env set per app service in compose. Since every cross-service call goes
through a typed HttpClient, traceparent propagates for free, so a request is one
connected trace (bff → domain/projection → acl → openzaak). /health is filtered
out. The exporter no-ops harmlessly when Tempo is unreachable (verified: domain
boots healthy with no collector).

refs #123
2026-07-23 14:35:47 +02:00
not b32c352f20 test(infra): verify-tracing asserts one connected trace across services in Tempo (refs #123)
Generates anonymous BFF→projection-api traffic and asserts Tempo holds a single
trace containing both service.names — proving OTLP export plus traceparent
propagation across the HttpClient hop. Fails until the services are instrumented
(next commit). Runs in-network like the other verify checks.

refs #123
2026-07-23 14:30:59 +02:00