Netdata: Monitorização em Tempo Real com Zero Config para PME
Neste artigo
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_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.
Artigos relacionados no kbase.pt