Built and run by one person.

How do I get alerted when my website or API goes down (without alert fatigue)?

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:

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