Netdata: Monitorização em Tempo Real com Zero Config para PME

1. Introdução

Para uma PME com 3 a 15 servidores, configurar um stack de monitorização tradicional (Prometheus + Grafana + Alertmanager) pode exigir dias de trabalho. Cada métrica precisa de ser definida, cada painel construído manualmente, cada regra de alerta escrita do zero. O Netdata inverte esta lógica: instala-se com um único comando e, em menos de 60 segundos, já está a mostrar painels interactivos com milhares de métricas por segundo.

O Netdata é um agente de monitorização código aberto que recolhe métricas de sistema (CPU, memória, disco, rede), serviços (Nginx, MySQL, Docker, PostgreSQL) e aplicações, tudo em tempo real com granularidade de 1 segundo. A grande diferença face ao Prometheus é a zero configuração: após a instalação, o Netdata detecta automaticamente centenas de serviços e cria painels prontos a usar, sem ficheiros YAML, sem exportadores separados, sem configuração manual.

ℹ Porquê o Netdata para PME?

O Netdata foi desenhado para ser instalado em cada nó individualmente. Cada agente é autónomo: recolhe, armazena e visualiza métricas localmente. Isto significa que mesmo sem Netdata Cloud, já tem painels funcionais por servidor. O Netdata Cloud adiciona a camada de agregação multi-server opcional.

Feature Netdata Prometheus + Grafana
Configuração inicial 1 comando (zero config) YAML + exportadores + painels
Granularidade 1 segundo 15 segundos (típico)
Painels Automáticos (800+ colectores) Manuais
Alertas Pré-configurados Regras manuais
Custo Gratuito (código aberto) Gratuito (código aberto)

O projecto é mantido pela Netdata Inc. e está disponível no GitHub sob licença GPL v3. Para uma PME que precisa de visibilidade imediata sobre a sua infra-estrutura sem investir semanas em configuração, é uma das ferramentas mais rápidas de implementar.

2. Instalar Netdata

A instalação do Netdata em Linux faz-se através do script kickstart.sh, que detecta automaticamente a distribuição e escolhe o melhor método de instalação — pacotes nativos (preferencial), binário estático (fallback) ou compilação a partir do código-fonte. Em qualquer distribuição Linux moderna, o processo é idêntico.

2.1 Instalação com kickstart.sh

O comando abaixo descarrega e executa o script de instalação oficial. É recomendado executar como root ou com sudo:

# Instalar Netdata com o script kickstart oficial
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh

Após a instalação, o agente arranca automaticamente e fica disponível em http://servidor:19999. O script também instala um cron job de auto-actualização (a menos que seja desactivado com a flag --disable-auto-updates).

2.2 Instalação em Docker

Para ambientes containerizados, o Netdata oferece uma imagem Docker oficial que monitoriza o hospedeiro e os contentores simultaneamente:

docker run -d --name=netdata \
  -p 19999:19999 \
  -v netdataconfig:/etc/netdata \
  -v netdatalib:/var/lib/netdata \
  -v netdatacache:/var/cache/netdata \
  -v /etc/passwd:/host/etc/passwd:ro \
  -v /etc/group:/host/etc/group:ro \
  -v /proc:/host/proc:ro \
  -v /sys:/host/sys:ro \
  -v /etc/os-release:/host/etc/os-release:ro \
  --cap-add SYS_PTRACE \
  --security-opt apparmor=unconfined \
  netdata/netdata

2.3 Verificar a instalação

Depois de instalado, verificar o estado do serviço e a versão:

# Verificar estado do serviço
systemctl status netdata

# Verificar versão instalada
netdata -V

# Testar o endpoint local
curl -s http://localhost:19999/api/v1/info | python3 -m json.tool

✓ Instalação concluída com sucesso

Se o comando curl devolver um JSON com informação do sistema, o agente está a funcionar. Abrir http://ip-do-servidor:19999 no navegador para ver o painel.

3. Painels em Tempo Real

O painel do Netdata é acessível via navegador na porta 19999 e actualiza métricas a cada segundo. Não há refresh manual — os gráficos animam em tempo real, com zoom interactivo e navegação temporal. Por defeito, o agente detecta e monitoriza automaticamente mais de 800 colectores, incluindo sistema, contentores e aplicações.

3.1 Métricas de sistema

Sem qualquer configuração adicional, o painel mostra as seguintes métricas de sistema:

Funcionalidade Métricas disponíveis Granularidade
CPU Utilização por núcleo, interrupções, context switches, softirqs 1 segundo
Memória RAM, swap, cache, buffers, páginas 1 segundo
Disco I/O por dispositivo, latência, espaço, inodes 1 segundo
Rede Tráfego por interface, pacotes, erros, TCP connections 1 segundo
Docker CPU, memória, I/O e rede por contentor 1 segundo

3.2 Descoberta automática de serviços

O Netdata detecta automaticamente serviços em execução e começa a recolher métricas sem configuração. Se o Nginx estiver a correr, o Netdata mostra pedidos por segundo, tempo de resposta e códigos de estado. Se o MySQL estiver activo, mostra consultas, ligações e cache hit ratio. Se o Docker estiver instalado, mostra métricas por contentor. Tudo sem um único ficheiro de configuração.

💡 Dica

Para ver a lista completa de colectores activos e disponíveis, aceder a http://servidor:19999/api/v1/collectors no navegador. Este endpoint mostra quais colectores estão activos, quantas métricas recolhem e o seu estado.

3.3 Navegação no painel

O painel organiza-se por secções colapsáveis no menu lateral esquerdo. Cada secção agrupa métricas relacionadas (Sistema, Discos, Rede, Aplicações). Os gráficos suportam zoom (arrastar sobre uma área), pan (arrastar com botão direito) e reset (duplo clique). Por baixo de cada gráfico, a barra temporal mostra o intervalo visível e permite navegar para trás no tempo.

4. Configurar Alertas

O Netdata inclui um sistema de alertas distribuído que avalia condições contra métricas em tempo real. Ao contrário de sistemas tradicionais onde os alertas são centralizados, o Netdata avalia alertas directamente em cada agente — na borda da infra-estrutura. Isto reduz latência e elimina pontos únicos de falha.

4.1 Alertas pré-configurados

Logo após a instalação, o Netdata já vem com dezenas de alertas pré-configurados que cobrem os cenários mais comuns:

  • CPU acima de 90% durante 10 minutos
  • Memória RAM com utilização superior a 90%
  • Espaço em disco abaixo de 20% livre
  • Elevado tráfego de rede anómalo
  • Contentores Docker parados ou em reinício contínuo
  • Latência de disco elevada

4.2 Criar um alerta personalizado

Os alertas são definidos em ficheiros de configuração com sintaxe própria. O exemplo abaixo cria um alerta que dispara quando a utilização de CPU excede 85% durante 5 minutos:

# /etc/netdata/health.d/cpu.conf

alarm: cpu_utilization_alert
on: system.cpu
lookup: average -5m percentage of user,system
units: %
every: 1m
warn: $this > 85
crit: $this > 95
info: Utilizacao de CPU acima do limite definido
to: sysadmin

Após guardar o ficheiro, recarregar a configuração de alertas com:

# Recarregar configuração de alertas sem reiniciar o agente
netdatacli reload-health

4.3 Notificações

O Netdata suporta nativamente múltiplos canais de notificação. A configuração faz-se no ficheiro /etc/netdata/health_alarm_notify.conf:

Canal Parâmetro Descrição
Email EMAIL_SENDER, DEFAULT_RECIPIENT SMTP nativo, sem dependências externas
Slack SLACK_WEBHOOK_URL Webhook incoming do Slack
Telegram TELEGRAM_BOT_TOKEN Bot Token do BotFather
Discord DISCORD_WEBHOOK_URL Webhook do canal Discord
PagerDuty PD_SERVICE_KEY Integração com escalonamento

⚠ Atenção

Após alterar health_alarm_notify.conf, executar netdatacli reload-health para aplicar as alterações sem reiniciar o agente.

5. Netdata Cloud (multi-server)

O Netdata Cloud é o serviço que transforma múltiplos agentes Netdata independentes numa solução de observabilidade unificada. Importante: o Netdata Cloud não centraliza o armazenamento de métricas — cada agente continua a armazenar localmente. O Cloud funciona como um plano de controlo que agrega visualização, gestão e alertas de todos os nós num único interface.

5.1 Spaces e Rooms

A organização no Netdata Cloud baseia-se em dois conceitos: Spaces e Rooms. Um Space é o ambiente principal de colaboração onde se agrupam equipas e nós. Cada nó só pode pertencer a um Space. Dentro de um Space, os Rooms funcionam como painels organizacionais que agrupam nós por critérios como ambiente (produção, preparação), localização ou tipo de serviço. Um nó pode pertencer a múltiplos Rooms.

5.2 Ligar um agente ao Cloud

Após criar uma conta em app.netdata.cloud, o processo de ligação (claim) de um agente faz-se com um token gerado pelo interface web:

# Ligar agente ao Netdata Cloud (claim)
# Substituir TOKEN pelo token gerado em app.netdata.cloud
netdata-claim.sh --token=TOKEN --rooms=ROOM_ID

A partir desse momento, o nó aparece no Space do Netdata Cloud com todos os painels acessíveis remotamente, sem VPN e sem configurar portas adicionais no firewall. A comunicação entre agente e Cloud é encriptada via Agent-Cloud Link (ACLK).

ℹ RBAC no Netdata Cloud

O Netdata Cloud inclui controlo de acesso baseado em papéis (RBAC). É possível atribuir papéis de Admin, Manager ou Viewer a membros da equipa, controlando quem pode ver métricas, configurar alertas ou gerir nós. Isto é essencial para PME com equipas de sysadmin e desenvolvimento distintas.

6. Integração com Grafana

Embora o Netdata tenha painels nativos excelentes, muitas PME já utilizam Grafana como painel central de visualização. O Netdata pode exportar métricas para bases de dados externas de séries temporais, incluindo Prometheus, InfluxDB, Graphite e ElasticSearch. Para integração com Grafana, o caminho mais comum é via Prometheus como intermediário.

6.1 Prometheus como fonte para Grafana

O Netdata expõe um endpoint compatível com Prometheus em http://servidor:19999/api/v1/allmetrics?format=prometheus. Para que o Prometheus faça scrape destas métricas, adicionar a configuração:

# /etc/prometheus/prometheus.yml

scrape_configs:
  - job_name: netdata
    metrics_path: /api/v1/allmetrics
    params:
      format: [prometheus]
    static_configs:
      - targets: ['servidor-netdata:19999']

No Grafana, adicionar Prometheus como data source e criar painels com as métricas do Netdata. As métricas usam o prefixo netdata_ por defeito, tornando fáceis de filtrar.

6.2 Remote write (push)

Alternativamente, o Netdata pode fazer push de métricas directamente para o Prometheus via remote write API, sem necessidade de scrape. Para isso, configurar o conector no ficheiro /etc/netdata/exporting.conf:

# /etc/netdata/exporting.conf

[prometheus_remote_write]
    enabled = yes
    destination = http://prometheus:9090/api/v1/write
    data source = average
    prefix = netdata
    update every = 10

ℹ Quando usar Grafana vs painel nativo?

O painel nativo do Netdata é ideal para diagnóstico em tempo real e troubleshooting de um servidor específico. O Grafana faz mais sentido quando se precisa de cruzar métricas de fontes diferentes (Netdata + registos + business metrics) num único painel, ou quando a equipa já tem painels Grafana consolidados.

7. Erros Comuns e Lista de verificação

7.1 Erros comuns

Problema Causa Solução
Painel inacessível na porta 19999 Firewall a bloquear a porta Abrir porta 19999: ufw allow 19999
Métricas de Docker não aparecem Socket do Docker inacessível Adicionar utilizador netdata ao grupo docker
Nó não aparece no Netdata Cloud Token expirado ou claim falhado Verificar /var/log/netdata/error.log e regenerar token
Alertas não disparam Configuração não recarregada Executar netdatacli reload-health
Alto consumo de RAM pelo agente Retenção de métricas excessiva Reduzir history em netdata.conf

7.2 Lista de verificação de implementação

✓ Lista de verificação para PME

✓ Instalar Netdata em todos os servidores com kickstart.sh
✓ Verificar que o painel está acessível na porta 19999
✓ Confirmar que os colectores de Docker e serviços activos estão a recolher
✓ Abrir porta 19999 apenas para IPs internos (não expor publicamente)
✓ Ligar todos os agentes ao Netdata Cloud com tokens individuais
✓ Criar Rooms por ambiente (produção, preparação, desenvolvimento)
✓ Configurar canais de notificação (e-mail, Slack ou Telegram)
✓ Rever alertas pré-configurados e ajustar limiares à realidade da PME
✓ Configurar retenção de métricas adequada ao espaço em disco disponível
✓ Se usar Grafana, configurar export para Prometheus ou remote write

⚠ Não expor o painel publicamente

O painel do Netdata na porta 19999 não tem autenticação por defeito. Se o servidor estiver acessível pela Internet, restringir o acesso no firewall ou configurar autenticação via ficheiro de configuração. Em PME, o acesso deve limitar-se à rede interna ou via VPN.