Each of these cost something. The reason is the point, not the choice.
No Docker socket in the log shipper
Service discovery would give container names, but requires mounting the Docker API socket. Read-only does not help — the risk is the API, not the file. On a project about security posture, that is not a trade worth making for nicer labels.
Redact at the source, not in the pipeline
The proxy sits in front of single sign-on, so OAuth parameters arrive on the URI. Redacting in the shipper would mean the secret is already on disk by the time anything filters it.
Baselines from rotated raw logs, not from the log store
Retention is 168 hours. A query over 30 days does not error — it returns seven days. One rule shipped with a threshold a third of what it should have been because of exactly this.
Absence is a signal
A source that stops reporting looks identical to a quiet one. A rule alerts on the absence of container logs, and the dashboard's per-source gauge uses explicit zero-valued queries so a dead source shows a bar at zero instead of vanishing.
Prove every detection with input you generate
A brute-force rule had matched nothing in 30 days, which is indistinguishable from broken. Two deliberately failed logins settled it. Silence is not evidence.