Files
egutierrez 5b6a0ddbc2
Deploy to Coolify / deploy (push) Has been cancelled
capacidad para guardar metricas en prometheus
2025-11-24 22:53:07 +01:00

5.2 KiB

Suite de Monitoreo con Grafana, Prometheus y Mimir

Esta configuracin incluye un stack completo de monitoreo con:

  • Prometheus: Recoleccin de mtricas
  • Mimir: Almacenamiento de mtricas a largo plazo
  • Grafana: Visualizacin y dashboards

Estructura de Archivos

Uso rápido en Python (logs y métricas)

  • Logs a Loki / Alloy:
from Logger import LokiLogger

logger = LokiLogger(service_name="mi_servicio", min_level="INFO")
logger.info("Aplicación iniciada")
logger.error("Algo falló", add_fields={"detalle": "stacktrace"})
  • Métricas con prefijo listo para scrapeo de Prometheus:
from Logger import PrometheusMetric

metrics = PrometheusMetric(
    prefix="suite_logs",
    default_labels={"service_name": "mi_servicio", "env": "dev"},
    port=9102,  # inicia un servidor HTTP en este puerto
)

requests_total = metrics.counter(
    "requests_total", "Solicitudes procesadas", labels=["endpoint"]
)
latency_seconds = metrics.histogram(
    "latency_seconds",
    "Latencia de peticiones",
    labels=["endpoint"],
    buckets=[0.1, 0.5, 1, 2, 5],
)

requests_total.inc(endpoint="/health")
latency_seconds.observe(0.35, endpoint="/health")

Agrega el puerto (9102 en el ejemplo) como target de scrape en Prometheus/Alloy para ver las series con el prefijo definido.

Atajo: si quieres emitir sin guardar handles, usa counter_value, gauge_value, histogram_observe y summary_observe, pudiendo sobreescribir el prefijo por métrica:

metrics.gauge_value("workers_active", 3, prefix="backend", labels={"queue": "ingest"})
metrics.counter_value("processed_total", 1, prefix="backend", labels={"queue": "ingest"})

En este repo, Alloy ya está configurado para scrapear host.docker.internal:9102 con el job_name="app_metrics". Si tu script expone métricas en ese puerto (con PrometheusMetric(port=9102)), se almacenarán sin cambios adicionales.

Configuración Inicial

1. Configurar variables de entorno

# Copiar archivo de ejemplo
cp .env.example .env

# Editar archivo .env y cambiar la contraseña de Grafana
nano .env

IMPORTANTE: Cambia GRAFANA_ADMIN_PASSWORD por una contraseña segura.

2. Iniciar los servicios

docker-compose up -d

Verificar estado

docker-compose ps

Ver logs

# Todos los servicios
docker-compose logs -f

# Servicio especfico
docker-compose logs -f grafana
docker-compose logs -f prometheus
docker-compose logs -f mimir

Detener los servicios

docker-compose down

Acceso a los Servicios

Configuracin

Modificar Configuraciones

Todos los archivos de configuracin estn en la carpeta config/ y pueden editarse directamente:

  1. Prometheus (config/prometheus/prometheus.yml):

    • Agregar nuevos targets de scraping
    • Configurar reglas de alertas
    • Modificar intervalos de recoleccin
  2. Mimir (config/mimir/mimir.yml):

    • Ajustar lmites de series
    • Configurar almacenamiento
    • Modificar configuracin de cluster
  3. Grafana (config/grafana/grafana.ini):

    • Cambiar configuracin de seguridad
    • Configurar autenticacin
    • Ajustar configuracin de la base de datos

Aplicar Cambios

Despus de modificar las configuraciones:

# Reiniciar servicios especficos
docker-compose restart prometheus
docker-compose restart mimir
docker-compose restart grafana

# O reiniciar todo
docker-compose restart

Agregar Fuentes de Datos

Edita config/grafana/provisioning/datasources/datasources.yml para agregar nuevas fuentes de datos automticamente.

Cargar Dashboards

Coloca archivos JSON de dashboards en data/grafana/dashboards/ y se cargarn automticamente.

Flujo de Datos

  1. Prometheus recolecta mtricas de los targets configurados
  2. Prometheus enva las mtricas a Mimir via remote_write
  3. Grafana consulta tanto Prometheus (datos recientes) como Mimir (datos histricos)

Personalizacin

Agregar Node Exporter

Descomenta las lneas en config/prometheus/prometheus.yml y agrega al docker-compose:

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    ports:
      - "9100:9100"
    networks:
      - monitoring

Agregar Alertmanager

Descomenta las lneas en config/prometheus/prometheus.yml y agrega al docker-compose:

  alertmanager:
    image: prom/alertmanager:latest
    container_name: alertmanager
    ports:
      - "9093:9093"
    networks:
      - monitoring

Troubleshooting

Verificar conectividad

# Ping entre contenedores
docker exec prometheus ping mimir
docker exec grafana ping prometheus

Verificar configuracin de Prometheus

# Verificar sintaxis de configuracin
docker exec prometheus promtool check config /etc/prometheus/prometheus.yml

Verificar configuracin de Mimir

# Ver configuracin activa
curl http://localhost:9009/config