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

205 lines
5.2 KiB
Markdown

# 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:
```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 especfico
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`
- Contrasea: Ver `GRAFANA_ADMIN_PASSWORD` en `.env`
- **Prometheus**: http://localhost:9090
- **Mimir**: http://localhost:9009
## 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:
```bash
# 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:
```yaml
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:
```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 configuracin de Prometheus
```bash
# Verificar sintaxis de configuracin
docker exec prometheus promtool check config /etc/prometheus/prometheus.yml
```
### Verificar configuracin de Mimir
```bash
# Ver configuracin activa
curl http://localhost:9009/config
```