Initial commit: SaveUrl project migration from Drive
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
# Troubleshooting
|
||||
|
||||
## 1) El DAG no aparece o falla al importarse
|
||||
|
||||
**Síntomas**
|
||||
|
||||
- Airflow muestra “ImportError” o el DAG no se lista.
|
||||
|
||||
**Causas comunes**
|
||||
|
||||
- La ruta `'/opt/airflow/dags/save_url_ftp'` no existe dentro del contenedor.
|
||||
- `SaveUrl.py` no está en esa carpeta (o tiene otro nombre).
|
||||
- Dependencias no instaladas en el entorno del worker (ej. `pyodbc`, `kafka`).
|
||||
|
||||
**Acciones**
|
||||
|
||||
- Verifica que existan los archivos:
|
||||
- `/opt/airflow/dags/save_url_ftp/dag_save_url_ftp.py`
|
||||
- `/opt/airflow/dags/save_url_ftp/SaveUrl.py`
|
||||
- Revisa el scheduler logs por import errors.
|
||||
|
||||
## 2) Error conectando al FTP
|
||||
|
||||
**Síntomas**
|
||||
|
||||
- `❌ FTP | ...` en logs
|
||||
- notificación por webhook con “Error leyendo FTP folder ...”
|
||||
|
||||
**Causas comunes**
|
||||
|
||||
- Credenciales incorrectas (`FTP_000oqta_USER` / `FTP_000oqta_PASSWORD`)
|
||||
- Host incorrecto (`FTP_000oqta_SERVER`)
|
||||
- Firewall / DNS / ruteo
|
||||
- La carpeta del mes no existe (`<name_folder><MM>`)
|
||||
|
||||
**Acciones**
|
||||
|
||||
- Probar conectividad desde el mismo runtime (worker) hacia el host FTP.
|
||||
- Confirmar que `FTP_BASE_PATH` + `code_folder` existe en el servidor.
|
||||
- Verificar si el servidor cambió estructura para 2027/otro año (porque `FTP_BASE_PATH` incluye `2026`).
|
||||
|
||||
## 3) Error leyendo SQL Server
|
||||
|
||||
**Síntomas**
|
||||
|
||||
- `❌ SQL | ...` en logs
|
||||
- webhook “Error leyendo URLs ...”
|
||||
|
||||
**Causas comunes**
|
||||
|
||||
- Driver ODBC faltante en el worker (`ODBC Driver 18 for SQL Server`)
|
||||
- Credenciales inválidas o permisos insuficientes
|
||||
- SQL Server inaccesible desde la red del worker
|
||||
- Tabla `URL_FTP` inexistente o en otro schema/db esperado
|
||||
|
||||
**Acciones**
|
||||
|
||||
- Verificar instalación del driver ODBC en el contenedor/host.
|
||||
- Validar que el usuario tenga `SELECT` sobre `URL_FTP`.
|
||||
- Confirmar nombre de la base de datos: se toma de `INFORMATIONS` (ej. `glm_pmi`, `IS001`).
|
||||
|
||||
## 4) Error insertando (schema/constraints)
|
||||
|
||||
**Síntomas**
|
||||
|
||||
- `❌ INSERT | ...` en logs
|
||||
- webhook “Error insertando URLs ...”
|
||||
|
||||
**Causas comunes**
|
||||
|
||||
- La tabla tiene columnas NOT NULL sin default que el dict no provee.
|
||||
- Tipos incompatibles (ej. `Date` espera datetime pero recibe string).
|
||||
- Restricción UNIQUE (por `IDcodigo`, `URL`, u otra combinación) que el código no contempla.
|
||||
|
||||
**Acciones**
|
||||
|
||||
- Revisar definición de `URL_FTP` y confirmar que acepta las columnas:
|
||||
- `Folder`, `Date`, `IDcodigo`, `ObjectCode`, `TaskName`, `URL`
|
||||
- Confirmar tipos: el código inserta strings.
|
||||
- Si existe una columna “ExportDate”, el código NO la inserta (la excluye si aparece en dict).
|
||||
|
||||
## 5) No inserta nada, pero debería
|
||||
|
||||
**Síntomas**
|
||||
|
||||
- `A insertar: 0` repetidamente, aunque hay archivos nuevos en FTP.
|
||||
|
||||
**Causas comunes**
|
||||
|
||||
- `IDcodigo` se parsea mal (mismo valor para distintos archivos) por cambios de naming.
|
||||
- La consulta SQL `Folder LIKE %code_folder%` trae más registros de los necesarios y “tapa” IDs.
|
||||
- El FTP lista rutas que no cumplen el patrón y el parse genera IDs inesperados.
|
||||
|
||||
**Acciones**
|
||||
|
||||
- Tomar una URL real del FTP y revisar manualmente el parsing:
|
||||
- ¿contiene `_{YYYY}-{MM}`?
|
||||
- ¿contiene el `identity_id` correcto?
|
||||
- ¿`IDcodigo` de 24 chars es correcto?
|
||||
- Comparar un `IDcodigo` “nuevo” con los existentes en SQL.
|
||||
|
||||
## 6) Kafka no recibe logs
|
||||
|
||||
**Síntomas**
|
||||
|
||||
- Logs de Airflow muestran fallos de Kafka o no hay eventos en `executions_logs`.
|
||||
|
||||
**Causas comunes**
|
||||
|
||||
- `BOOTSTRAP_SERVERS_DOCKER` incorrecto para el runtime del worker.
|
||||
- `KAFKA_USE_SSL=True` pero faltan variables de entorno `SECURITY_PROTOCOL`, `SASL_*`, `SSL_CAFILE`, etc.
|
||||
- Certificados/rutas inválidas dentro del contenedor.
|
||||
|
||||
**Acciones**
|
||||
|
||||
- Validar conectividad al broker desde el contenedor/worker.
|
||||
- Si SSL/SASL: asegurar que las variables están definidas como **env vars** del proceso.
|
||||
|
||||
## 7) Webhook no notifica
|
||||
|
||||
**Síntomas**
|
||||
|
||||
- Se ve el error en logs pero no llega alerta.
|
||||
|
||||
**Causas comunes**
|
||||
|
||||
- `WEBHOOK_URL_NOTIFICATION` no definido o es inválido.
|
||||
- Endpoint requiere auth/cabeceras adicionales (el código no las envía).
|
||||
- Restricciones de red del worker.
|
||||
|
||||
**Acciones**
|
||||
|
||||
- Probar un `POST` manual al webhook desde el mismo entorno.
|
||||
- Revisar respuesta HTTP (4xx/5xx) en logs si se captura (actualmente no se valida el status code).
|
||||
|
||||
Reference in New Issue
Block a user