Skip to content
Download

Before production checklist

Run this list against a staging run or a load test, with Loggerhead open and the Improvements page empty of HIGH findings.

  • No single log line makes up more than 20% of the volume.
  • DEBUG and TRACE records are sampled or dropped on the branch.
  • Every ERROR record carries a trace ID, and that trace is in Loggerhead.
  • No log field holds an email address, a token, or a card number.
  • Every service sets service.name.
  • Every record carries fields. The message is a constant, and the values are attributes.
  • Every record of one service carries the same keys.
  • A failure is written at WARN or ERROR, never at INFO.
  • No message holds a payload or a whole stack trace.
  • No service writes more than 600 records a minute.
  • No metric is always zero, and no metric reports one value for the whole run.
  • No metric has gone stale during the run.
  • No two metric names carry the same series.
  • No label holds a raw URL path, a user ID, or a request ID.
  • Every point carries service.name.
  • Every counter goes up. A counter that falls is really a delta.
  • Every metric name is lower case, with one separator style.
  • Every request produces one root span.
  • Every child span has a parent that arrives too.
  • Every span name is a route or an operation template, not a name with an ID in it.
  • Every span ends, and no span runs longer than 5 minutes by accident.
  • Slow spans point at a real dependency, not at a missing instrument.
  • Each service with a sustained error rate has an alert rule.
  • Each alert has an owner.
  • The daily volume per signal fits the plan on the platform you ship to.

When every box is ticked, export the branch config from staging and use the same config in production.