egutierrez 6a49bd573c
Deploy to Coolify / deploy (push) Has been cancelled
alloy captura y guarda cada segundo
2025-11-24 23:17:39 +01:00
2025-11-16 16:00:00 +01:00
2025-11-09 17:27:06 +01:00
2025-11-16 17:07:22 +01:00
2025-11-09 17:27:06 +01:00
2025-11-09 17:27:06 +01:00
2025-11-24 23:17:39 +01:00
2025-10-22 19:50:46 +02:00
2025-10-22 19:50:46 +02:00

Suite de Monitoreo con Grafana, Prometheus y Mimir

Esta configuraci�n incluye un stack completo de monitoreo con:

  • Prometheus: Recolecci�n de m�tricas
  • Mimir: Almacenamiento de m�tricas a largo plazo
  • Grafana: Visualizaci�n 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 espec�fico
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

Configuraci�n

Modificar Configuraciones

Todos los archivos de configuraci�n est�n 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 recolecci�n
  2. Mimir (config/mimir/mimir.yml):

    • Ajustar l�mites de series
    • Configurar almacenamiento
    • Modificar configuraci�n de cluster
  3. Grafana (config/grafana/grafana.ini):

    • Cambiar configuraci�n de seguridad
    • Configurar autenticaci�n
    • Ajustar configuraci�n de la base de datos

Aplicar Cambios

Despu�s de modificar las configuraciones:

# Reiniciar servicios espec�ficos
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 autom�ticamente.

Cargar Dashboards

Coloca archivos JSON de dashboards en data/grafana/dashboards/ y se cargar�n autom�ticamente.

Flujo de Datos

  1. Prometheus recolecta m�tricas de los targets configurados
  2. Prometheus env�a las m�tricas a Mimir via remote_write
  3. Grafana consulta tanto Prometheus (datos recientes) como Mimir (datos hist�ricos)

Personalizaci�n

Agregar Node Exporter

Descomenta las l�neas 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 l�neas 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 configuraci�n de Prometheus

# Verificar sintaxis de configuraci�n
docker exec prometheus promtool check config /etc/prometheus/prometheus.yml

Verificar configuraci�n de Mimir

# Ver configuraci�n activa
curl http://localhost:9009/config
S
Description
No description provided
Readme 152 KiB
Languages
Python 89.5%
Shell 10.5%