Skip to main content

O que observar

🔍 GUIA DO QUE OBSERVAR - OBSERVABILIDADE MEMUDE

Portal MeMude | Guia de Monitoramento e Observabilidade


📊 VISÃO GERAL DO QUE ESTÁ SENDO MONITORADO

✅ FUNCIONANDO ATUALMENTE

  • 📈 Métricas Prometheus (self + Traefik)
  • 📝 Logs completos (todos containers + Traefik access)
  • 🎯 Targets básicos operacionais
  • 🔒 Autenticação e SSL

⚠️ LIMITAÇÕES ATUAIS

  • Docker Swarm Service Discovery (erro permissão)
  • Métricas de sistema (Node Exporter ausente)
  • Métricas detalhadas containers (cAdvisor ausente)
  • ⚠️ Dashboards personalizados (não configurados)

🎯 MÉTRICAS DISPONÍVEIS (PROMETHEUS)

✅ Self-Monitoring (Prometheus)

  • Target: prometheus (1/1 up)
  • Métricas disponíveis:
    prometheus_build_info              # Informações da versão
    prometheus_config_last_reload_successful  # Status recarregamento config
    prometheus_tsdb_head_samples_appended_total  # Samples processadas
    prometheus_rule_evaluation_duration_seconds  # Performance das rules
    up{job="prometheus"}               # Status do Prometheus
    

✅ Traefik (Proxy/Load Balancer)

  • Target: traefik (1/1 up)
  • Métricas disponíveis:
    traefik_http_requests_total        # Total de requests HTTP
    traefik_http_request_duration_seconds  # Latência das requests
    traefik_http_requests_per_second   # RPS (requests per second)
    traefik_backend_open_connections   # Conexões ativas
    traefik_backend_request_duration_seconds  # Performance backend
    

❌ Docker Swarm (Não Funcionando)

  • Target: docker-swarm-nodes (❌ erro)
  • Target: docker-swarm-services (❌ erro)
  • Problema: Permission denied no Docker socket
  • Métricas perdidas: CPU, memória, disco, rede dos nós

📝 LOGS DISPONÍVEIS (LOKI)

✅ Logs de Containers (Docker)

  • Job: docker
  • Coleta: Service Discovery automático
  • Labels disponíveis:
    container_name    # Nome do container
    service_name      # Nome do serviço Docker Swarm
    image_name        # Imagem Docker
    node_name         # Nó do Swarm
    

Queries úteis:

{job="docker"}                                    # Todos logs containers
{job="docker", container_name="memude_app"}      # Container específico
{job="docker"} |= "ERROR"                        # Filtrar por ERROR
{job="docker"} |= "status=500"                   # Filtrar 500s

✅ Logs de Acesso (Traefik)

  • Job: traefik_access
  • Arquivo: /var/log/traefik/access.log
  • Formato: JSON estruturado

Queries úteis:

{job="traefik"}                                   # Todos access logs
{job="traefik"} | json | StatusCode >= 400       # Erros HTTP 4xx/5xx
{job="traefik"} | json | Duration > 5000         # Requests lentas (>5s)
{job="traefik"} | json | ClientAddr="1.2.3.4"   # IP específico

🚨 PRINCIPAIS INDICADORES A OBSERVAR

1. SAÚDE DO SISTEMA (Health Checks)

Prometheus Targets:

up                                    # Status de todos targets (1=up, 0=down)
up{job="prometheus"} == 0             # Alerta: Prometheus down
up{job="traefik"} == 0                # Alerta: Traefik down

2. PERFORMANCE HTTP (Traefik)

Latência:

histogram_quantile(0.95, traefik_http_request_duration_seconds_bucket)  # P95 latency
traefik_http_request_duration_seconds_sum / traefik_http_request_duration_seconds_count  # Latência média

Volume de Requests:

rate(traefik_http_requests_total[5m])                    # RPS por 5min
increase(traefik_http_requests_total[1h])                # Requests última hora
sum by (code) (rate(traefik_http_requests_total[5m]))    # RPS por status code

Erros HTTP:

rate(traefik_http_requests_total{code=~"4..|5.."}[5m])   # Taxa erros 4xx/5xx
rate(traefik_http_requests_total{code="500"}[5m])        # Taxa erro 500 específico

3. ERROS EM LOGS

Containers com problemas:

{job="docker"} |= "ERROR" | rate by (container_name) [5m]     # Taxa erros por container
{job="docker"} |= "FATAL" or "CRITICAL"                       # Logs críticos
{job="docker"} |= "OutOfMemory" or "killed"                   # Problemas de memória

Traefik access errors:

{job="traefik"} | json | StatusCode >= 500 | rate[5m]         # Taxa 5xx
{job="traefik"} | json | StatusCode >= 400 and StatusCode < 500 | rate[5m]  # Taxa 4xx

📈 DASHBOARDS RECOMENDADOS

🔴 ALTA PRIORIDADE - Dashboards Críticos

1. Sistema Geral (Overview)

  • Status de todos os targets
  • RPS total e por serviço
  • Latência P95/P99
  • Taxa de erros 4xx/5xx

2. Logs em Tempo Real

  • Stream de erros em tempo real
  • Top containers com mais erros
  • Análise de patterns de log

3. Traefik Performance

  • Requests por minuto
  • Latência por endpoint
  • Status codes distribution
  • Conexões ativas

🟡 MÉDIA PRIORIDADE - Dashboards Úteis

4. Container Health

  • Status dos containers
  • Logs por container
  • Restart frequency

5. System Resources (quando Node Exporter for adicionado)

  • CPU utilização
  • Memória disponível
  • Disk I/O
  • Network traffic

🎯 QUERIES ESSENCIAIS PARA TROUBLESHOOTING

Investigação de Problemas

1. Verificar se serviços estão UP:

up

2. Encontrar requests com erro:

{job="traefik"} | json | StatusCode >= 400

3. Logs de erro recentes:

{job="docker"} |= "ERROR" | rate[10m]

4. Performance degradada:

traefik_http_request_duration_seconds{quantile="0.95"} > 2.0

5. Containers que reiniciaram:

{job="docker"} |= "starting" or "stopped"

Monitoramento Proativo

1. Alertas básicos recomendados:

  • Target down por > 1 minuto
  • Taxa de erro > 5% por 5 minutos
  • Latência P95 > 5 segundos por 5 minutos
  • Ausência de logs por > 2 minutos

2. Métricas de tendência:

  • Growth rate de requests (week over week)
  • Padrões de uso por hora do dia
  • Distribuição de status codes

🔧 LIMITAÇÕES ATUAIS E WORKAROUNDS

❌ Sem Métricas de Sistema

Faltam: CPU, RAM, Disk, Network dos nós Workaround: Usar logs para identificar problemas Solução: Instalar Node Exporter

❌ Sem Métricas Detalhadas de Containers

Faltam: CPU/RAM por container, I/O Workaround: Usar docker stats quando necessário Solução: Instalar cAdvisor

❌ Service Discovery Quebrado

Problema: Não descobre serviços automaticamente Workaround: Adicionar targets estáticos no Prometheus Solução: Corrigir permissões Docker socket


📊 RETENÇÃO DE DADOS

Prometheus (Métricas)

  • Período: 30 dias
  • Granularidade: 15s (configurável)
  • Storage: TSDB local

Loki (Logs)

  • Período: 30 dias (720h)
  • Compressão: Ativa
  • Storage: Filesystem

Grafana (Dashboards)

  • Período: Persistente (SQLite)
  • Backups: Não configurado ainda

🎯 RESUMO - FOQUE NESTES INDICADORES

📊 Métricas Críticas

  1. up - Status dos serviços
  2. traefik_http_requests_total - Volume HTTP
  3. traefik_http_request_duration_seconds - Latência

📝 Logs Críticos

  1. {job="docker"} |= "ERROR" - Erros de aplicação
  2. {job="traefik"} | json | StatusCode >= 400 - Erros HTTP

🚨 Sinais de Problema

  • Target up = 0 (serviço down)
  • Taxa alta de 5xx errors
  • Latência P95 > 5 segundos
  • Logs de ERROR aumentando
  • Ausência súbita de logs

📋 Atualizado em: 23/01/2026 🔍 Environment: memude-vps (Docker Swarm) 📊 Dados disponíveis: 2+ dias de histórico

Próximos Passos: Corrigir Docker Service Discovery e adicionar Node Exporter + cAdvisor para monitoramento completo.