# 📊 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
