observability: StarIntel telemetry abstraction + OTLP instrumentation (addon, opt-in) #9
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/observability-slice"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #8 (server side of the observability slice; infra slice merged in starintel-labs/starintel-infra#163).
What
New ASDF system =starintel-observability= (package =star.observability=) — the StarIntel observability abstraction. Applications depend on this, never on an OpenObserve client.
h2. Lifecycle: opt-in via init.lisp (per review decision)
h2. Instrumentation
h2. Redaction
Layer 1 at emission: structural =redact-attributes= deletes the forbidden-key namespace (authorization/cookie/password/secret/token/api_key/access_token/refresh_token/client_secret/bodies), case-insensitive. Collector (transform/redact) and OpenObserve ingestion are layers 2/3. =STAR_INCLUDE_PAYLOADS= is always off unless an explicit debug policy sets it.
h2. Compose
=otelcol= sidecar (otelcol-contrib): receives app OTLP, scrapes rabbitmq 15692 + couchdb 17986 where enabled, forwards to the observe gateway with no OpenObserve credentials (the gateway owns the ingest token).
h2. Tests (hermetic FiveAM, =nix run .#star-unit-tests=)
Traceparent round-trip + malformed rejection; disabled-mode no-op; structural redaction (case-insensitive); backend-failure → bounded drop counters without signaling; HTTP→nested-span correlation through a captured export transport (one trace id end-to-end, =TEST_API_SECRET_DO_NOT_LEAK_123= never present, span count per request bounded).
Validation: full unit suite green (23 suites), =nix flake check= green, doc-coverage 844/844, prolog-verify check pass at the exact head.