Because a dashboard is passive, and at 3am you are not looking at it. Without alerting you find out about an outage from an annoyed user hours later, or from your own dashboard the next morning. You need something that actively reaches you.
Treat alerting as a SEPARATE system from monitoring - its whole job is to reach you when you are not watching. Three properties make it usable rather than noise:
- Route to a push channel and/or email. TigZig uses Pushover for phone push (a simple service with a small one-time fee per platform) and Brevo for transactional email. Many alternatives work identically - email via Amazon SES, Postmark or Resend; push via ntfy or Pushover; chat via a Slack or Discord webhook; on-call paging via PagerDuty or Opsgenie. Choose by scale and budget; the pattern is the same.
- Tier by severity. A warning escalates to critical only if it persists, so you are not paged for a one-second blip. A safe concrete example: a public API that stops responding for a sustained short window raises an alert to your phone.
- De-duplicate. One incident is one alert, not fifty.
The shape is a thin layer your monitors call when a check crosses a line:
def alert(title, message, severity): # 'warning' | 'critical'
key = dedup_key(title) # e.g. hash of service + check
if already_active(key): # one incident = one alert
return
mark_active(key)
push_notify(title, message, priority=severity) # e.g. Pushover
if severity == 'critical':
send_email(title, message) # e.g. Brevo / SES
# on recovery: clear the dedup key and send a single resolved ping.
De-duplication is not optional. A flapping service can fire hundreds of alerts and train you to ignore the channel entirely - and alert fatigue is exactly how real outages get missed. Naming the tools you use is fine (Pushover and Brevo are not secrets); keep the actual thresholds, timings and endpoint list out of any public place.
Alerting complements the dashboard, it does not replace it: https://www.tigzig.com/agents-faq/what-should-i-monitor-for-a-small-production-app. Public-facing uptime is a different thing again: https://www.tigzig.com/agents-faq/how-do-i-build-a-status-page-without-exposing-my-database. Full item: https://www.tigzig.com/security/monitoring.
← All Agents FAQ