An alert channel that posts every few minutes soon becomes background noise. If it reports routine CPU and queue changes alongside a broken checkout, the important message can go unread.

Alerting fails when it measures machines instead of users.

Start from what users feel

We write alerts around symptoms a customer would notice:

These page someone. Everything else is a dashboard.

Causes go on dashboards

High CPU, memory, disk and connection counts are useful when you investigate a problem. They make poor alerts because they fire when nothing is wrong and stay quiet when something is. A server at 90% CPU serving every request on time is fine. A server at 20% CPU returning errors isn't.

The exception is anything that will cause an outage if nobody acts: a disk that will fill within hours, a certificate expiring in seven days, a database nearing its storage limit. Those alert, with enough lead time to fix them during working hours.

Every alert needs an owner and an action

Before an alert goes live we answer three questions. Who gets it? What should they do first? Can it wait until morning? If nobody can say what action to take, it's not an alert yet.

We link each alert to a short runbook entry: what the alert means, where to look, and how to mitigate. The person paged at 2am shouldn't have to guess.

Two levels, not ten

We use two severities. Page means a human responds now, day or night. Ticket means someone looks at it next working day. Warning, notice and info levels in between train people to ignore the channel.

Review the noise monthly

Once a month we look at every alert that fired. If it fired and nobody needed to act, we raise the threshold or delete it. If an incident happened without an alert, we add one. The list stays short because we prune it.

A small starting set

For a typical web product we launch with:

  1. Uptime check on the home page and one logged-in page
  2. Error rate on the API
  3. Response time on checkout or the main workflow
  4. "No successful orders in 30 minutes" during business hours
  5. Queue age for background jobs
  6. Certificate and domain expiry

Six alerts that people trust beat sixty they've muted.

← More in Cloud & DevOps