ANW-37 Telemetry: request metrics + selective traces over OTLP

Optional OTLP export of request-level metrics (request and response-byte
counters keyed by route/status/conditional-GET, a duration histogram out
to 600s) plus server spans for slow or 5xx requests, nested under the
incoming W3C trace context. Off unless an OTLP endpoint or uptrace DSN is
configured; a config-less server is byte-for-byte unchanged.
This commit is contained in:
Andreas Brenner 2026-07-24 20:29:06 +03:00
parent b271d57cbb
commit 7f80ec488d
8 changed files with 1995 additions and 48 deletions

View file

@ -17,8 +17,17 @@ axum = "0.8"
blake3 = "1"
chrono = { version = "0.4", default-features = false, features = ["std", "serde", "clock"] }
clap = { version = "4", features = ["derive", "env"] }
http-body = "1"
hydra = "0.1"
notify = "8"
opentelemetry = "0.32"
# `reqwest-rustls` is required alongside `reqwest-blocking-client`: the
# default otlp features wire reqwest with no TLS backend at all, so HTTPS to
# the collector would fail. rustls (aws-lc-rs + OS trust store) keeps the
# release binary free of a system OpenSSL dependency.
opentelemetry-otlp = { version = "0.32", default-features = false, features = ["trace", "metrics", "http-proto", "reqwest-blocking-client", "reqwest-rustls"] }
opentelemetry-semantic-conventions = "0.32"
opentelemetry_sdk = { version = "0.32", features = ["metrics", "trace"] }
regex = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"