본문 바로가기
카테고리 없음

Airflow Task log MinIO S3 Object Storage에 통합

by 쿡노트 2023. 6. 27.
반응형

Airflow (워크플로 관리 플랫폼)를 프로젝트에 사용하고 있다. 3대 서버에 Airflow를 구성 했고(1번 2번 3번 서버로 지칭), 각 서버에 로컬로 Airflow Task log 가 쌓인다. Airflow Webserver UI에서 log 를 통합하여 볼 수 있도록 MinIO (S3 호환 Object Storage)에 연결하는 방법을 작성한다. 

(바꿔 말하면, 3번 로컬 서버에 작성된 Airflow log를 1번 또는 2번 Airflow Webserver(UI)에서도 볼 수 있도록 MinIO에 저장한다.)

 

MinIO에서 Bucket 을 생성했고, (airflow-logs) User('test') 생성 및 권한도 부여되었다. (지난번 MinIO 초기 구성 포스팅 참조)

사전 작업 Airflow S3 Connection API 라이브러리 설치 (현재 Airflow 버전에 맞춰 설치한다. Airflow 2.4.2 Version)

$ pip install apache-airflow[amazon]==2.4.2

$ pip list | grep amazon

apache-airflow-providers-amazon     7.2.0

Airflow Connection 추가

Airflow Webserver 접속 -> Admin -> Connections -> + 버튼 클릭 (Add a new record)

Connection Id : minio_test1

Connection Type : Amazono S3 선택

Extra : {"host": "http://10.xx.xx.xx:9000/", "aws_access_key_id": "test", "aws_secret_access_key": "test1234"}

Airflow MinIO connection

참고로, apache-airflow-providers-amazon의 버전이 5.0.0 이후부터 Connection Type 'Amazon S3' 가 없어졌다.

대신 'Amazon Web Services'로 사용이 가능하다.(Extra 설정 부분 변경 : host -> endpoint_url 로 변경 필수)

Connection Id : minio_test1

Connection Type : Amazon Web Services 선택

Extra : {"endpoint_url": "http://10.xx.xx.xx:9000/", "aws_access_key_id": "test", "aws_secret_access_key": "test1234"}

https://airflow.apache.org/docs/apache-airflow-providers-amazon/5.0.0/connections/aws.html

 

Amazon Web Services Connection — apache-airflow-providers-amazon Documentation

 

airflow.apache.org

Airflow.cfg 설정

--아래 3개 부분만 설정하면 된다.

remote_logging = True
remote_log_conn_id = minio_test1
remote_base_log_folder = s3://airflow-logs

Airflow DAG 테스트

Airflow 재기동 후, DAG를 실행하여, MinIO에 aiflow task log 파일이(Objects) 쌓이는지 확인해 보면 된다.

또는 Airflow Webserver에서 task 클릭해서 log 출력에 아래와 같이 찍히면 정상이다.

test001 (**hostname 출력)
*** Reading remote log from s3://airflow-logs/XX_DAG/...scheduled__2023-06-26T02:30:00+00:00_0_1.log

여담으로 airflow.cfg 또는 airflow connection 설정은 정상인데, MinIO에 로깅이 안될 경우 MinIO Web Console에 Airflow에서 접속 설정한 ID/PASSWORD (aws_access_key_id": "test"/"aws_secret_access_key": "test1234")로 접속 테스트 수행해 보길 권장한다.

반응형