# 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: ```python 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: ```python 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: ```python 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 ```bash # 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 ```bash docker-compose up -d ``` ### Verificar estado ```bash docker-compose ps ``` ### Ver logs ```bash # 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 ```bash docker-compose down ``` ## Acceso a los Servicios - **Grafana**: http://localhost:3500 - Usuario: Ver `GRAFANA_ADMIN_USER` en `.env` - Contrase�a: Ver `GRAFANA_ADMIN_PASSWORD` en `.env` - **Prometheus**: http://localhost:9090 - **Mimir**: http://localhost:9009 ## 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: ```bash # 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: ```yaml 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: ```yaml alertmanager: image: prom/alertmanager:latest container_name: alertmanager ports: - "9093:9093" networks: - monitoring ``` ## Troubleshooting ### Verificar conectividad ```bash # Ping entre contenedores docker exec prometheus ping mimir docker exec grafana ping prometheus ``` ### Verificar configuraci�n de Prometheus ```bash # Verificar sintaxis de configuraci�n docker exec prometheus promtool check config /etc/prometheus/prometheus.yml ``` ### Verificar configuraci�n de Mimir ```bash # Ver configuraci�n activa curl http://localhost:9009/config ```