
Servidor sem monitoramento só avisa que caiu quando alguém reclama. Com o Node Exporter, cada host expõe métricas do Linux; o Prometheus as coleta e guarda como séries temporais para consulta e alerta. Este roteiro usa pacotes do Ubuntu onde eles existem, evita expor métricas na internet e valida cada etapa antes de seguir.
O desenho: quem coleta e quem expõe
O Node Exporter escuta no host monitorado, normalmente na porta 9100. O Prometheus, no servidor central, faz o scrape HTTP em intervalos regulares; ele não recebe métricas por push nesse cenário. Para poucos servidores, static_configs é a forma canônica de declarar alvos. Quando a frota crescer, prefira descoberta de serviços ou arquivos de alvos em vez de editar a configuração principal a cada máquina.
Instale o Node Exporter pelo Ubuntu
Em Ubuntu, o pacote da distribuição integra serviço, usuário e atualizações de segurança. Isso evita baixar um binário com versão fixa e esquecê-lo depois. Em cada servidor monitorado:
sudo apt update
sudo apt install -y prometheus-node-exporter
sudo systemctl enable --now prometheus-node-exporter
sudo systemctl status prometheus-node-exporter --no-pager
curl -fsS http://localhost:9100/metrics | head
Se você precisar do binário upstream por causa de um recurso específico, confira a arquitetura, a assinatura/checksum e a versão na página oficial de releases antes de instalar. O projeto recomenda consultar node_exporter --help para os coletores e flags disponíveis.
Restrinja a porta 9100
/metrics revela dados do host e não deve ficar aberto para a internet. Permita apenas o IP ou a rede do servidor Prometheus. No exemplo, substitua 10.0.0.10 pelo IP real do seu coletor:
sudo ufw allow from 10.0.0.10 to any port 9100 proto tcp
sudo ufw status numbered
Em redes sem perímetro confiável, use TLS e autenticação do exporter ou uma rede privada/VPN. Autenticação básica sem TLS expõe a senha na rede.
Instale o Prometheus e adicione os alvos
sudo apt update
sudo apt install -y prometheus
sudo systemctl enable --now prometheus
sudo systemctl status prometheus --no-pager
No servidor de monitoramento, adicione apenas este job à lista scrape_configs já existente em /etc/prometheus/prometheus.yml. Não substitua o arquivo inteiro: o pacote costuma trazer o job do próprio Prometheus.
- job_name: linux
scrape_interval: 30s
static_configs:
- targets:
- web1.exemplo.com.br:9100
- db1.exemplo.com.br:9100
labels:
ambiente: producao
Valide a sintaxe antes de reiniciar. Uma configuração inválida não deve virar uma janela sem monitoramento:
sudo promtool check config /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus
curl -fsS http://localhost:9090/-/ready
Open http://IP_DO_PROMETHEUS:9090/targets. Os dois alvos devem aparecer como UP. O endpoint /-/ready retorna 200 quando o Prometheus está pronto para atender consultas.
Consultas PromQL que respondem perguntas reais
# alvo está acessível? 1 = UP, 0 = falhou
up{job="linux"}
# CPU ocupada por host, média dos últimos 5 minutos
100 - (avg by (instance) (rate(node_cpu_seconds_total{job="linux",mode="idle"}[5m])) * 100)
# memória usada, sem contar cache reaproveitável
100 * (1 - node_memory_MemAvailable_bytes{job="linux"} / node_memory_MemTotal_bytes{job="linux"})
# espaço usado em sistemas de arquivos reais
100 * (1 - node_filesystem_avail_bytes{job="linux",fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes{job="linux",fstype!~"tmpfs|overlay"})
node_load1 mede carga, não porcentagem de CPU. Compare-o com a quantidade de CPUs do host antes de concluir que existe saturação. Para contadores, como CPU, use rate(); aplicar rate() em uma métrica que já é um valor instantâneo produz uma leitura sem sentido.
Do gráfico ao alerta
Grafana melhora a visualização, mas o alerta deve nascer de uma regra com duração e severidade, encaminhada pelo Alertmanager. Comece por indisponibilidade, disco próximo do limite e pressão de memória; evite alertar em cada pico momentâneo. Para a comparação com monitoramento tradicional, veja a história do Nagios and the história do Zabbix. Se seus hosts são provisionados por automação, use também o guia de Ansible para repetir a instalação e as regras sem configuração manual.
Sources: configuração do Prometheus; guia de PromQL; modelo de segurança; Node Exporter.