Troubleshooting Hub
Guía completa para diagnosticar y resolver problemas comunes en Fracttal ETL Hub.
Diagnóstico Rápido
¿Cuál es tu problema?
-
Problemas de Conexión
Timeouts, autenticación fallida, conexiones rechazadas
-
Errores de Datos
Esquemas inválidos, transformaciones fallidas, tipos incorrectos
-
Performance Issues
ETLs lentos, timeouts, memoria alta, CPU alta
-
Configuración JSON
Sintaxis incorrecta, parámetros faltantes, validación fallida
Problemas de Conexión
Connection Timeout
Síntomas:
{
"error": "Connection timeout after 30 seconds",
"code": "TIMEOUT_ERROR",
"connection": "my_database"
}
Causas Comunes:
| Causa | Diagnóstico | Solución |
|---|---|---|
| Firewall bloqueando | No hay conectividad de red | Abrir puertos necesarios |
| Credenciales incorrectas | Error de autenticación | Verificar usuario/password |
| Servidor sobrecargado | Respuesta lenta del servidor | Aumentar timeout o usar horarios off-peak |
| Red lenta | Alta latencia | Optimizar query o usar batch processing |
Soluciones:
{
"source": {
"id_type": 1,
"id_connection": "my_database",
"parameters": {
"timeout": 60, // Aumentar a 60 segundos
"connect_timeout": 30, // Timeout de conexión
"read_timeout": 45 // Timeout de lectura
}
}
}
{
"source": {
"id_type": 1,
"id_connection": "my_database",
"parameters": {
"retry_policy": {
"max_retries": 3,
"backoff_factor": 2,
"retry_delays": [1, 3, 6]
}
}
}
}
{
"source": {
"id_type": 1,
"id_connection": "my_database",
"parameters": {
"pool_size": 5,
"max_overflow": 10,
"pool_timeout": 30
}
}
}
Authentication Failed
Síntomas:
{
"error": "Authentication failed: Invalid credentials",
"code": "AUTH_ERROR"
}
Lista de verificación:
- Usuario existe en el sistema destino
- Password es correcto (no expirado)
- Permisos suficientes para leer/escribir
- IP whitelisted en el servidor
- Protocolo correcto (SSL/TLS si es requerido)
Soluciones por tipo de conexión:
{
"id_connection": "secure_db",
"host": "db.company.com",
"port": 5432,
"database": "production",
"username": "etl_user",
"password": "secure_password",
"ssl_mode": "require", // Para conexiones seguras
"connect_timeout": 30
}
{
"id_connection": "api_service",
"base_url": "https://api.company.com",
"auth_type": "bearer",
"token": "valid_bearer_token",
"headers": {
"User-Agent": "Fracttal-ETL/1.0",
"Accept": "application/json"
}
}
{
"id_connection": "google_sheets",
"auth_type": "service_account",
"service_account_email": "etl@project.iam.gserviceaccount.com",
"private_key": "-----BEGIN PRIVATE KEY-----\n...",
"scopes": [
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/drive.file"
]
}
Errores de Datos
Schema Validation Failed
Síntomas:
{
"error": "Schema validation failed",
"details": {
"field": "created_date",
"expected": "datetime",
"received": "string"
}
}
Soluciones comunes:
{
"transform": {
"map": [
{"var": ""},
{
"merge": [
{"var": ""},
{
"created_date": {
"format_date": [
{"var": "created_date"},
"%Y-%m-%d %H:%M:%S",
"%Y-%m-%dT%H:%M:%S.%fZ"
]
}
}
]
}
]
}
}
{
"transform": {
"filter": [
{"var": ""},
{
"and": [
{"!=": [{"var": "id"}, null]},
{"!=": [{"var": "name"}, ""]},
{">": [{"var": "amount"}, 0]}
]
}
]
}
}
{
"transform": {
"map": [
{"var": ""},
{
"merge": [
{"var": ""},
{
"status": {"or": [{"var": "status"}, "pending"]},
"created_at": {"or": [{"var": "created_at"}, {"format_date": ["now", "%Y-%m-%dT%H:%M:%SZ"]}]}
}
]
}
]
}
}
Data Transformation Error
Síntomas:
{
"error": "Transformation failed at step 3",
"step": "format_date",
"input": "invalid-date-string"
}
Debugging paso a paso:
-
Verificar datos de entrada
{ "transform": { "debug": [ {"var": ""}, {"message": "Input data", "level": "info"} ] } } -
Transformación segura con fallbacks
{ "transform": { "map": [ {"var": ""}, { "merge": [ {"var": ""}, { "safe_date": { "if": [ {"and": [ {"!=": [{"var": "date_field"}, null]}, {"!=": [{"var": "date_field"}, ""]} ]}, {"format_date": [{"var": "date_field"}, "%Y-%m-%d", "%Y-%m-%dT%H:%M:%SZ"]}, null ] } } ] } ] } }
Performance Issues
ETL Muy Lento
Síntomas: - ETL que toma > 5 minutos para < 10K registros - Uso de memoria > 1GB - CPU al 100% durante la ejecución
Diagnóstico:
| Métrica | Normal | Problemático | Acción |
|---|---|---|---|
| Tiempo/1K registros | < 2s | > 10s | Optimizar query |
| Memoria usada | < 512MB | > 1GB | Activar batch processing |
| Registros/segundo | > 500 | < 100 | Revisar transformaciones |
Optimizaciones:
{
"source": {
"parameters": {
"query_string": {
"table": "orders",
"fields": "id,name,amount,created_at", // Solo campos necesarios
"where": "created_at >= '2024-01-01'", // Filtrar en origen
"order_by": "id ASC",
"limit": 5000 // Limitar resultados
}
}
}
}
{
"target": {
"parameters": {
"batch": true,
"batch_size": 100,
"parallel_workers": 4
}
}
}
{
"extract": {
"apply_jsonpath": "$.data[*]", // Reducir datos en memoria
"streaming": true, // Procesar en chunks
"chunk_size": 1000
}
}
Rate Limiting
Síntomas:
{
"error": "Rate limit exceeded: 100 requests per minute",
"retry_after": 60
}
Soluciones:
{
"target": {
"parameters": {
"rate_limit": {
"requests_per_minute": 50,
"burst_limit": 10,
"backoff_strategy": "exponential"
}
}
}
}
{
"target": {
"parameters": {
"batch": true,
"batch_size": 50, // Enviar múltiples registros por request
"concurrent_requests": 2
}
}
}
Configuración JSON
JSON Syntax Error
Errores comunes:
// ❌ Incorrecto
{
"source": {
"id_type": 1
"id_connection": "db" // Falta coma
}
}
// ✅ Correcto
{
"source": {
"id_type": 1,
"id_connection": "db"
}
}
// ❌ Incorrecto
{
'source': { // Comillas simples no válidas
"id_type": 1
}
}
// ✅ Correcto
{
"source": {
"id_type": 1
}
}
// ❌ Incorrecto
{
"source": {
"id_type": 1,
"id_connection": "db", // Coma final no válida
}
}
// ✅ Correcto
{
"source": {
"id_type": 1,
"id_connection": "db"
}
}
Herramientas de Validación
- JSON Validator Online: jsonlint.com
- VS Code Extension: JSON Schema validator
- CLI Tool:
fracttal-etl validate config.json
Escalación de Problemas
Cuándo contactar soporte:
- Has seguido esta guía sin éxito
- Error persiste después de 3 intentos
- Problema afecta producción
- Datos críticos no se procesan
Información a incluir:
## Descripción del Problema
- Qué ETL está fallando
- Cuándo empezó el problema
- Frecuencia del error
## Configuración
```json
{
// Tu configuración JSON completa (sin credenciales)
}
Logs de Error
[Timestamp] ERROR: Mensaje completo del error
[Timestamp] STACK: Stack trace si está disponible
Entorno
- Ambiente: production/staging/development
- Volumen de datos: X registros
- Tiempo de ejecución esperado vs actual ```
Canales de soporte:
- Emergencias: emergency@fracttal.com
- Slack:
#etl-support - Email: tech@fracttal.com
- Issues: GitHub Issues