Apache Airflow Bulut Loglama
Apache Airflow yüksek performanslı bir orkestrasyon ürünü ve dünya çapında çok sayıda kullanıcısı var. Ülkemizde de kullanıcı sayısı giderek artıyor. Airflow çalıştırdığı işleri bize detaylı olarak gösterebilme ve işlerin durumunu detaylı bir şekilde loglama kabiliyetine sahip. Logların nerede tutulacağı ise bazen sorun olabilir. Çünkü, bir container üzerinde çalışan Airflow makinalarınız varsa o zaman o container'ın silinmesi halinde çok değerli loglarınızı da kaybedebilirsiniz.
Bu gibi tatsız bir tecrübe yaşamamak için yapılabilecek en güzel şey bu logları bulutta tutmak olacaktır. Burada zaten dökümantasyonda yazan bilgileri tekrar etmeyeceğim. Dökümantasyona bu linkten ulaşabilirsiniz. Düzenlemeniz gereken 3 adet parametre bulunuyor.
remote_base_log_folder: Bu parametre AWS için s3://bucket_name/.... şeklinde olmalıdır. Azure için ise wasb://container_name/.... şeklinde olmalıdır.
remote_log_conn_id: Tanımlamış olduğunuz bulut depolama alanının connection_id'si.
remote_logging: Bunu True olarak ayarlamalısınız.
Püf noktası:
- 1. Azure'da çalışıyorsanız logları atacağınız container adı wasb ile başlamalıdır. Aksi takdirde Airflow bu container'ı bulamayacaktır.
- 2. Dökümanlarda yazmayan bir başka nokta ise şu. Bildiğiniz gibi Airflow'da konfigürasyonumuzu farklı şekillerde yapabiliyoruz. Mesela airflow.cfg dosyası ile ya da environment variables ile çeşitli configürasyonları yapabiliriz.
AIRFLOW__LOGGING__REMOTE_LOG_CONN_ID environment variable'a örnek verebiliriz.
Aynı parametreyi airflow.cfg dosyasında REMOTE_LOG_CONN_ID olarak tanımlamamız gerekli.
ULK(Uzun lafın kısası): bu tanımladığımız parametrelerin hepsi aynı ortamda tanımlanmış olmalı. Yani environment variable'da tanımladığınız connection_id'yi REMOTE_LOG_CONN_ID'yi airflow.cfg dosyasında da tanımlarsanız bu connection id'yi bulamayacaktır.