Metrics

Métricas Prometheus Padronizadas - C-Suite

Visão Geral

Este documento descreve o sistema de métricas Prometheus padronizado para todos os apps do ecossistema C-Suite.

Módulo de Métricas

Localização

O módulo principal está em: common_metrics.py (raiz do projeto)

Características

Uso Básico

1. Adicionar Métricas ao App

from fastapi import FastAPI
from common_metrics import create_metrics_router, create_metrics_middleware

app = FastAPI()

# Adiciona router de métricas
metrics_router = create_metrics_router("csuite-executive")
app.include_router(metrics_router)

# Adiciona middleware para coleta automática
app.middleware("http")(create_metrics_middleware("csuite-executive"))

2. Registrar Métricas Customizadas

from common_metrics import business_metrics, errors_total, cache_hits

# Métrica de negócio
business_metrics.labels(
    metric_name="decisions_today",
    org_id=1,
    app="csuite-executive"
).set(1250)

# Erro
errors_total.labels(
    error_type="ValidationError",
    app="csuite-executive"
).inc()

# Cache hit
cache_hits.labels(
    cache_type="policy",
    app="csuite-executive"
).inc()

3. Métricas de Banco de Dados

from common_metrics import database_query_duration, database_connections
import time

# Medir duração de query
start = time.time()
result = db.execute(query)
duration = time.time() - start

database_query_duration.labels(
    database="csuite",
    query_type="SELECT",
    app="csuite-executive"
).observe(duration)

# Conexões ativas
database_connections.labels(
    database="csuite",
    app="csuite-executive"
).set(active_connections)

Métricas Disponíveis

HTTP

Banco de Dados

Cache

APIs Externas

Erros

Negócio

Configuração do Prometheus

Arquivo de Configuração

O arquivo prometheus/prometheus.yml contém a configuração unificada para todos os apps.

Jobs Configurados

Scrape Interval

Alertas

Arquivo de Alertas

O arquivo prometheus/alerts.yml contém alertas unificados para todos os apps.

Alertas Configurados

  1. Disponibilidade
  2. AppDown: App não está respondendo

  3. Erros HTTP

  4. HighErrorRate: Taxa de erro > 1%
  5. CriticalErrorRate: Taxa de erro > 5%

  6. Latência

  7. HighLatency: P95 > 1s
  8. CriticalLatency: P95 > 5s

  9. Banco de Dados

  10. HighDatabaseConnections: > 80 conexões
  11. SlowDatabaseQueries: P95 > 1s

  12. Cache

  13. LowCacheHitRate: Taxa de hit < 50%

  14. APIs Externas

  15. ExternalAPIFailure: Taxa de falha > 10%

  16. Erros Gerais

  17. HighErrorCount: > 10 erros/segundo

  18. Negócio

  19. BusinessMetricAnomaly: Desvio > 20% da média

Grafana Dashboards

Dashboard Unificado

Criar dashboard no Grafana que consolide métricas de todos os apps:

Queries Úteis

# Taxa de requisições por app
sum(rate(http_requests_total[5m])) by (app)

# Latência P95 por app
histogram_quantile(0.95,
  sum(rate(http_request_duration_seconds_bucket[5m])) by (le, app)
)

# Taxa de erro por app
sum(rate(http_requests_total{status=~"5.."}[5m])) by (app)
/
sum(rate(http_requests_total[5m])) by (app)

# Taxa de cache hit
sum(rate(cache_hits_total[10m])) by (cache_type, app)
/
(sum(rate(cache_hits_total[10m])) by (cache_type, app) +
 sum(rate(cache_misses_total[10m])) by (cache_type, app))

Integração nos Apps

4c-suite

from common_metrics import create_metrics_router, create_metrics_middleware

metrics_router = create_metrics_router("4c-suite")
app.include_router(metrics_router)
app.middleware("http")(create_metrics_middleware("4c-suite"))

csuite-executive

from common_metrics import create_metrics_router, create_metrics_middleware

metrics_router = create_metrics_router("csuite-executive")
app.include_router(metrics_router)
app.middleware("http")(create_metrics_middleware("csuite-executive"))

csuite-sales-manager

from common_metrics import create_metrics_router, create_metrics_middleware

# Manager API
metrics_router = create_metrics_router("csuite-sales-manager-manager-api")
app.include_router(metrics_router)
app.middleware("http")(create_metrics_middleware("csuite-sales-manager-manager-api"))

# Decision API
metrics_router = create_metrics_router("csuite-sales-manager-decision-api")
app.include_router(metrics_router)
app.middleware("http")(create_metrics_middleware("csuite-sales-manager-decision-api"))

Próximos Passos

  1. ✅ Módulo de métricas criado
  2. ✅ Configuração Prometheus unificada criada
  3. ✅ Alertas unificados criados
  4. ⏳ Integrar métricas em todos os apps
  5. ⏳ Criar dashboard Grafana unificado
  6. ⏳ Configurar Alertmanager
  7. ⏳ Adicionar métricas de negócio específicas

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir