Observability

Purpose: know what the system is doing in production before a user reports it. Without it, a system is a black box and every incident is a firefight. "It works in my test" is not evidence; production telemetry is.

The three pillars

Pillar What Answers
Metrics Numbers over time (counters, gauges, histograms) "How is it doing?" — trends, alerts
Logs Discrete event records "What exactly happened here?" — debugging
Traces A request's path across services "Where did this one request spend its time?" — distributed latency

Metrics tell you something is wrong, traces tell you where, logs tell you why. A senior's system is designed so all three work together: alert on a metric → trace the request → read the log for the detail.

The two frameworks (both matter, differently)

From your calibration, the piece that got added: guarantee metrics — the ones that track your actual promises (delivery rate, p95 latency, queue/DLQ depth). RED/USE keep your infrastructure honest; guarantee metrics keep your product promises honest. A senior monitors both and knows which is which.

SLI / SLO / alerts

Your instinct in the calibration ("queue depth + DLQ depth") was exactly the early-warning layer — the signal that you're about to break a promise, not that you already have.

Where it fits your systems

You run New Relic — the tools are there. The senior habit is the discipline: define the guarantee metrics first (from the SLOs), wire RED/USE under them, then alert on leading indicators, not trailing ones.

Ask yourself

  1. If this service breaks at 2 AM, which metric alerts me, and can I trace a sample request from it?
  2. Which of my metrics are leading (about to break) vs trailing (already broken)?
  3. Can I reproduce "what happened at 9:00 AM on payday" from my logs alone?