Problem
In a fleet of microservices each team invents its own metrics, so cross-service triage is slow. Engineers need a minimal, uniform instrumentation recipe that reflects what callers experience.
Also known as: rate-errors-duration
Instrument every microservice with request Rate, Errors, and Duration to get a consistent view of service health.
In a fleet of microservices each team invents its own metrics, so cross-service triage is slow. Engineers need a minimal, uniform instrumentation recipe that reflects what callers experience.
RED was popularized by Tom Wilkie for microservices. It keeps only the three measurements that describe a request-serving service from the caller's point of view: Rate, Errors, Duration. It is a subset of the golden signals, tuned for services rather than infrastructure.
Middleware or a mesh sidecar wraps every handler and updates three metrics:
http_requests_total{service,route,method,code} # Rate and Errors
http_request_duration_seconds_bucket{service,route} # Duration
Rate = sum(rate(http_requests_total[1m])) by (service)
Errors = sum(rate(http_requests_total{code=~"5.."}[1m]))
/ Rate
Duration = histogram_quantile(0.95,
sum(rate(http_request_duration_seconds_bucket[5m])) by (le,service))
A single dashboard row per service shows the three graphs. When a RED graph degrades, the on-call engineer pivots to the resources behind the service using the USE method, and to traces for individual slow requests.
Low - three metrics per route
Low - middleware owned by platform
Low - easy to teach
Raw URL paths used as labels, exploding cardinality
Client errors (4xx) counted as service errors, causing false alerts
Duration measured at the app instead of at the edge, hiding queueing delay