Sentinella: o monitor que vigia o meu servidor e me avisa pelo Telegram

A ferramenta que vigia o servidor onde correm os meus sites e as minhas aplicações: a cada minuto verifica sites, certificados, DNS, contentores e serviços, cópias de segurança, memória e publicações, e quando algo avaria escreve-me pelo Telegram, uma só vez, e de novo quando tudo volta ao normal. Só lê, sem privilégios. O painel experimenta-se com um servidor inventado.

No meu servidor correm cerca de vinte sites e aplicações: os dos clientes, sites de demonstração e as minhas próprias aplicações. O **Sentinella** («sentinela» em italiano) vigia-os, e uso-o mesmo: não é a demonstração de um negócio inventado, embora daqui se experimente com um servidor inventado.

**O que faz**

- **Os sites**, a cada minuto: código, tempo de resposta e conteúdo da sua página de verificação, e na mesma ligação o certificado, com lembretes a 30, 14 e 7 dias. - **O DNS**, perguntado aos servidores do fornecedor: cada nome tem de levar ao servidor, sem um endereço IPv6 a mais, uma avaria que já me tinha acontecido. - Os **contentores** Docker onde correm as aplicações, e os **serviços e timers** do servidor: o que está parado, o que reinicia sem parar ou fica sem memória, e as cópias noturnas das bases de dados: se correram bem, se estão atrasadas e que aplicações não têm cópia. - **Memória, swap, discos e carga**, e a memória de cada contentor, lidos do sistema sem instalar nada. - As **publicações** das GitHub Actions, que aparecem como marcas no gráfico de tempos de cada site.

Quando algo avaria, escreve-me pelo Telegram uma só vez, e de novo quando tudo volta ao normal, com a duração. As avarias que começam juntas dão uma só mensagem; à noite as mensagens chegam sem som, e durante uma atualização ficam em pausa.

**A parte difícil: a segurança.** Uma ferramenta que vê o servidor inteiro não pode tornar-se um mapa para quem o ataque. O Sentinella **só lê**: corre num contentor sem privilégios e só de leitura, e não pode reiniciar nada; vê o Docker através de um proxy que deixa passar a lista de contentores e os seus eventos, nunca a inspeção, que daria as palavras-passe das outras aplicações. O painel está protegido por palavra-passe e pelo código de uma aplicação de autenticação. A **página de estado pública** tem uma lista fechada de campos: diz apenas se cada site funciona e a disponibilidade de 30 dias, e um teste automático falha se lá aparecer uma porta ou um caminho. E como um monitor no mesmo servidor não consegue avisar que o servidor caiu, a cada minuto envia um sinal ao Healthchecks.io, que me avisa de fora.

A memória do servidor é partilhada com cerca de vinte aplicações: o Sentinella tem um teto de 160 MB, e guarda as verificações numa linha por site e por hora.

A demonstração corre no navegador, num servidor inventado com nove sites: ao fim de um minuto e meio um site deixa de responder, e vê-se o incidente e a mensagem que teria chegado pelo Telegram.

Vue 3 e TypeScript com Nuxt UI, Fastify e PostgreSQL, em contentores Docker sobre Debian. Cada alteração passa por 402 testes automáticos; cada publicação constrói a imagem no servidor, copia antes a base de dados e volta sozinha à versão anterior se a nova não responder.

Conceção, desenvolvimento full-stack e entrada em produção · 2026

Vue.js, Fastify, PostgreSQL, Docker

Ver o site

Andrea Coppetta