What a record contains
Every record carries the time, app, host, method, path, status, duration, bytes in and out, request id, trace id, whether the upstream failed and whether the request woke a sleeping app. It never carries cookies, auth headers, query strings or request bodies.Visitor identity is opt in
By default a record has no client IP, user agent, visitor id or referrer. Each destination can opt into any of these fields:
These can identify a person. Turn them on only if your privacy notice covers the destination. The dashboard shows a warning while any identity field is ticked, and the CLI prints one.
Destinations
Credentials are stored encrypted per destination. The API and dashboard only report whether one is set, and they are never logged. The CLI reads them from stdin or a hidden prompt, never from arguments.
Delivery guarantees
Records go into a bounded queue per destination, are batched and retried with backoff, and are dropped and counted when the queue is full. Export runs off the request path: a slow or failing destination never delays or fails a request. Status shows the last success, the last error kind (auth, server, timeout and so on, never a message or URL), and the queued, sent, dropped and failed counters.
Private and loopback targets are refused unless APP_TRAFFIC_EXPORT_ALLOW_PRIVATE=1. Tuning variables: APP_TRAFFIC_EXPORT_QUEUE_SIZE, APP_TRAFFIC_EXPORT_BATCH_SIZE, APP_TRAFFIC_EXPORT_FLUSH_INTERVAL, APP_TRAFFIC_EXPORT_MAX_ATTEMPTS, APP_TRAFFIC_EXPORT_BACKOFF_BASE, APP_TRAFFIC_EXPORT_BACKOFF_MAX, APP_TRAFFIC_EXPORT_TIMEOUT and APP_TRAFFIC_EXPORT_MAX_BODY_BYTES.
API
Sinks live under/api/v1/settings/traffic-export/sinks, with POST .../sinks/{id}/test for one synthetic record and GET /api/v1/settings/traffic-export/status. Reading needs the read ability, writing and testing need root. See the API reference.