In Apache Airflow, il logging e il monitoraggio sono essenziali per garantire il corretto funzionamento dei flussi di lavoro. Airflow offre un sistema di logging avanzato e un'interfaccia di monitoraggio per tracciare lo stato dei task e diagnosticare eventuali problemi.
Il sistema di logging di Airflow
Airflow utilizza il modulo logging di Python e genera log a diversi livelli:
- Task logs: log specifici per ogni esecuzione di un task
- Scheduler logs: log del processo scheduler
- Web server logs: log dell'interfaccia web
- Worker logs: log dei worker (Celery, Kubernetes)
Configurazione del logging
La configurazione del logging avviene nel file airflow.cfg:
[logging]
base_log_folder = /path/to/logs
remote_logging = True
remote_log_conn_id = my_s3_conn
remote_base_log_folder = s3://my-bucket/airflow-logs
Logging remoto
Per ambienti di produzione, è consigliato utilizzare il logging remoto su servizi cloud:
- Amazon S3: archiviazione duratura e scalabile
- Google Cloud Storage: integrazione nativa con GCP
- Azure Blob Storage: per ambienti Azure
- Elasticsearch: per ricerca e analisi dei log
Metriche e monitoraggio
Airflow espone metriche tramite StatsD, che possono essere raccolte da Prometheus o altri sistemi di monitoraggio:
- dag_processing.total_parse_time: tempo di parsing dei DAG
- dagrun.duration.success: durata delle esecuzioni con successo
- ti.failures: numero di fallimenti dei task
- scheduler.scheduler_heartbeat: heartbeat dello scheduler
Alerting
Airflow supporta diversi meccanismi di alerting:
- Email: notifiche via email per task falliti o in ritardo
- Slack: integrazione con Slack per notifiche in tempo reale
- PagerDuty: per escalation automatiche
- Callback functions: funzioni custom per gestire successi e fallimenti
default_args = {
'email': ['team@example.com'],
'email_on_failure': True,
'email_on_retry': False,
'on_failure_callback': notify_slack,
}
Best Practice per il monitoraggio
- Configura sempre il logging remoto in produzione
- Imposta SLA (Service Level Agreements) sui task critici
- Monitora le metriche chiave con dashboard dedicate
- Implementa rotazione e retention dei log
- Usa livelli di log appropriati (INFO per operazioni normali, WARNING per anomalie)
Un sistema di logging e monitoraggio ben configurato è la base per operare Apache Airflow in modo affidabile in ambienti di produzione.