Infraestrutura · Monitors

Saiba que caiu antes do seu cliente saber.

Uptime de API e nota de performance no mesmo painel. O alerta chega por e-mail, Discord ou Telegram depois de duas falhas seguidas — não de um soluço de rede — e a página de status pública, no seu domínio, responde ao seu cliente enquanto você conserta.

Comece de graça, sem cartão. O primeiro monitor leva um minuto: cole a URL, escolha o intervalo e pronto.

Por que isso existe

Hoje, quem descobre a queda é
O CLIENTE.

Ele liga, manda mensagem, abre um chamado. Nesse ponto o prejuízo já aconteceu duas vezes: o serviço ficou fora do ar e alguém de fora precisou avisar. A inversão dessa ordem é o produto inteiro — e ela não exige que você monte relógio, banco de histórico e canal de aviso para conseguir.

  • O cron que avisa no terminal que ninguém está lendo às 3h
  • O alerta que cria lobo: dispara tanto que virou ruído ignorado
  • O suporte respondendo um a um enquanto o incidente ainda está aberto

O caminho inteiro

Checa, mede, avisa, publica.

Quatro etapas — e nenhuma delas é montar infraestrutura.

1 · Uptime

Uma requisição, três respostas possíveis

No ar, fora do ar — e no ar porém lento, que é um estado próprio. Acordar alguém às 3h por uma API que responde certo e devagar é exatamente como se perde a confiança num alerta.

monitor http
kind:      http
url:       https://api.acme.com/health
intervalo: 30s · 1m · 5m · 10m · 30m · 1h

→ up        respondeu como esperado
→ degraded  certo, acima do limiar
→ down      não respondeu

2 · Performance

Lighthouse de verdade, num Chrome de verdade

Performance, boas práticas e SEO com o navegador abrindo a página. Cada auditoria sobe um Chrome inteiro numa máquina própria e leva segundos — por isso ela sai do relógio para uma fila, e nunca atrasa os pings.

monitor web
kind:      web
url:       https://acme.com
intervalo: 1h · 6h · 12h · 24h

→ performance · best-practices · seo
→ fila serial de 1

3 · Alerta

Duas falhas seguidas, não uma

Um incidente abre depois de N checagens ruins em sequência (padrão 2) e fecha na primeira boa. Uma falha isolada — o timeout de rede que acontece com todo mundo — não vira notificação, e é isso que faz o alerta continuar significando alguma coisa.

incidente
check 1  down   → nada ainda
check 2  down   → incidente ABERTO
                  ↓
                  e-mail
                  Discord
                  Telegram
                  webhook

check 3  up     → incidente FECHADO

4 · Página pública

O status no domínio do cliente, com a cara dele

Cor, fonte, tema e rodapé são seus; o endereço também. Você aponta um CNAME e o certificado é pedido automaticamente — durante um incidente, a página responde por você enquanto o suporte ainda está lendo o alerta.

status page
status.acme.com  CNAME
   → cname.monitors.myinfrastructure.click

✓ certificado pedido sozinho
✓ HTML pronto no primeiro byte
✓ 90 dias de histórico

antes do DNS: /s/<slug>

As duas famílias

Custos diferentes em
ORDENS DE GRANDEZA.

Um ping é ~1 KB e dezenas de milissegundos; uma auditoria Lighthouse sobe um Chrome inteiro e leva segundos. Tratar os dois como a mesma tarefa faria a auditoria atrasar o ping. Aqui a auditoria sai do relógio para uma fila e roda num navegador próprio, e o ping — que é barato — nunca espera por ela.

  • Uptime a partir de 30s; performance a partir de 1h
  • Um relógio só, um Cron Trigger a cada minuto
  • Um tick varre quem venceu, em vez de um timer por monitor
  • Jitter espalha a carga, para 300 monitores não dispararem juntos

A página de status

Ela existe para o dia em que as outras coisas não funcionam.

É a única parte do produto que o seu cliente vê. Por isso ela é HTML do servidor, no seu domínio, e não uma tela que depende de tudo estar de pé para aparecer.

As decisões que ela carrega

  • HTML pronto no primeiro byte a página aparece completa sem depender de CORS, de JavaScript ou de o painel estar no ar. Justamente quando algo caiu, é o que não pode cair junto.
  • Falha preservando o último estado bom se a atualização automática quebra, o cabeçalho se marca como defasado em vez de esvaziar a tela. Uma página de status em branco no meio de um incidente é a pior saída possível.
  • Grupo assume o estado do filho mais degradado 11 componentes no ar e 1 fora não pode aparecer verde. A barra de 90 dias do grupo usa o PIOR uptime de cada dia — na média, uma queda entre onze saudáveis vira 99,2% e some.
  • Abre sozinha no problema os grupos vêm colapsados, menos os que não estão no ar — decidido no servidor, com `<details>` nativo. Com JavaScript desligado, tudo continua acessível.
  • Verde, âmbar e vermelho não são configuráveis cor, fonte, tema e rodapé são do cliente. As cores de ESTADO não: um cliente pintando "fora do ar" de verde produziria uma página que mente com aparência de calma.

O que ela nunca mostra a URL do alvo, o nome interno do monitor, os ids, a configuração com seus headers de autenticação, o status HTTP, o erro cru, o intervalo e a contagem de checagens. A causa de um incidente passa por um vocabulário fechado — a mensagem original costuma trazer a URL interna junto.

O que sai e o que fica

Sua página, sem o seu mapa.

Quem abre uma página de status está, por definição, com um problema.

Sem terceiros na página

Nenhuma conexão sai para fora

A fonte da marca vai embutida no próprio HTML, não vem do Google Fonts como nos painéis da suíte. Não há upload de logo, porque aceitar imagem externa entregaria o IP de cada visitante a um terceiro. A página não conta a ninguém quem a está visitando.

política
default-src 'none'
font-src    data:
script-src  'sha256-…'

→ sem CDN
→ sem Google Fonts
→ sem logo externo

Sem número comercial

Saúde e sintoma. Nada além disso.

O nome público é sugerido a partir do HOST da URL, nunca do nome interno — payments.acme.com já é público, payments-api-prod não. E o seu CSS é podado em vez de recusado: uma folha de 40 linhas não é rejeitada inteira por uma linha, e a resposta diz o que caiu.

componente público
público:  "API de Pagamentos"
estado:   degradado
uptime:   99,4% (90 dias)

nunca:    url · id · status HTTP
          erro cru · intervalo
          config · nome interno

Sendo justo

Um cron resolve "subiu?".
O difícil é tudo o que vem depois.

O cron que você já tem

Onde ele já resolve sozinho

Um curl a cada minuto, de graça

Ele tem

Você escolhe exatamente o que testar

Ele tem

Roda dentro da sua rede, sem expor nada

Ele tem

Zero fornecedor, zero contrato

Ele tem

Fique com ele se

Um aviso no seu terminal já basta

Para quem só quer saber se subiu, o cron resolve — e continua ao seu lado.

Infrastructure Monitors

Uma coisa só, bem feita

A parte que o cron não faz: guardar o histórico, distinguir lento de fora do ar, não te acordar por um soluço de rede e responder ao seu cliente numa página pública enquanto você conserta.

  • Uptime de API e nota de performance no mesmo painel
  • "No ar porém lento" é um estado, não um alarme falso
  • Incidente só depois de 2 falhas seguidas — e fecha sozinho
  • Alerta por e-mail, Discord, Telegram e webhook, sem segurar a checagem
  • Página de status no SEU domínio, com a sua cara
  • 90 dias de histórico sem varrer milhões de linhas

Model Context Protocol

Seu agente investiga a queda. Sem abrir o painel.

Olhar o gráfico é a parte fácil; o que faltava era responder o que vem depois dele — o que aconteceu, quando começou, e já normalizou. São 18 ferramentas — 9 leem, 9 escrevem — na revisão 2026-07-28, a stateless. O endereço vale para a conta inteira: a chave já cobre todos os seus monitores, então não há id no caminho.

O que o servidor NÃO oferece

  • Apagar monitor ou página de status não existem como ferramenta. Aqui isso pesa mais que nos outros produtos: apagar o monitor apaga junto o histórico que provaria o incidente.
  • Cadastrar canal de alerta ou domínio próprio continuam no painel, onde há uma pessoa confirmando. Um destino de alerta escolhido por agente é superfície de exfiltração — o alerta passaria a sair para um endereço que ninguém escolheu.
  • E o plano continua valendo criar monitor e criar página passam pelo mesmo limite da API. Estourou o plano, a chamada falha dizendo quanto cabe — o agente reporta em vez de insistir.

Autentica das duas formas com a sua mk_ ou com OAuth 2.1 pelo Infrastructure Auth. As duas chegam na mesma conta.

Como o agente entra

Nenhuma chave no arquivo.

O token nasce no navegador, e o escopo decide o que ele enxerga.

OAuth 2.1

Você aprova no navegador, uma vez

Sem header nenhum no comando. Na primeira chamada o servidor responde 401 apontando para o metadata; o cliente descobre o authorization server sozinho, abre o navegador e você aprova. O escopo do token decide o catálogo: com auth:read ele enxerga 9 ferramentas, e as 9 de escrita não aparecem sequer na lista. Em CI, onde não há navegador, a sua mk_ conecta direto.

bash
$ claude mcp add --transport http \
    infrastructure-monitors \
    https://monitors.manager.myinfrastructure.click/mcp

→ 401 WWW-Authenticate
→ descobre o auth server
→ abre o navegador
✓ token com aud= esta conta ▊

O que muda na prática

A pergunta que vem depois do gráfico

O agente não lê a lista crua de checagens — ela repete a mesma informação centenas de vezes. Ele pede os episódios, que dizem quando começou, quando acabou e por quê, e confirma na hora se já normalizou.

conversa
Você: "o checkout caiu ontem
à noite? por quanto tempo?"

→ monitors_list
  acha o id do monitor

→ monitors_get_episodes
  início, fim e causa
  de cada episódio

→ monitors_check_now
  confirma se já normalizou ▊

A régua

Os cinco eixos que decidem a escolha

A mesma tabela em toda página de produto do Infrastructure. Duas linhas aqui são limitações, escritas com a mesma tinta das outras — ela existe para você decidir rápido se o encaixe é seu.

O que é checado

Duas famílias, um painel

Uptime de API por requisição HTTP (a partir de 30s) e auditoria Lighthouse com Chrome real (a partir de 1h). São custos diferentes em ordens de grandeza — ~1 KB contra um navegador inteiro —, e por isso intervalos mínimos diferentes.

De onde sai a checagem

Uma região, sem réplica

Um ponto da rede da Cloudflare por checagem. Isso significa que uma queda de rede entre nós e você aparece como queda sua — quem precisa distinguir incidente global de rota ruim precisa de sondas em vários pontos, e isso hoje não existe aqui.

Quando o alerta dispara

Depois de 2 falhas seguidas

Configurável. Fecha na primeira checagem boa. O envio nunca segura o relógio: timeout curto, sem retentativa, e o incidente fica gravado de qualquer jeito — o painel é a fonte da verdade, o alerta é a conveniência.

Para onde o alerta vai

E-mail, Discord, Telegram e webhook

A lista de e-mails aceita a escala inteira colada de uma vez — vírgula, ponto e vírgula ou uma coluna de planilha. Sem SMS, sem ligação, sem rodízio de plantão: quem está na lista recebe junto. Destinos em rede interna (localhost, 169.254.169.254, faixas privadas) são recusados: a requisição sai da nossa infraestrutura, e aceitá-los seria transformar o serviço em leitor de rede a mando de quem cadastra o canal.

Integração com agente

MCP, 18 ferramentas

Servidor MCP na revisão 2026-07-28, autenticando por OAuth 2.1 — você aprova no navegador, sem chave no arquivo. Oito ferramentas leem e seis escrevem; nenhuma apaga — nem monitor, nem página de status. Cadastrar canal de alerta e domínio próprio também ficam fora, e continuam no painel.

Se algum destes pontos não bater no seu caso, escreva. A gente confere e corrige a linha.

Preço

3, 9 ou 199 monitores

FAQ

As objeções, na ordem em que elas aparecem

Achou um limite que não está escrito aqui?

Fala direto com quem escreveu o código. Se você encontrou onde quebra, a gente quer publicar isso antes do próximo visitante descobrir sozinho.

Cole a URL, escolha o intervalo. Leva um minuto.

Sem cartão. Se o seu serviço cair hoje à noite, quem te avisa é o alerta — não o seu cliente.