monitoring

  • An expiry alert at thirty days, not at zero

    Monitoring that tells you a certificate has expired is monitoring that tells you about an outage. The useful alert fires while there is still time to fix the…

  • A queue table is not a queue

    SELECT … WHERE processed = 0 LIMIT 1, and two workers taking the same row. SKIP LOCKED makes the table viable; it does not make it a broker.

  • Monit restarting a process is a symptom, so alert on the restart

    A process supervisor that quietly restarts a service is doing its job and hiding the problem, so a memory leak becomes a daily restart nobody knows about. The…

  • Wildcard certificates, and the DNS challenge

    ACME v2 landed in March and wildcards need a different proof. The certificate is the easy part; the API token that can rewrite your zone is not.

  • A swap file on a small VPS, and the OOM killer it prevents

    A one-gigabyte VPS running MySQL, PHP and nginx has no headroom, and the kernel resolves that by killing the largest process — which is MySQL, mid-write. Swappiness at…

  • A backup you have not restored is not a backup

    A nightly dump that has run successfully for two years proves that the dump command exits zero, which is a different claim from the data being recoverable. The…

  • Laravel 5.6 and logging you can configure

    Logging moved into a config file, and stacks are why it matters — a different format per destination, decided without touching a service provider.

  • Measure the p99, because the average hides the incident

    An hourly spike that made every request four hundred milliseconds slower for two seconds moved the average by nine milliseconds and was invisible in every graph anyone looks…

  • A circuit breaker before the third-party outage

    A payment provider was slow and the whole site went down with it. A timeout bounds one request; it does nothing about how many are waiting at once.

  • journald rate limiting drops your logs silently

    systemd-journald discards messages from a service exceeding its burst limit and notes the fact in a single line that is easy to miss — so a debugging session…