Alertas por chamada no Uptime Kuma: faça seu celular tocar

O Uptime Kuma tem mais de 90 formas de notificação, mas nenhuma que faça seu celular tocar. Veja como adicionar alertas por chamada para quedas usando um único webhook.

Sumário

O Uptime Kuma tem mais de 90 provedores de notificação, mas nenhum deles faz seu celular tocar. Para receber uma chamada quando um monitor cai, envie a notificação Webhook do Uptime Kuma para um canal do Echobell com o tipo Chamada. Este guia mostra o corpo personalizado exato, como separar os alertas de queda dos de recuperação e os dois erros que quebram a configuração em silêncio.

O Uptime Kuma é o monitor de uptime auto-hospedado mais popular que existe — cerca de 90.000 estrelas no GitHub, com a versão 2.5.0 lançada em agosto de 2026. Ele verifica endpoints HTTP, portas TCP, registros DNS, contêineres Docker e mais, e é realmente muito bom em detectar quedas.

Onde ele deixa você exposto é na última milha: levar o alerta até uma pessoa que está dormindo.

Por que o Uptime Kuma não consegue ligar para você sozinho

A lista de notificações do Uptime Kuma é longa — Telegram, Discord, Slack, e-mail, Gotify, ntfy e dezenas de outras — mas todas entregam uma mensagem. Mensagens dependem da chave de silenciar do seu celular, do Não perturbe e dos modos Foco do iOS. Às 3 da manhã isso significa que o alerta chega e nada acontece.

Não existe um provedor nativo do tipo "me ligue". As opções em que as pessoas costumam parar são:

  • Twilio — dá para construir chamadas de voz em cima dele, mas o provedor Twilio do Uptime Kuma envia SMS. Voz significa escrever um serviço intermediário, comprar um número e pagar por chamada.
  • PagerDuty, Zenduty, Spike.sh, Splunk On-Call — esses realmente fazem chamadas, e são plataformas completas de gestão de incidentes, com preço por usuário à altura. A resposta certa se você precisa de rodízios e políticas de escalonamento; exagero se você só precisa que um celular toque.
  • Gateways de SMS — um SMS continua chegando como mensagem, e no iOS uma mensagem de texto só atravessa o modo Foco se o remetente estiver na sua lista de permissões.

Um pedido de recurso para notificações por chamada VoIP está aberto há um bom tempo no repositório do Uptime Kuma. Enquanto isso, o provedor genérico Webhook é a saída — ele consegue enviar qualquer coisa para qualquer URL, que é tudo de que você precisa.

O que você precisa

  • Uma instância do Uptime Kuma em execução (este guia foi escrito para a 2.x; o corpo personalizado do webhook também funciona na 1.23+)
  • Echobell instalado (App Store / Google Play)
  • Cinco minutos

Sua instância do Uptime Kuma precisa de HTTPS de saída para hook.echobell.one. Ela não precisa ser acessível pela internet — este é um webhook de saída, então um monitor rodando em um servidor doméstico ou dentro de uma rede privada funciona sem problemas.

Passo 1 — Crie um canal que liga para você

No Echobell, crie um canal com um nome como Production Down. Defina o tipo de notificação da inscrição como Chamada. É essa a configuração que importa: alertas em chamada chegam como uma tela de ligação recebida e tocam atravessando o modo Foco do iOS e o Não perturbe, o que uma notificação push não faz.

Defina os modelos como:

Título: 🔴 {{monitor}} está fora do ar
Corpo: {{message}}
Destino: {{target}}

Depois copie a URL do webhook do canal. Ela se parece com isto:

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

Trate essa URL como um segredo — quem a tiver pode fazer seu celular tocar.

Passo 2 — Adicione o Echobell como notificação de webhook

No Uptime Kuma, vá em Settings → Notifications → Setup Notification e preencha:

CampoValor
Notification TypeWebhook
Friendly NameEchobell — Down
Post URLa URL do webhook do seu canal no Echobell
Request BodyCustom Body

Deixe Additional Headers em branco.

Passo 3 — Envie um payload que dá para filtrar

Este é o passo que a maioria dos guias pula, e é ele que faz a diferença entre um sistema de alertas e uma máquina de barulho.

Cole isto em Custom Body:

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

O Uptime Kuma renderiza corpos personalizados com Liquid e expõe estas variáveis:

VariávelO que contém
{{name}}O nome amigável do monitor
{{hostnameOrURL}}O hostname ou a URL que está sendo verificada
{{status}}🔴 Down, ✅ Up ou ⚠️ Test
{{msg}}O motivo em texto legível, por exemplo connect ECONNREFUSED 10.0.0.4:443
{{ monitorJSON['...'] }}O objeto monitor completo
{{ heartbeatJSON['...'] }}O objeto heartbeat completo

Dois detalhes desse payload são intencionais:

strip_newlines em msg. A mensagem do Uptime Kuma costuma conter quebras de linha, e uma quebra de linha crua dentro de uma string JSON é JSON inválido. Sem o filtro, seu webhook falha de forma intermitente — só nos erros cujo texto por acaso quebra a linha. Se o seu Uptime Kuma for novo o bastante para ter o filtro json do Liquid, "message": {{ msg | json }} (atenção: sem as aspas ao redor) é ainda mais seguro, porque também escapa as aspas.

heartbeatJSON['status'] em vez de {{status}}. A variável status é renderizada como texto com emoji, o que é ruim de comparar. O status do heartbeat é um número simples:

  • 0 — fora do ar
  • 1 — no ar
  • 2 — pendente
  • 3 — manutenção

As aspas ("up": "{{ ... }}") também importam, e o Passo 5 explica por quê.

Passo 4 — Impeça que alertas de recuperação liguem para você

Uma única notificação do Uptime Kuma dispara tanto na queda quanto na recuperação. Sem ajuste, esta configuração liga para você quando o serviço quebra e liga de novo quando ele se conserta sozinho. A segunda chamada é a que ensina as pessoas a ignorar a primeira.

Separe as duas usando as condições do Echobell, avaliadas antes de qualquer entrega:

No canal Production Down (tipo de notificação Chamada), defina a condição como:

up == "0"

Crie um segundo canal chamado Production Recovered, defina o tipo de notificação dele como Normal e dê a ele a condição:

up == "1"

Com os modelos:

Título: ✅ {{monitor}} voltou ao ar
Corpo: {{message}}

Depois adicione uma segunda notificação de webhook no Uptime Kuma — mesmo corpo personalizado, mesmos monitores, mas apontando para a URL do canal de recuperação. As duas notificações recebem todos os eventos; cada canal descarta a metade que não lhe interessa.

O resultado: a queda toca o telefone, a recuperação chega como um push silencioso que você lê de manhã.

Passo 5 — Ajuste o monitor para ele não dar alarme falso

Uma chamada que acaba sendo uma oscilação de rede de dois segundos é pior do que chamada nenhuma, porque a próxima também vai ser ignorada. Três configurações do Uptime Kuma resolvem a maior parte disso, todas no próprio monitor:

  • Retries — defina como 2 ou 3. O Uptime Kuma só marca o monitor como fora do ar depois desse número de falhas consecutivas, o que filtra pacotes perdidos isolados.
  • Heartbeat Retry Interval — com que rapidez ele verifica de novo enquanto está falhando. De 20 a 30 segundos é um equilíbrio razoável; combinado com 3 tentativas, você detecta uma queda real em cerca de um minuto.
  • Resend Notification if Down X times consecutively — defina algo como 10 e o Uptime Kuma liga de novo se o serviço continuar fora do ar depois de mais dez verificações. É uma política de escalonamento tosca, e funciona.

Se você quiser que uma chamada não atendida continue tentando imediatamente em vez de esperar o reenvio, ative Repetir chamadas com falha nas configurações do app Echobell.

Tocar apenas fora do horário de trabalho

Durante o expediente você provavelmente já está de olho em um dashboard, e um celular tocando é uma interrupção de que você não precisava. As variáveis de horário do sistema do Echobell (todas em UTC) fazem um mesmo canal se comportar de forma diferente conforme a hora:

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

Essa condição liga para você apenas fora do intervalo das 09:00 às 17:00 UTC. Aponte um segundo canal, do tipo Normal, para a condição inversa e receba pushes durante o dia:

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

Lembre-se de compensar o seu próprio fuso horário — essas variáveis são sempre calculadas em UTC. Há um tratamento mais completo em notificações por janela de tempo com condições em UTC.

Compartilhando o alerta com seu time

Um canal do Echobell pode ser compartilhado com colegas por um link de inscrição, e cada inscrito escolhe o próprio tipo de notificação. Assim, o mesmo monitor pode fazer tocar o celular de quem está de plantão e chegar como push normal para todo o resto — sem preço por usuário e sem regras de roteamento separadas no Uptime Kuma.

Isso também combina com a postura de privacidade que levou você a hospedar tudo por conta própria: seus monitores continuam na sua infraestrutura, e o Echobell mantém o conteúdo e o histórico das notificações no dispositivo, e não nos servidores dele.

O que esta configuração não oferece

Ser honesto sobre o limite evita uma migração ruim mais tarde. O Echobell é uma camada de entrega, não uma plataforma de gestão de incidentes. Ele não tem:

  • Escalas de plantão nem passagens de turno follow-the-sun
  • Árvores de escalonamento que acionam uma segunda pessoa automaticamente
  • Linhas do tempo de incidentes, controle de confirmação de leitura ou ferramentas de post-mortem

Se o seu time precisa disso, você precisa de PagerDuty, Grafana Cloud IRM ou algo parecido. O que esta configuração cobre é a lacuna específica que o Uptime Kuma deixa aberta: transformar uma queda detectada em um telefone que realmente toca. Para quem opera sozinho, times pequenos e homelabs, isso costuma ser a exigência inteira.

Solução de problemas

O botão Test não faz nada. Isso é esperado com o payload acima, e confunde todo mundo na primeira vez. Quando você clica em Test, o Uptime Kuma não tem nenhum heartbeat para renderizar, então {{ heartbeatJSON['status'] }} vira uma string vazia e nenhuma das condições é atendida. Para testar de verdade, crie um monitor TCP descartável apontando para uma porta em que nada está escutando (127.0.0.1:9) e deixe ele falhar.

O webhook falha de forma intermitente. Quase sempre é o problema da quebra de linha — verifique se msg passa por strip_newlines. Só quebra nas mensagens de erro que por acaso contêm uma quebra de linha, e é por isso que parece aleatório.

O Echobell responde success: false com HTTP 200. O token do canal está errado ou o canal foi excluído. O Echobell responde 200 para um token desconhecido mas de tamanho válido, então verifique o corpo JSON, não o código de status.

HTTP 405. O canal está com POST Only ativado e algo enviou um GET. O Uptime Kuma usa POST, então isso normalmente significa que você testou a URL no navegador.

Nada toca, mas a notificação chega. O tipo de notificação da inscrição está como Normal ou Urgente, não Chamada. O tipo de notificação é escolhido por inscrito, então verifique no aparelho que não está tocando.

Perguntas frequentes

O Uptime Kuma consegue fazer uma chamada telefônica nativamente?

Não. O Uptime Kuma tem mais de 90 provedores de notificação, mas todos entregam mensagens. Chamadas telefônicas exigem encaminhar um webhook para um serviço capaz de fazê-las, como o Echobell, ou usar uma plataforma paga de gestão de incidentes.

Isso funciona com um Uptime Kuma auto-hospedado atrás de um firewall?

Sim. O webhook é uma requisição HTTPS de saída da sua instância do Uptime Kuma, então ela só precisa alcançar hook.echobell.one. Sua instância não precisa de endereço público.

A chamada telefônica atravessa o Não perturbe?

Sim. O tipo de notificação Chamada do Echobell aparece como uma ligação recebida, que toca atravessando o modo Foco do iOS e o Não perturbe. Veja como contornar o modo Foco do iOS para alertas críticos para os detalhes e as configurações envolvidas.

Como paro de receber chamadas quando o serviço se recupera?

Use dois canais com condições — up == "0" para o canal de chamada e up == "1" para um canal de recuperação com prioridade normal — e aponte uma notificação de webhook para cada um. O Passo 4 acima mostra o passo a passo.

Várias pessoas podem ser chamadas pelo mesmo monitor?

Sim. Compartilhe o canal com seus colegas e cada inscrito escolhe o próprio tipo de notificação. Todo mundo inscrito no canal de chamada recebe a ligação.

Conclusão

A configuração é um webhook, um corpo personalizado e duas condições. Ela deixa seus monitores, sua lógica de tentativas e suas páginas de status do Uptime Kuma exatamente como estão, e fecha a distância entre "o monitor percebeu" e "uma pessoa percebeu".

Baixe o Echobell para iPhone ou pegue no Google Play, depois conecte primeiro um monitor não crítico e deixe ele falhar de propósito. Confie no caminho antes de depender dele.


Relacionados

Artigos relacionados