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