Monitoramento de servidores com Node Exporter (ARM64)
TLDR: Como instalar o Node Exporter em um servidor novo da infraestrutura e registrá-lo no Prometheus, para que apareça automaticamente nos dashboards do Grafana.
Pré-requisitos
- Acesso SSH ao servidor novo e ao servidor de monitoramento (
monitor-01) - Permissão para editar o security group do servidor novo
- Todos os servidores da infraestrutura usam ARM64 (aarch64)
Arquitetura atual — stack LGTM (Grafana, Loki, Prometheus, Node Exporter, Alloy):
``` monitor-01 ├ Prometheus ├ Grafana └ Loki
servidores └ node_exporter → envia métricas para Prometheus ```
Passos
1. Verificar a arquitetura do servidor
bash
uname -m
Resultado esperado: aarch64.
2. Instalar o Node Exporter (ARM64)
```bash cd ~
wget https://github.com/prometheus/node_exporter/releases/download/v1.10.2/node_exporter-1.10.2.linux-arm64.tar.gz
tar xvf node_exporter-1.10.2.linux-arm64.tar.gz
sudo mv node_exporter-1.10.2.linux-arm64/node_exporter /usr/local/bin/node_exporter
sudo chmod +x /usr/local/bin/node_exporter ```
3. Criar o serviço systemd
bash
sudo vi /etc/systemd/system/node_exporter.service
Conteúdo:
```ini [Unit] Description=Node Exporter After=network.target
[Service] User=root Group=root Type=simple ExecStart=/usr/local/bin/node_exporter
[Install] WantedBy=multi-user.target ```
4. Ativar o serviço
bash
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporter
Resultado esperado: active (running).
5. Testar as métricas localmente
bash
curl http://127.0.0.1:9100/metrics | head
Se aparecerem métricas, a instalação está correta.
6. Descobrir o IP privado do servidor
bash
hostname -I
Exemplo: 172.31.xx.xx.
7. Liberar a porta no security group
Liberar TCP 9100 com origem no security group do monitor-01.
Nunca abrir a porta 9100 para a internet.
8. Adicionar o servidor no Prometheus
No servidor monitor-01, editar ~/monitoring/prometheus/prometheus.yml e adicionar:
yaml
- targets: ["172.31.xx.xx:9100"]
labels:
instance: nome-do-servidor
role: backend
env: production
Exemplo:
yaml
- targets: ["172.31.40.12:9100"]
labels:
instance: onion-backend-03
role: backend
env: production
9. Reiniciar o Prometheus
No servidor de monitoramento:
bash
cd ~/monitoring
docker compose restart prometheus
10. Confirmar que o servidor está sendo monitorado
bash
curl http://localhost:9090/api/v1/targets
O servidor deve aparecer com health: up.
11. Validar no Grafana
Abrir https://monit.onovoinconsciente.com.br e selecionar o dashboard Node Exporter Full. O novo servidor aparece automaticamente.
Convenção de nomes
| Instância | Exemplos |
|---|---|
| Nomes de servidor | onion-backend-01, onion-backend-02, onion-worker-01, onion-tasks-01, onion-beat |
| Labels padrão | instance, role, env |
Segurança
Somente o Grafana é público. Internamente, as portas abaixo são acessíveis apenas pela rede privada da VPC:
| Serviço | Porta |
|---|---|
| Prometheus | 9090 |
| Loki | 3100 |
| Node Exporter | 9100 |
Troubleshooting
| Sintoma | Comando |
|---|---|
| Serviço não sobe | systemctl status node_exporter |
| Investigar falha | journalctl -u node_exporter -n 50 |
| Endpoint não responde | curl http://localhost:9100/metrics |
| Target não aparece no Prometheus | conferir a porta 9100 no security group e reiniciar o Prometheus |