Observability and Operations · Observability Foundations

Designing Metrics: RED, USE and the Golden Signals

Pick metrics that reveal user impact and saturation without exploding cardinality.

Create a free account to save this page, take notes and track your progress. Sign in

For request-driven services use RED: Rate, Errors, Duration (as histograms for percentiles). For resources use USE: Utilization, Saturation, Errors. Google's four golden signals combine them: latency, traffic, errors, saturation. Add business metrics (orders/min, signups). Keep label cardinality bounded — never label by user ID or raw URL — and use route templates.

# Prometheus queries
sum(rate(http_requests_total{service="checkout"}[5m]))                                   # Rate
sum(rate(http_requests_total{service="checkout",status=~"5.."}[5m]))
  / sum(rate(http_requests_total{service="checkout"}[5m]))                                 # Error ratio
histogram_quantile(0.99, sum by (le, route) (rate(http_request_duration_seconds_bucket[5m])))  # p99 per route
max(pg_pool_waiting_connections) / max(pg_pool_max_connections)                           # Saturation

Common pitfalls

  • Averages instead of percentiles for latency.
  • Labels with unbounded values.
  • Dashboards with hundreds of graphs and no clear signal.

Key points

  • RED for services, USE for resources
  • Histograms for percentiles
  • Bounded label cardinality

Further reading: Google SRE: Monitoring distributed systems

Practice questions

What are the four golden signals?

Answer

Latency, traffic, errors and saturation — the minimum set to understand a user-facing service's health.

Why is labeling a metric with user_id a problem?

Answer

Each unique value creates a new time series, so millions of users create millions of series, overwhelming storage and queries.

Open in the app to mark lessons complete, take notes and track your progress.

Was this page helpful?