Cheaf Docs
Data/Airflow

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

  1. Acceder a la pestaña "DAGs"
  2. 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:

  1. Indicador de estado general (esquina superior derecha)

    • Verde: Sistema operativo normal
    • Amarillo: Advertencias menores
    • Rojo: Problemas críticos
  2. Gráfico de ejecuciones (centro de la pantalla)

    • Barras verdes: Ejecuciones exitosas
    • Barras rojas: Ejecuciones fallidas
    • Altura de barras: Volumen de ejecuciones
  3. 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:

  1. Graph View: Dependencias entre tareas

    • Cajas verdes: Tareas exitosas
    • Cajas rojas: Tareas fallidas
    • Cajas amarillas: Tareas en progreso
    • Líneas: Dependencias entre tareas
  2. Tree View: Historial de ejecuciones

    • Columnas: Fechas de ejecución
    • Filas: Tareas individuales
    • Colores: Estado de cada tarea por fecha
  3. 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:

  1. Verificar ejecución en horarios programados
  2. Revisar logs de extracción de Gmail
  3. Monitorear carga a BigQuery
  4. 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:

  1. Verificar ejecución nocturna diaria
  2. Revisar logs de extracción de Cassandra
  3. Validar conteo de registros entre origen y destino
  4. 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:

  1. Verificar ejecución cada 7 horas
  2. Revisar logs de deduplicación
  3. Validar datos existentes vs nuevos
  4. 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:

  1. Verificar ejecución diaria
  2. Revisar logs de descarga de S3
  3. Validar procesamiento de JSONs (original_dataset y left_dataset)
  4. Monitorear carga paralela a BigQuery

4. Análisis de Logs

Acceso a Logs

  1. Hacer clic en el DAG específico
  2. Seleccionar la ejecución deseada
  3. Hacer clic en la tarea específica
  4. 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 filas

Logs 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_detail

Logs 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 completada

5. 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:

  1. Hacer clic en el DAG fallido
  2. Revisar la ejecución más reciente
  3. Identificar la tarea fallida (círculo rojo)
  4. Revisar logs de la tarea fallida
  5. Identificar el error específico
  6. 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:

  1. Verificar que el DAG esté activo (toggle azul)
  2. Revisar el schedule del DAG
  3. Verificar que no haya errores en el código del DAG
  4. 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:

  1. Revisar logs de auto-cleanup
  2. Verificar espacio liberado después de limpieza
  3. Monitorear DAGs que generan muchos logs
  4. 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.log

S3 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.readonly

Comandos 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 -h

Comandos 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-webserver

6. Métricas de Rendimiento

Tiempo de Ejecución por DAG

DAGTiempo PromedioFrecuencia
gmail_merma_to_bigquery5-10 min2x día (L-V)
cassandra_notifications_nightly_ingestion15-30 minDiario (nocturno)
cassandra_tracker_incremental_7h10-20 minCada 7 horas
s3_analysis_to_bigquery5-15 minDiario

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

DAGTasa 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:

FrecuenciaAcción
Diario (9:00 AM)Revisar estado general de todos los DAGs
DiarioVerificar 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
MensualAuditar métricas de rendimiento y tiempos de ejecución
TrimestralVerificar conexiones, permisos y credenciales

Consideraciones Técnicas

  1. Los logs se almacenan en /opt/airflow/logs con rotación automática.
  2. Las métricas se calculan en tiempo real basadas en el estado de los DAGs.
  3. Airflow se utiliza exclusivamente para fuentes que no soportan CDC (Cassandra, S3, Gmail).
  4. La ingesta de PostgreSQL se realiza via DataStream (no Airflow).
  5. El troubleshooting sistemático acelera la identificación y resolución de problemas.