Avvisi con chiamata da Uptime Kuma: fai squillare il telefono

Uptime Kuma offre oltre 90 provider di notifica, ma nessuno che faccia squillare il telefono. Ecco come aggiungere avvisi con chiamata per i disservizi usando un solo webhook.

Indice

Uptime Kuma supporta più di 90 provider di notifica, ma nessuno di questi fa squillare il telefono. Per ricevere una chiamata quando un monitor cade, invia la notifica Webhook di Uptime Kuma a un canale Echobell impostato su Chiamata. Questa guida ti mostra il Custom Body esatto da usare, come separare gli avvisi di disservizio da quelli di ripristino e i due errori che mandano all'aria la configurazione senza dire niente.

Uptime Kuma è il monitoraggio uptime self-hosted più diffuso in assoluto: circa 90.000 stelle su GitHub, con la 2.5.0 arrivata ad agosto 2026. Controlla endpoint HTTP, porte TCP, record DNS, container Docker e altro ancora, ed è davvero bravo a rilevare i disservizi.

Dove ti lascia scoperto è l'ultimo miglio: far arrivare l'avviso a una persona che sta dormendo.

Perché Uptime Kuma non può farti squillare il telefono da solo

La lista delle notifiche di Uptime Kuma è lunga — Telegram, Discord, Slack, email, Gotify, ntfy e decine di altre — ma tutte recapitano un messaggio. E i messaggi dipendono dall'interruttore della suoneria, da Non disturbare e dalle Full Immersion di iOS. Alle 3 di notte questo significa che l'avviso arriva e non succede niente.

Non esiste un provider nativo del tipo “chiamami sul telefono”. Le alternative su cui di solito si finisce sono:

  • Twilio — ci puoi costruire sopra le chiamate vocali, ma il provider Twilio di Uptime Kuma invia SMS. Per la voce servono un servizio ponte da scrivere, un numero da acquistare e un costo per ogni chiamata.
  • PagerDuty, Zenduty, Spike.sh, Splunk On-Call — questi le chiamate le fanno davvero, e sono piattaforme complete di incident management con prezzi per utente all'altezza. Sono la risposta giusta se ti servono turni e policy di escalation; sono sovradimensionate se ti serve solo che un telefono squilli.
  • Gateway SMS — un SMS resta comunque un messaggio, e su iOS non buca la Full Immersion a meno che il mittente non sia nella tua lista di eccezioni.

Sul repository di Uptime Kuma è aperta da tempo una richiesta di funzionalità per le notifiche con chiamata VoIP. Nel frattempo la via d'uscita è il provider Webhook generico: può inviare qualsiasi cosa a qualsiasi URL, ed è tutto quello che serve.

Cosa ti serve

  • Un'istanza di Uptime Kuma attiva (questa guida fa riferimento alla 2.x; il Custom Body funziona anche dalla 1.23 in poi)
  • Echobell installato (App Store / Google Play)
  • Cinque minuti

La tua istanza di Uptime Kuma ha bisogno di HTTPS in uscita verso hook.echobell.one. Non deve essere raggiungibile da internet: si tratta di un webhook in uscita, quindi va benissimo anche un monitor che gira su un server di casa o dentro una rete privata.

Passo 1 — Crea un canale che ti chiama

In Echobell crea un canale con un nome tipo Production Down. Imposta il tipo di notifica dell'iscrizione su Chiamata. È questa l'impostazione che conta: gli avvisi con chiamata arrivano come schermata di chiamata in entrata e squillano attraverso le Full Immersion di iOS e Non disturbare, cosa che una notifica push non fa.

Imposta i modelli così:

Titolo: 🔴 {{monitor}} non è raggiungibile
Testo: {{message}}
Destinazione: {{target}}

Poi copia l'URL del webhook del canale. Ha questo aspetto:

https://hook.echobell.one/t/<channel-token>

Tratta quell'URL come un segreto: chiunque lo possieda può far squillare il tuo telefono.

Passo 2 — Aggiungi Echobell come notifica webhook

In Uptime Kuma vai su Settings → Notifications → Setup Notification e compila:

CampoValore
Notification TypeWebhook
Friendly NameEchobell — Down
Post URLl'URL del tuo webhook Echobell
Request BodyCustom Body

Lascia vuoto Additional Headers.

Passo 3 — Invia un payload su cui puoi filtrare

È il passaggio che quasi tutte le guide saltano, ed è quello che fa la differenza tra un sistema di avvisi e una macchina per fare rumore.

Incolla questo in Custom Body:

{
  "monitor": "{{name}}",
  "target": "{{hostnameOrURL}}",
  "message": "{{ msg | strip_newlines }}",
  "up": "{{ heartbeatJSON['status'] }}"
}

Uptime Kuma renderizza i custom body con Liquid e mette a disposizione queste variabili:

VariabileCosa contiene
{{name}}Il nome descrittivo del monitor
{{hostnameOrURL}}L'hostname o l'URL sotto controllo
{{status}}🔴 Down, ✅ Up oppure ⚠️ Test
{{msg}}Il motivo in forma leggibile, ad esempio connect ECONNREFUSED 10.0.0.4:443
{{ monitorJSON['...'] }}L'oggetto monitor completo
{{ heartbeatJSON['...'] }}L'oggetto heartbeat completo

Due dettagli di questo payload sono voluti:

strip_newlines su msg. Il messaggio di Uptime Kuma contiene spesso interruzioni di riga, e un a capo grezzo dentro una stringa JSON è JSON non valido. Senza il filtro il webhook fallisce a intermittenza, e solo per gli errori il cui testo va a capo per caso. Se la tua versione di Uptime Kuma è abbastanza recente da avere il filtro json di Liquid, "message": {{ msg | json }} (attenzione: senza virgolette intorno) è ancora più sicuro, perché fa l'escape anche delle virgolette.

heartbeatJSON['status'] al posto di {{status}}. La variabile status produce testo con emoji, scomodo da confrontare. Lo stato dell'heartbeat è invece un semplice numero:

  • 0 — non raggiungibile
  • 1 — raggiungibile
  • 2 — in attesa
  • 3 — manutenzione

Anche metterlo tra virgolette ("up": "{{ ... }}") è importante, e il passo 5 spiega perché.

Passo 4 — Evita che i ripristini ti chiamino

Una singola notifica di Uptime Kuma scatta sia al disservizio sia al ripristino. Lasciata così, questa configurazione ti chiama quando il servizio si rompe e ti richiama quando si ripara da solo. È la seconda chiamata quella che insegna alle persone a ignorare la prima.

Separale con le condizioni di Echobell, che vengono valutate prima di qualsiasi consegna:

Sul canale Production Down (tipo di notifica Chiamata) imposta la condizione:

up == "0"

Crea un secondo canale chiamato Production Recovered, imposta il suo tipo di notifica su Normale e assegnagli la condizione:

up == "1"

Con questi modelli:

Titolo: ✅ {{monitor}} è di nuovo raggiungibile
Testo: {{message}}

Poi aggiungi una seconda notifica webhook in Uptime Kuma: stesso Custom Body, stessi monitor, ma puntata all'URL del canale di ripristino. Entrambe le notifiche ricevono tutti gli eventi; ogni canale scarta la metà che non lo riguarda.

Il risultato: i disservizi squillano, i ripristini arrivano come una push silenziosa che leggi la mattina.

Passo 5 — Regola il monitor perché non gridi al lupo

Una chiamata che si rivela un singhiozzo di rete di due secondi è peggio di nessuna chiamata, perché anche la prossima verrà scartata. Tre impostazioni di Uptime Kuma fanno quasi tutto il lavoro, tutte sul monitor stesso:

  • Retries — impostalo a 2 o 3. Uptime Kuma segna il monitor come non raggiungibile solo dopo questo numero di fallimenti consecutivi, e così filtra i singoli pacchetti persi.
  • Heartbeat Retry Interval — con quale rapidità ricontrolla mentre è in errore. 20-30 secondi sono un buon compromesso; insieme a 3 tentativi rilevi un disservizio reale in circa un minuto.
  • Resend Notification if Down X times consecutively — impostalo su un valore tipo 10 e Uptime Kuma ti richiamerà se il servizio è ancora giù dopo altri dieci controlli. È una policy di escalation rozza, e funziona.

Se vuoi che una chiamata senza risposta continui a riprovare subito invece di aspettare il rinvio, attiva Riprova chiamate non riuscite nelle impostazioni dell'app Echobell.

Far squillare il telefono solo fuori dall'orario di lavoro

Durante la giornata lavorativa stai probabilmente già guardando una dashboard, e un telefono che squilla è un'interruzione di cui non avevi bisogno. Le variabili di orario di sistema di Echobell (tutte in UTC) permettono a un canale di comportarsi in modo diverso a seconda dell'ora:

up == "0" && (hour >= 17 || hour < 9)

Questa condizione ti chiama solo fuori dalla fascia 09:00-17:00 UTC. Per le push diurne punta un secondo canale di tipo Normale sulla condizione inversa:

up == "0" && hour >= 9 && hour < 17

Ricordati di compensare il tuo fuso orario: queste variabili sono sempre calcolate in UTC. Trovi una trattazione più completa in notifiche a fascia oraria con condizioni UTC.

Condividere l'avviso con il team

Un canale Echobell si può condividere con i colleghi tramite un link di iscrizione, e ogni iscritto sceglie il proprio tipo di notifica. Così lo stesso monitor può far squillare il telefono di chi è di turno e arrivare come normale push a tutti gli altri: nessun prezzo per utente, nessuna regola di routing aggiuntiva in Uptime Kuma.

Si sposa bene anche con l'approccio alla privacy che ti ha portato al self-hosting: i tuoi monitor restano sulla tua infrastruttura, ed Echobell tiene contenuti e cronologia delle notifiche sul dispositivo invece che sui propri server.

Cosa questa configurazione non ti dà

Essere onesti sui limiti ti risparmia una brutta migrazione più avanti. Echobell è un livello di consegna, non una piattaforma di incident management. Non ha:

  • Turni di reperibilità o passaggi di consegne follow-the-sun
  • Alberi di escalation che allertano automaticamente una seconda persona
  • Cronologie degli incidenti, tracciamento delle prese in carico o strumenti per i postmortem

Se al tuo team servono, allora ti serve PagerDuty, Grafana Cloud IRM o qualcosa di simile. Quello che questa configurazione copre è la lacuna specifica lasciata aperta da Uptime Kuma: trasformare un disservizio rilevato in un telefono che squilla davvero. Per chi lavora da solo, per i team piccoli e per gli homelab, di solito è tutto quello che serve.

Risoluzione dei problemi

Il pulsante Test non fa niente. Con il payload qui sopra è il comportamento previsto, e la prima volta confonde tutti. Quando clicchi su Test, Uptime Kuma non ha nessun heartbeat da renderizzare, quindi {{ heartbeatJSON['status'] }} diventa una stringa vuota e nessuna delle due condizioni corrisponde. Per fare una prova vera, crea un monitor TCP usa e getta puntato su una porta dove non ascolta nulla (127.0.0.1:9) e lascialo fallire.

Il webhook fallisce a intermittenza. Quasi sempre è il problema degli a capo: controlla che msg passi da strip_newlines. Si rompe solo con i messaggi di errore che per caso contengono un'interruzione di riga, ed è per questo che sembra casuale.

Echobell risponde success: false con HTTP 200. Il token del canale è sbagliato oppure il canale è stato eliminato. Echobell risponde 200 anche per un token sconosciuto ma di lunghezza valida, quindi controlla il body JSON, non il codice di stato.

HTTP 405. Sul canale è attivo POST Only e qualcosa ha inviato una GET. Uptime Kuma usa POST, quindi di solito vuol dire che hai provato l'URL da un browser.

Non squilla niente, ma la notifica arriva. Il tipo di notifica dell'iscrizione è Normale o Urgente, non Chiamata. Il tipo di notifica si sceglie per ogni iscritto, quindi controllalo sul dispositivo che non squilla.

Domande frequenti

Uptime Kuma può fare una telefonata da solo?

No. Uptime Kuma ha oltre 90 provider di notifica, ma tutti recapitano messaggi. Per le chiamate serve instradare un webhook verso un servizio in grado di farle, come Echobell, oppure usare una piattaforma di incident management a pagamento.

Funziona con un Uptime Kuma self-hosted dietro un firewall?

Sì. Il webhook è una richiesta HTTPS in uscita dalla tua istanza di Uptime Kuma, quindi deve solo raggiungere hook.echobell.one. L'istanza non ha bisogno di un indirizzo pubblico.

La chiamata scavalca Non disturbare?

Sì. Il tipo di notifica Chiamata di Echobell si presenta come una chiamata in entrata e squilla attraverso le Full Immersion di iOS e Non disturbare. Trovi i dettagli e le impostazioni coinvolte in come bypassare la Full Immersion di iOS per gli avvisi critici.

Come evito di essere chiamato quando il servizio si ripristina?

Usa due canali con le condizioni — up == "0" per il canale con chiamata e up == "1" per un canale di ripristino a priorità normale — e punta una notifica webhook su ciascuno. Il passo 4 qui sopra lo spiega nel dettaglio.

Si possono chiamare più persone per lo stesso monitor?

Sì. Condividi il canale con i tuoi colleghi: ogni iscritto sceglie il proprio tipo di notifica. Chiunque sia iscritto al canale con chiamata viene chiamato.

In sintesi

La configurazione è un webhook, un Custom Body e due condizioni. Lascia i monitor, la logica di retry e le status page di Uptime Kuma esattamente come sono, e chiude la distanza tra “il monitor se n'è accorto” e “una persona se n'è accorta”.

Scarica Echobell per iPhone oppure prendilo su Google Play, poi collega prima un monitor non critico e fallo fallire di proposito. Verifica il percorso prima di affidartici.


Articoli correlati

Articoli correlati