docs: add visualization setup guide and update Rill config

Añadida documentación de configuración de herramientas de visualización.

Cambios:
- Nuevo archivo VISUALIZATION_SETUP.md con guía de setup de Grafana/Metabase/Rill
- Actualizada configuración de Rill (rill-data/rill.yaml) con nuevas fuentes de datos

Contenido de VISUALIZATION_SETUP.md:
- Configuración de datasources para Grafana
- Setup de Metabase con PostgreSQL/ClickHouse
- Configuración de Rill con DuckDB
- Ejemplos de queries y dashboards
This commit is contained in:
2026-03-23 23:41:26 +01:00
parent 2ca0b1169f
commit 5357cedc55
2 changed files with 329 additions and 1 deletions
+305
View File
@@ -0,0 +1,305 @@
# 📊 Configuración de Herramientas de Visualización
## ✅ Estado de Configuración
Todas las herramientas de visualización están conectadas a PostgreSQL y ClickHouse:
-**Grafana** - Datasources configurados via provisioning YAML
-**Metabase** - Configuración automática via API (sin UI)
-**Rill** - Sources configurados en rill.yaml
---
## 🔑 Credenciales de Acceso
### Grafana
- **URL**: http://localhost:3500
- **Usuario**: `admin`
- **Contraseña**: `admin123`
- **Datasources configurados**:
- PostgreSQL (postgres-main:5432)
- ClickHouse (clickhouse:8123)
- Prometheus
- Loki
- Tempo
### Metabase
- **URL**: http://localhost:3200
- **Usuario**: `admin@example.com`
- **Contraseña**: `Admin123!@#`
- **Datasources configurados**:
- PostgreSQL Main (postgres-main:5432)
- ClickHouse Analytics (clickhouse:8123)
- Sample Database (H2 - demo)
### Rill
- **URL**: http://localhost:9009
- **Autenticación**: No requiere
- **Sources configurados**:
- `postgres_main` (postgres-main:5432)
- `clickhouse_main` (clickhouse:9000)
---
## 🚀 Configuración Automática de Metabase
El script `configure_metabase.py` configura automáticamente Metabase:
### Primera vez (setup inicial):
```bash
cd /home/lucas/dagu/scripts
./configure_metabase.py
```
Este script:
1. ✅ Detecta si Metabase necesita setup inicial
2. ✅ Crea usuario admin automáticamente
3. ✅ Configura datasources de PostgreSQL y ClickHouse
4. ✅ Todo sin interacción manual
### Si reseteas Metabase:
```bash
# Eliminar datos de Metabase
docker-compose -f docker-compose-analytics.yml down metabase metabase-db
docker volume rm automatic_process_metabase-data
# Reiniciar y configurar automáticamente
docker-compose -f docker-compose-analytics.yml up -d metabase-db metabase
sleep 50 # Esperar a que inicie
./configure_metabase.py
```
---
## 🔧 Archivos de Configuración
### Grafana
**Ubicación**: `/home/lucas/DataProyects/suite_logs/config/grafana/provisioning/datasources/datasources.yml`
Datasources PostgreSQL y ClickHouse añadidos automáticamente al desplegar Grafana.
### Rill
**Ubicación**: `/home/lucas/AutomaticProyects/automatic_process/rill-data/rill.yaml`
```yaml
sources:
- name: postgres_main
type: sql
connector: postgres
settings:
host: postgres-main
port: 5432
database: postgres
user: postgres
password: postgres
ssl_mode: disable
raw_sql: true
- name: clickhouse_main
type: sql
connector: clickhouse
settings:
host: clickhouse
port: 9000
database: default
user: default
password: clickhouse
ssl: false
```
---
## ✅ Verificación de Conectividad
### Script de Verificación
```bash
/home/lucas/dagu/scripts/test_db_connections.sh
```
Verifica:
- ✓ PostgreSQL (localhost:5434)
- ✓ ClickHouse (localhost:8123)
- ✓ Grafana (localhost:3500)
- ✓ Metabase (localhost:3200)
- ✓ Rill (localhost:9009)
### Verificación Manual
#### Grafana
1. Login en http://localhost:3500
2. Ir a **Connections** > **Data sources**
3. Verificar datasources "PostgreSQL" y "ClickHouse"
4. Hacer clic en cada uno y presionar **Test** (debe mostrar ✓)
#### Metabase
1. Login en http://localhost:3200
2. Ir a **Admin Settings** > **Databases**
3. Verificar "PostgreSQL Main" y "ClickHouse Analytics"
4. Estado debe mostrar "Connected"
#### Rill
1. Abrir http://localhost:9009
2. Ver pestaña **Sources**
3. Verificar `postgres_main` y `clickhouse_main`
4. Ejecutar query de prueba: `SELECT 1`
---
## 📊 Bases de Datos Disponibles
### PostgreSQL
- **Host interno**: `postgres-main:5432`
- **Host externo**: `localhost:5434`
- **Usuario**: `postgres`
- **Contraseña**: `postgres`
- **Base de datos**: `postgres`
- **Estado**: Vacía (sin tablas)
### ClickHouse
- **Host interno**: `clickhouse:9000` (native), `clickhouse:8123` (HTTP)
- **Host externo**: `localhost:9000`, `localhost:8123`
- **Usuario**: `default`
- **Contraseña**: `clickhouse`
- **Base de datos**: `default`
- **Estado**: Vacía (sin tablas)
---
## 🎯 Próximos Pasos
### 1. Crear Tablas de Ejemplo (Opcional)
#### PostgreSQL
```sql
-- Conectar vía psql
PGPASSWORD=postgres psql -h localhost -p 5434 -U postgres -d postgres
-- Crear tabla de eventos
CREATE TABLE events (
id SERIAL PRIMARY KEY,
timestamp TIMESTAMP DEFAULT NOW(),
event_type VARCHAR(100),
user_id INTEGER,
data JSONB
);
-- Insertar datos de prueba
INSERT INTO events (event_type, user_id, data)
VALUES
('login', 1, '{"ip": "192.168.1.1"}'),
('purchase', 1, '{"product": "laptop", "amount": 1200}'),
('logout', 1, '{"duration": 3600}');
```
#### ClickHouse
```sql
-- Conectar vía clickhouse-client
clickhouse-client --host localhost --port 9000 --user default --password clickhouse
-- Crear tabla de métricas
CREATE TABLE metrics (
timestamp DateTime,
metric_name String,
metric_value Float64,
tags Map(String, String)
) ENGINE = MergeTree()
ORDER BY timestamp;
-- Insertar datos de prueba
INSERT INTO metrics VALUES
(now(), 'cpu_usage', 45.2, {'host': 'server1'}),
(now(), 'memory_usage', 72.8, {'host': 'server1'}),
(now(), 'disk_usage', 58.3, {'host': 'server1'});
```
### 2. Crear Dashboards de Ejemplo
#### En Grafana
1. New Dashboard → Add visualization
2. Seleccionar datasource "PostgreSQL"
3. Query: `SELECT * FROM events ORDER BY timestamp DESC LIMIT 10`
4. Visualizar como tabla o gráfico
#### En Metabase
1. New → Question
2. Seleccionar "PostgreSQL Main"
3. Simple Question → Pick Table → events
4. Guardar y añadir a dashboard
#### En Rill
1. Crear modelo en `rill-data/rill.yaml`:
```yaml
models:
- name: recent_events
sql: |
SELECT * FROM events
ORDER BY timestamp DESC
LIMIT 100
source: postgres_main
```
2. Restart Rill: `docker-compose -f docker-compose-analytics.yml restart rill`
### 3. Configurar Pipelines con Dagu
Ver `TRANSFORMATIONS.md` para ejemplos de DAGs que:
- Extraigan datos de APIs
- Transformen datos
- Carguen a PostgreSQL/ClickHouse
- Generen visualizaciones automáticas
---
## 🔧 Troubleshooting
### Metabase no se configura
```bash
# Verificar logs
docker logs metabase
# Resetear y reconfigurar
docker-compose -f docker-compose-analytics.yml down metabase metabase-db
docker volume rm automatic_process_metabase-data
docker-compose -f docker-compose-analytics.yml up -d metabase-db metabase
sleep 50
/home/lucas/dagu/scripts/configure_metabase.py
```
### Grafana no ve las bases de datos
```bash
# Verificar que Grafana está en ambas redes
docker inspect grafana | grep -A 10 Networks
# Debe mostrar: suite-logs_monitoring y automatic_process_default
# Probar DNS desde Grafana
docker exec grafana nslookup postgres-main
docker exec grafana nslookup clickhouse
```
### Rill no carga sources
```bash
# Verificar configuración
cat /home/lucas/AutomaticProyects/automatic_process/rill-data/rill.yaml
# Revisar logs
docker logs rill
# Reiniciar
docker-compose -f docker-compose-analytics.yml restart rill
```
---
## 📚 Referencias
- **Grafana Datasources**: http://localhost:3500/connections/datasources
- **Metabase Admin**: http://localhost:3200/admin/databases
- **Rill Dashboard**: http://localhost:9009
- **DBGate** (DB Manager): http://localhost:3300
- **Marquez** (Lineage): http://localhost:3001
- **Homer** (Dashboard Hub): http://localhost:8080
---
**Última actualización**: 2026-03-23
**Configuración**: Automática via scripts
+24 -1
View File
@@ -1,2 +1,25 @@
sources: []
sources:
- name: postgres_main
type: sql
connector: postgres
settings:
host: postgres-main
port: 5432
database: postgres
user: postgres
password: postgres
ssl_mode: disable
raw_sql: true
- name: clickhouse_main
type: sql
connector: clickhouse
settings:
host: clickhouse
port: 9000
database: default
user: default
password: clickhouse
ssl: false
models: []