Dashboards that answer a question

Play this lesson

64 panels and no answer

Kai built a dashboard with 64 panels: CPU for every server, memory, every counter in the game. During Saturday's slowdown, the team stared at it for ten minutes. Nobody could say whether players were hurting.

The docs of Grafana, a popular open-source dashboard tool, put it simply: a dashboard should tell a story or answer a question. It should reduce cognitive load, the effort it takes to understand, not add to it.

The four golden signals

From Google's SRE book: if you can measure only four things about a user-facing system, measure these.

Pick the signal

A match server reports that 92% of its garden slots are in use. Which golden signal is that?

  1. Saturation
  2. Traffic
  3. Latency
Show the answer

Saturation

Saturation is how full a service is. Traffic would be how many joins arrive each second, and latency how long each one takes.

RED for services, USE for machines

Wilkie's summary: RED is about caring how happy your users are, USE about how happy your machines are.

Symptoms first, causes below

The SRE book says monitoring should answer two questions: what's broken, and why. "What's broken" is the symptom. The "why" is a cause.

Priya, who runs observability, redraws the dashboard. The top row shows symptoms players feel: join success, save time at p95, crashes. Below, one row per service with its RED numbers. At the bottom, machines with USE. Every graph marks each release, so "it started with 1.4.2" is visible at a glance.

Quick check

If failed joins return an error in 5 ms, mixing them into the join latency graph can make latency look better while things get worse.

Show the answer

True

Fast failures drag the numbers down. The SRE book says to keep the latency of successful and failed requests apart, and adds that a slow error is even worse than a fast one.

Read the numbers

Shard Garden, Saturday 20:14
                now  usualJoin success  97.1%  99.9%Join p95      2.9 s  0.6 sMatch CPU       41%DB connections 498 of 500

Join success and join p95 are the symptoms. Which row points to the likely cause?

  1. Garden DB connections: 498 of 500 in use
  2. Match server CPU at 41%
  3. None: the symptoms are enough
Show the answer

Garden DB connections: 498 of 500 in use

The database has almost no free connections, so new joins queue and time out: saturation. CPU at 41% has plenty of room.

Fewer, better dashboards

Grafana warns about dashboard sprawl: dashboards multiplying until nobody knows which one is right. Priya's rules for the studio:

Quick check

Which panel belongs in the top row of Priya's main dashboard?

  1. Share of garden joins that succeed
  2. CPU of match server 17
  3. Bytes written by the log shipper
Show the answer

Share of garden joins that succeed

The top row shows what players feel, and failed joins are a symptom they notice at once. The others are causes or internals, useful further down while digging.

From a graph to a promise

The top row says how players are doing right now. The next step is deciding how good is good enough, and writing it down.

Bolt says: Next: SLIs and SLOs, the studio's promises in numbers.

Fact-checked 11 October 2026