An observability budget that scales
How we keep metrics, logs, and traces useful without drowning the bill — sampling, SLOs, and ownership.
Observability fails in two ways: too little signal, or too much noise. Both are expensive.
Start from user journeys
Instrument the path a customer cares about. Everything else is optional until that path is green.
SLO sketch
For availability target over window :
Example: over 30 days ≈ 43 minutes of budget.
Sampling without blindness
// Prefer head sampling with a floor for errors
func shouldSample(trace Trace) bool {
if trace.HasError() {
return true
}
return rand.Float64() < 0.05
}Ownership table
| Signal | Owner | Retention |
|---|---|---|
| RED metrics | Service team | 90d |
| Structured logs | Service team | 14–30d |
| Traces | Platform | 7–14d |
Closing
Budget the telemetry like you budget CPU. If nobody owns a dashboard, delete it.