Automação

Automatizando monitoramento de servidores com Python e Prometheus

Automatizando monitoramento de servidores com Python e Prometheus

Servidores sem monitoramento são bombas-relógio: problemas se acumulam silenciosamente até explodir em incidentes que afetam clientes e receita. Prometheus é o padrão open-source para monitoramento e alertas. Combinado com Python para exporters customizados e Grafana para dashboards, você tem visibilidade completa da saúde da sua infraestrutura e aplicação.

Arquitetura do Prometheus

Prometheus funciona no modelo pull: ele scrapa métricas de endpoints HTTP a intervalos regulares (geralmente 15-30 segundos). Cada aplicação expõe um endpoint /metrics com métricas em formato texto simples. O Prometheus armazena essas métricas em um banco de dados de séries temporais otimizado para queries de range (os últimos 5 minutos, a última hora, os últimos 7 dias) e agregações (média, percentil, soma, taxa de mudança).

Alertmanager recebe alertas disparados por regras Prometheus e roteia para os canais certos: Slack para alertas informativos, PagerDuty ou OpsGenie para críticos que precisam acordar alguém, email para resumos. Regras de silenciamento e agrupamento evitam fadiga de alertas — múltiplos alertas do mesmo incidente são agrupados em uma única notificação.

Instrumentando aplicações Python

A biblioteca prometheus_client para Python expõe métricas com quatro tipos primitivos. Counter para valores que só crescem: total de requests, total de erros, bytes transferidos. Gauge para valores que aumentam e diminuem: memória em uso, connections ativas, temperatura. Histogram para distribuições: latência de requests em buckets (0-100ms, 100-500ms, 500ms-1s, >1s). Summary similar ao Histogram mas calcula percentis no client.

Para aplicações Flask ou FastAPI, middleware automático adiciona métricas de request count, latência e status code sem modificar nenhum endpoint. Em 5 linhas de código, você tem observabilidade HTTP completa. Para métricas de negócio customizadas, crie Counters e Gauges para o que importa: pedidos processados, valor total de transações, filas de processamento, e qualquer métrica específica do seu domínio.

Exporters customizados

Para monitorar sistemas que não expõem métricas nativas (bancos MySQL legados, hardware customizado, APIs de terceiros), crie exporters Python. Um exporter é um script que coleta métricas de qualquer fonte e as expõe no formato Prometheus. Exemplo: um exporter que consulta a API do seu gateway de pagamentos a cada minuto e expõe métricas de transações bem-sucedidas, falhas, e latência de processamento.

Prometheus tem uma comunidade enorme de exporters prontos: node_exporter para métricas de servidor (CPU, memória, disco, rede), postgres_exporter para PostgreSQL, mysqld_exporter para MySQL, blackbox_exporter para probes HTTP/TCP/ICMP, e centenas de outros. Antes de escrever um exporter customizado, verifique se já existe um que atende sua necessidade.

Dashboards com Grafana

Grafana conecta ao Prometheus como datasource e permite criar dashboards visuais com gráficos de séries temporais, gauges, tabelas e mapas de calor. A comunidade compartilha dashboards prontos no grafana.com/dashboards — importe um dashboard para Node Exporter e instantaneamente visualize CPU, memória, disco e rede dos seus servidores com gráficos profissionais.

Dashboards eficazes seguem princípios claros: coloque os indicadores mais críticos no topo, use cores consistentes (verde=OK, amarelo=atenção, vermelho=crítico), limite a 6-8 painéis por dashboard para evitar sobrecarga cognitiva, e adicione anotações de deploys no gráfico de timeline para correlacionar mudanças de código com mudanças de comportamento.

Alertas que funcionam

Alertas ruins são piores que nenhum alerta: geram fadiga, são ignorados, e quando algo realmente grave acontece, ninguém reage. Bons alertas são acionáveis (dizem o que fazer), urgentes (representam impacto real no usuário), e não-redundantes (não disparam 5 alertas para o mesmo problema). Alerte sobre indicadores focados no usuário: error rate acima de 1%, latência P99 acima do SLA, e taxa de conversão caindo abruptamente. Evite alertar sobre causa raiz (CPU alta, disco cheio) em favor de alertar sobre impacto no serviço — muitas vezes CPU alta é normal e não afeta usuários.

Tem um projeto em mente?

Somos especialistas em transformar ideias em produtos digitais. Apps, sites, automações e IA — vamos construir juntos.

Resposta rápida Orçamento sem compromisso +100 projetos entregues
Compartilhar: