# Runbook de operación ## Objetivo operacional Mantener la sincronización: - FTP (archivos del mes/carpeta) → SQL Server (`URL_FTP`) con observabilidad en Kafka y alerta por webhook. ## Qué esperar en una ejecución “sana” Por cada item en `INFORMATIONS` se esperan, en logs de Airflow: - `✅ FTP ... archivos en ` - `✅ SQL ... registros existentes` - `ℹ️ DIFF ... A insertar: ` - `✅ INSERT ... Insertados: ` (o warning de “Sin registros nuevos”) Al final: - `⏹ FINALIZADO ...` ## Inputs críticos (pre-flight) - **Airflow Variables** existen y tienen valores válidos: - FTP: `FTP_000oqta_SERVER`, `FTP_000oqta_USER`, `FTP_000oqta_PASSWORD` - SQL: `DB_MSSQ_SERVER`, `DB_MSSQ_USER`, `DB_MSSQ_PASSWORD` - Kafka: `BOOTSTRAP_SERVERS_DOCKER`, `KAFKA_USE_SSL` - Webhook: `WEBHOOK_URL_NOTIFICATION` - El worker donde corre el DAG tiene: - driver ODBC 18 instalado - conectividad a FTP/SQL/Kafka/webhook ## Procedimiento ante incidentes (rápido) 1. Revisar logs del task `save_url_ftp` en Airflow. 2. Identificar el “BD lógico” afectado (ej. `glm_pmi`, `IS001`, etc.). 3. Clasificar el fallo: - FTP (login, path, listing) - SQL (conexión, permisos, tabla) - INSERT (schema/constraint) - Kafka (broker/SSL/SASL) - Webhook (endpoint caído / 4xx/5xx) 4. Ejecutar acciones según tipo (ver `08_TROUBLESHOOTING.md`). ## Operación programada del DAG El DAG corre cada 2 horas (`0 */2 * * *`). Si necesitas ejecución manual: - Ejecuta el task `save_url_ftp` desde la UI de Airflow (Trigger DAG / Run Task). ## Indicadores recomendados (SLOs simples) - **Frescura**: últimas URLs del FTP aparecen en SQL < 2–4 horas. - **Cobertura**: por cada item, `A insertar` tiende a 0 tras una corrida exitosa. - **Errores**: tasa de `FAILED` por item debe ser baja; si sube, revisar conectividad o cambios de naming en FTP. ## Mantenimiento preventivo - Revisar que `FTP_BASE_PATH` (año) sea correcto cuando cambie el año. - Verificar que las rutas/certificados SSL (si aplica) sean válidos dentro del contenedor. - Confirmar que el naming en FTP siga el patrón esperado (contiene `_{YYYY}-{MM}` e `identity_id`).