Configurando grafite rio de janeiro para monitoramento real
Graphite é um sistema de monitoramento que coleta métricas de servidores e armazena em séries temporais. O motor principal usa Django, Carbon como receptor de dados, Whisper como banco de dados e uma camada de renderização via Flask ou Django view. Vou explicar como montar do zero e os problemas que aparecem no dia a dia.
O que é grafite rio de janeiro e por que você provavelmente não deveria usar ele hoje
O Graphite nasceu na Orbitz em 2006. É leve, gratuito e funciona bem para monitorar Centenas de hosts com métricas simples de CPU, memória e disco. Mas tem limitações sérias: não escala bem acima de milhares de métricas por segundo, a consulta em tempo real pode travar o banco Whisper se você não ajustar os parâmetros corretos, e a interface gráfica já parece relicária. Se você está começando agora, considere Prometheus com Grafana. Mas se o seu ambiente exige Graphite — legado, integração com ferramentas específicas, ou restrição orçamentária — vou mostrar como instalar de verdade.
Instalação passo a passo
Você precisa de um servidor Linux rodando Ubuntu 22.04 ou Debian 12. Instale as dependências: sudo apt update && sudo apt install -y python3-django python3-pip git curl gnupg2 lsb-release
Adicione o repositório do Graphite: curl -sL https://deb.nodesource.com/setup_20.x | sudo bash -
Instale o Graphite-web: sudo apt install -y graphite-web carbon-cache
Configure o banco de dados. O padrão usa SQLite, mas para produção mude para PostgreSQL: Edite /etc/graphite-web/local_settings.py e substitua a configuração de banco:
DATABASES = {
'default': {
'NAME': 'graphite',
'ENGINE': 'django.db.backends.postgresql',
'USER': 'graphite',
'PASSWORD': 'sua_senha_aqui',
'HOST': 'localhost',
'PORT': '5432'
}
} Crie o banco no PostgreSQL:
sudo -u postgres psql -c "CREATE DATABASE graphite;"
sudo -u postgres psql -c "CREATE USER graphite WITH PASSWORD 'sua_senha_aqui';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE graphite TO graphite;" Execute a migração do Django:
sudo graphite-manage migrate --run-syncdb Configure o Carbon para receber métricas. Edite /etc/carbon/carbon.conf e garanta que ENABLE_CACHE = true. No arquivo /etc/carbon/storage-schemas.conf, defina GRANULARIDADE:
[default_1min_for_1day]
pattern = \*
retentions = 60:1d
Isso significa que cada ponto será salvo a cada 60 segundos, com retenção de 1 dia. Ajuste conforme sua necessidade. Métricas com alta frequência consomem muito espaço no disco Whisper rapidamente.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Inicie os serviços: sudo systemctl enable carbon-cache
sudo systemctl start carbon-cache
sudo systemctl enable apache2
sudo systemctl start apache2
Acesse http://SEU_SERVER/graphite e faça login com admin/admin (mude imediatamente).
O problema que ninguém conta sobre Whisper
Eu configurei um cluster de 300 servidores com 500 métricas cada, collectando a cada 30 segundos. Depois de 48 horas, o serviço Carbon parou de aceitar dados. O log mostrava erros de I/O no disco. O problema: Whisper usa arquivos compactados com compressão LZMA. Quando muitos arquivos são escritos simultaneamente, o sistema de arquivos trava. Minha solução foi migrar para Graphite-API com backend Redis, que elimina completamente o problema de concorrência de disco. Se seu volume for alto (mais de 10k métricas/seg), não use Whisper. Use InfluxDB ou TimescaleDB no lugar.
Métricas reais funcionando
Para enviar dados, use: echo "local.host.cpu.usage 75 $(date +%s)" | nc -w 1 localhost 2003
Isso envia uma métrica de CPU para o Carbon. A porta 2003 é o protocolo plaintext do Carbon. Existe também a porta 2004 para o protocolo pickle, que é mais rápido mas menos debugável. No dashboard, você verá a linha aparecer após alguns segundos. Se não aparecer, verifique se o serviço Carbon está rodando com sudo systemctl status carbon-cache e se as permissões do diretório /var/lib/graphite-carbon/ estão corretas para o usuário carbon.
Manutenção e troubleshooting
Os logs ficam em: /var/log/graphite-carbon/carbon-cache.log — métricas recebidas e erros do cache
/var/log/apache2/graphite.log — requisições HTTP e erros de renderização Se a interface fica lenta, verifique quantos arquivos Whisper existem. Um comando útil:
find /var/lib/graphite-carbon/ -name "*.wsp" | wc -l Se o número passar de 50 mil, você tem um problema de organização de métricas. Padronize o namespace: sempre comece com algo como nome_do_servidor.component.tipo.métrica. Sem namespace, as consultas ficam infinitamente lentas porque o Graphite varre todo o diretório.
Para rotação de métricas antigas, use o comando do Carbon com sudo carbon-cache.py stop, execute sudo find /var/lib/graphite-carbon/ -name "*.wsp" -mtime +30 -delete, e reinicie. Isso libera espaço mas apaga dados permanentemente.
Alternativas que funcionam melhor
Para ambientes novos, recomendo Prometheus com Grafana. A consulta é mais rápida, a curva de aprendizado é menor, e a comunidade é maior. O Graphite ainda é útil para projetos legados ou quando você precisa de algo extremamente simples sem a complexidade de um ecossistema inteiro. Se você já tem Graphite rodando e quer melhorar performance, considere migrar para MetricFire ou Datadog, que oferecem dashboards prontos sem a dor de cabeça de configurar alertas manualmente.