Monitoreo de Airflow
Guía de Monitoreo y Troubleshooting de DAGs — Guía para Desarrolladores
Introducción
El sistema de monitoreo de Airflow de Cheaf permite a los desarrolladores y administradores supervisar el estado de los DAGs, identificar problemas y realizar troubleshooting efectivo. Esta documentación describe los componentes principales del monitoreo, las métricas clave y los procedimientos de troubleshooting.
Componentes del Sistema de Monitoreo
Airflow UI
La interfaz de usuario de Airflow proporciona una vista centralizada de todos los DAGs y su estado actual.
Características principales:
- Vista de DAGs: Lista de todos los DAGs con su estado actual
- Vista de Tareas: Detalles de cada tarea dentro de un DAG
- Logs: Acceso a logs detallados de cada ejecución
- Métricas: Estadísticas de ejecución y rendimiento
Métricas Clave
Estado de DAGs
- Activos: DAGs que están habilitados y pueden ejecutarse
- Pausados: DAGs deshabilitados temporalmente
- Ejecutándose: DAGs actualmente en ejecución
- Fallidos: DAGs que han fallado en su última ejecución
Estadísticas de Ejecución
- Runs exitosos: Número de ejecuciones completadas exitosamente
- Runs fallidos: Número de ejecuciones que han fallado
- Tiempo de ejecución: Duración promedio de las ejecuciones
- Última ejecución: Timestamp de la última ejecución
- Próxima ejecución: Timestamp de la próxima ejecución programada
Guía de Monitoreo Paso a Paso
1. Acceso a la UI de Airflow
URL: http://35.247.79.139:8080
Credenciales: Proporcionadas por el administrador del sistema
2. Navegación en la UI
Vista Principal de DAGs
- Acceder a la pestaña "DAGs"
- Verificar estado general:
- DAGs activos de ingesta: 4 (gmail_merma, cassandra_notifications, cassandra_tracker, s3_analysis)
- DAGs de soporte: cassandra_crm_incremental, segments_incremental_id
- Estado: Verificar círculos verdes (exitosos) vs rojos (fallidos)
Guías Visuales de Monitoreo
Dashboard Principal
Elementos clave a monitorear:
-
Indicador de estado general (esquina superior derecha)
- Verde: Sistema operativo normal
- Amarillo: Advertencias menores
- Rojo: Problemas críticos
-
Gráfico de ejecuciones (centro de la pantalla)
- Barras verdes: Ejecuciones exitosas
- Barras rojas: Ejecuciones fallidas
- Altura de barras: Volumen de ejecuciones
-
Lista de DAGs críticos (panel principal)
- Toggle azul: DAG activo
- Toggle gris: DAG pausado
- Círculos de colores: Estado de runs recientes
Vista de DAG Específico
Información crítica:
-
Graph View: Dependencias entre tareas
- Cajas verdes: Tareas exitosas
- Cajas rojas: Tareas fallidas
- Cajas amarillas: Tareas en progreso
- Líneas: Dependencias entre tareas
-
Tree View: Historial de ejecuciones
- Columnas: Fechas de ejecución
- Filas: Tareas individuales
- Colores: Estado de cada tarea por fecha
-
Gantt View: Tiempos de ejecución
- Barras horizontales: Duración de tareas
- Eje X: Línea de tiempo
- Superposiciones: Tareas en paralelo
Información de DAGs Específicos
Para cada DAG, verificar:
- Estado del toggle: Azul (activo) o Gris (pausado)
- Owner: Propietario del DAG
- Runs: Círculos verdes (exitosos) y rojos (fallidos)
- Schedule: Cron expression o "None" para ejecución manual
- Last Run: Fecha y hora de la última ejecución
- Next Run: Fecha y hora de la próxima ejecución
- Recent Tasks: Círculos de colores indicando estado de tareas recientes
3. Monitoreo de DAGs Críticos
gmail_merma_to_bigquery
Características:
- Schedule:
0 8,12 * * 1-5(8 AM y 12 PM, lunes a viernes) - Owner:
data-engineering - Tags:
bigquery,gmail,ingestion,merma,production
Monitoreo:
- Verificar ejecución en horarios programados
- Revisar logs de extracción de Gmail
- Monitorear carga a BigQuery
- Verificar procesamiento de archivos Excel
cassandra_notifications_nightly_ingestion
Características:
- Schedule:
0 2 * * *(23:00 ARG) - Owner:
data-engineering - Tags:
cassandra,bigquery,ingestion,notifications,production
Monitoreo:
- Verificar ejecución nocturna diaria
- Revisar logs de extracción de Cassandra
- Validar conteo de registros entre origen y destino
- Monitorear backfill de schedulers faltantes
cassandra_tracker_incremental_7h
Características:
- Schedule:
0 */7 * * *(cada 7 horas) - Owner:
data-engineering - Tags:
cassandra,bigquery,ingestion,tracker,production
Monitoreo:
- Verificar ejecución cada 7 horas
- Revisar logs de deduplicación
- Validar datos existentes vs nuevos
- Monitorear tiempo de ejecución
s3_analysis_to_bigquery
Características:
- Schedule:
0 2 * * *(02:00 UTC) - Owner:
data-engineering - Tags:
s3,bigquery,ingestion,analysis,production
Monitoreo:
- Verificar ejecución diaria
- Revisar logs de descarga de S3
- Validar procesamiento de JSONs (original_dataset y left_dataset)
- Monitorear carga paralela a BigQuery
4. Análisis de Logs
Acceso a Logs
- Hacer clic en el DAG específico
- Seleccionar la ejecución deseada
- Hacer clic en la tarea específica
- Acceder a la pestaña "Logs"
Tipos de Logs Importantes
Logs de Gmail Merma:
INFO: Conectando a Gmail API...
INFO: Encontrados 3 archivos de merma para procesar
INFO: Cargando 2052 filas a la tabla backends-399017.stg_cheaf_warehouse.stg_merma_week_551...
'551' -> stg_merma_week_551: 2052 filasLogs de Cassandra Notifications:
INFO: Conectando a Cassandra cluster...
INFO: Extrayendo datos de notifications_by_campaign_filter...
INFO: Registros extraídos: 15,432
INFO: Validando conteo origen vs destino...
INFO: Carga completada en stg_notifications_cassandra_raw_detailLogs de S3 Analysis:
INFO: Descargando archivos de s3://bucket/analysis/...
INFO: Procesando original_dataset.json (45,000 registros)
INFO: Procesando left_dataset.json (32,000 registros)
INFO: Carga paralela a BigQuery completada5. Troubleshooting Común
Problema: DAG Fallido
Síntomas:
- Círculo rojo en la columna "Runs"
- Estado "failed" en la vista de DAG
Pasos de troubleshooting:
- Hacer clic en el DAG fallido
- Revisar la ejecución más reciente
- Identificar la tarea fallida (círculo rojo)
- Revisar logs de la tarea fallida
- Identificar el error específico
- Aplicar la solución correspondiente
Problema: DAG No Se Ejecuta
Síntomas:
- DAG activo pero sin ejecuciones recientes
- "Last Run" muy antiguo
Pasos de troubleshooting:
- Verificar que el DAG esté activo (toggle azul)
- Revisar el schedule del DAG
- Verificar que no haya errores en el código del DAG
- Revisar logs del scheduler de Airflow
Problema: Uso de Disco Alto
Síntomas:
- Logs de limpieza automática frecuentes
- Advertencias de espacio en disco
Pasos de troubleshooting:
- Revisar logs de auto-cleanup
- Verificar espacio liberado después de limpieza
- Monitorear DAGs que generan muchos logs
- Considerar ajustar umbral de limpieza si es necesario
Troubleshooting Avanzado
Problemas de Conectividad
BigQuery Authentication Issues
# Verificar service account
gcloud auth list
# Test de conexión a BigQuery
bq ls --project_id=backends-399017
# Verificar permisos
gcloud projects get-iam-policy backends-399017
# Test específico de tabla
bq query --use_legacy_sql=false 'SELECT COUNT(*) FROM `backends-399017.stg_cheaf_warehouse.stg_accounts_raw`'Cassandra Connection Issues
# Verificar conectividad a Cassandra
nc -zv cassandra-host 9042
# Test de consulta básica
cqlsh cassandra-host -e "SELECT keyspace_name FROM system_schema.keyspaces;"
# Verificar logs de Cassandra
tail -f /var/log/cassandra/system.logS3 Connection Issues
# Verificar credenciales AWS
aws sts get-caller-identity
# Listar bucket
aws s3 ls s3://bucket-name/
# Verificar permisos
aws s3api get-bucket-policy --bucket bucket-name
# Test de descarga
aws s3 cp s3://bucket-name/test-file.json /tmp/Gmail API Issues
# Verificar credenciales de Gmail
# Las credenciales se configuran via Airflow Variables
# Verificar conexión en Airflow
airflow connections test google_cloud_default
# Verificar scopes de Gmail API
# Debe incluir: https://www.googleapis.com/auth/gmail.readonlyComandos de Diagnóstico
# Estado general del sistema
airflow info
# Verificar DAGs y su estado
airflow dags list
# Verificar conexiones configuradas
airflow connections list
# Verificar variables de configuración
airflow variables list
# Verificar pools de recursos
airflow pools list
# Logs en tiempo real del scheduler
tail -f /opt/airflow/logs/scheduler/latest/*.log
# Logs en tiempo real del webserver
tail -f /opt/airflow/logs/webserver.log
# Verificar procesos de Airflow
ps aux | grep airflow
# Verificar uso de recursos
htop
df -h
free -hComandos de Recuperación
# Reiniciar DAG específico
airflow dags unpause <dag_id>
airflow dags trigger <dag_id>
# Limpiar estado de DAG
airflow dags state <dag_id> <execution_date>
airflow tasks clear <dag_id> <task_id> <execution_date>
# Reiniciar servicios de Airflow
sudo systemctl restart airflow-scheduler
sudo systemctl restart airflow-webserver
# Verificar estado de servicios
sudo systemctl status airflow-scheduler
sudo systemctl status airflow-webserver6. Métricas de Rendimiento
Tiempo de Ejecución por DAG
| DAG | Tiempo Promedio | Frecuencia |
|---|---|---|
gmail_merma_to_bigquery | 5-10 min | 2x día (L-V) |
cassandra_notifications_nightly_ingestion | 15-30 min | Diario (nocturno) |
cassandra_tracker_incremental_7h | 10-20 min | Cada 7 horas |
s3_analysis_to_bigquery | 5-15 min | Diario |
Uso de Recursos
- Memoria por DAG: Máximo 4GB
- Conexiones a BD: Máximo 10 concurrentes por fuente
- Espacio en disco: Mínimo 10GB libres requeridos
Tasa de Éxito
| DAG | Tasa de Éxito |
|---|---|
gmail_merma_to_bigquery | >90% |
cassandra_notifications_nightly_ingestion | >85% |
cassandra_tracker_incremental_7h | >85% |
s3_analysis_to_bigquery | >90% |
Alertas
- SLA Violations: Cuando un DAG excede tiempo esperado (>2 horas)
- Data Quality: Cuando se detectan anomalías en los datos (>5% variación)
- Resource Usage: Cuando uso de recursos supera umbrales (>90% memoria)
- Dependency Failures: Cuando fallan DAGs upstream
- Connection Issues: Problemas de conectividad con fuentes de datos
- Schema Changes: Cambios no esperados en esquemas de datos
Monitoreo Proactivo
Verificaciones recomendadas:
| Frecuencia | Acción |
|---|---|
| Diario (9:00 AM) | Revisar estado general de todos los DAGs |
| Diario | Verificar ejecución nocturna de cassandra_notifications |
| 2x día (L-V) | Verificar ejecución de gmail_merma (8 AM y 12 PM) |
| Semanal (lunes) | Revisar logs de errores de la semana anterior |
| Mensual | Auditar métricas de rendimiento y tiempos de ejecución |
| Trimestral | Verificar conexiones, permisos y credenciales |
Consideraciones Técnicas
- Los logs se almacenan en
/opt/airflow/logscon rotación automática. - Las métricas se calculan en tiempo real basadas en el estado de los DAGs.
- Airflow se utiliza exclusivamente para fuentes que no soportan CDC (Cassandra, S3, Gmail).
- La ingesta de PostgreSQL se realiza via DataStream (no Airflow).
- El troubleshooting sistemático acelera la identificación y resolución de problemas.