Stackbook Logo
observabilityestablished · low operational burden

Golden Signals Monitoring

Also known as: four-golden-signals, sre-golden-signals

Intent

Monitor any user-facing service with four signals (latency, traffic, errors, saturation) that cover most symptoms.

Problem

Teams collect thousands of metrics but still miss user-visible outages. Dashboards differ per service, so on-call engineers cannot read an unfamiliar one quickly. There is no agreed minimum set of signals.

Forces

  • •Too many metrics hide the ones that matter
  • •Dashboards must be readable by engineers who do not own the service
  • •Symptoms users feel matter more than internal causes
  • •Saturation is hard to measure for some resources

Solution

Overview

The four golden signals come from Google SRE practice. If you can only watch four things about a user-facing system, watch these: latency, traffic, errors, and saturation. Together they answer whether users are being served, how much, how well, and how close the system is to its limit.

How it works

Each signal has a precise definition:

  • Latency: time to serve a request, tracked as p50, p95, and p99. Record failed requests separately, because a fast error can make latency look healthy.
  • Traffic: demand, such as requests per second or sessions.
  • Errors: explicit failures (HTTP 500), implicit failures (200 with wrong content), and policy failures (response slower than the SLO threshold).
  • Saturation: utilization of the scarcest resource, such as CPU, memory, connection pool, or queue depth. Alert before 100 percent, since latency degrades early.
rate(http_requests_total[5m])                      # traffic
sum(rate(http_requests_total{code=~"5.."}[5m]))
  / sum(rate(http_requests_total[5m]))             # errors
histogram_quantile(0.99, rate(http_request_duration_bucket[5m]))  # latency
max(db_pool_in_use / db_pool_size)                 # saturation

Page on error ratio and tail latency. Use saturation for warnings and capacity planning.

Pitfalls

  • Using the mean for latency. One slow percent of requests can hurt many users while the average looks fine.
  • Mixing successful and failed latencies. Fast failures pull the percentile down.
  • Picking saturation by habit (CPU) when the real constraint is a thread pool or a downstream rate limit.
  • Treating the signals as a replacement for SLOs. They are inputs; an SLO sets the target.

Key takeaways

  • Four signals give broad coverage for request-serving services.
  • Standardize names and dashboards so any engineer can read any service.
  • Alert on symptoms; use other signals to diagnose.
  • Measure tail latency and split success from failure.

✓ When to Use

  • •Any request-serving production service
  • •Standardizing dashboards across many teams
  • •Choosing initial alerts for a new service

✗ When Not to Use

  • •Batch or stream jobs where throughput and lag matter more
  • •Deep root-cause analysis (signals show symptoms, not causes)
  • •Resources with no meaningful saturation measure

Pros

  • +Small, memorable set that covers most outages
  • +Uniform dashboards cut time to orient during incidents
  • +Symptom-based alerts reduce noise

Cons

  • −Saturation needs resource-specific judgment
  • −Does not explain why a signal moved
  • −Implicit errors need custom checks

Cost Profile

Infrastructure

Low - metrics backend and dashboard templates

Operational

Low - one template maintained centrally

Cognitive

Low - four concepts

Failure Modes

  • Latency averaged, hiding a slow tail

  • Errors counted only from HTTP 5xx, missing wrong-but-200 responses

  • Saturation tracked on the wrong resource, so alerts fire late

Real-World Examples

Alternatives

    Related Patterns

    • sli-slo
    • observability
    • structured-logging

    Competency Domains

    reliability ops