data engineering/airflow
[Airflow] 로그 파일 관리
nani-jin
2024. 6. 17. 16:46
1. 필요성
- 로그는 로그 폴더 내에 기록되며 디스크 용량은 한계가 있어 가득차면 에러를 발생시킨다. 또한 오래된 로그 파일에 민감한 정보가 담겨있다면 보안의 위험성이 있다. 따라서 이를 주기적으로 삭제하고 백업(s3)하는게 필요하다
2. Airflow 로그 위치
- 일반적인 실행의 경우, logs 폴더는 다음 위치에 기록된다
- [logging]
base_log_folder = /var/lib/airflow/logs - [scheduler]
child_process_log_directory = /var/lib/airflow/logs/scheduler
- [logging]
- docker compose로 실행된 경우, logs 폴더를 host volume 형태로 유지한다
- volumes:
-${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags
-${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
- volumes:
3. 관리
- 그렇다면 어떻게 로그 파일을 관리할 수 있을까?
- 로그 로테이션(Log rotation)
- 로그 로테이션은 로그 파일이 일정 크기에 도달하거나 특정 기간이 지나면 새로운 로그 파일로 교체하고, 이전 로그 파일을 백업하는 방식이다. 대표적인 도구로 리눅스 환경에서 쓸 수 있는 'logrotate'가 있다
- S3, GCS 와 같은 객체 스토리지 사용시
- 수명 주기 정책을 설정해 오래된 로그 파일을 자동으로 삭제할 수 있다
- Elasticsearch 사용시
- 인덱스 수명 주기 관리를 사용해 오래된 로그 데이터를 관리할 수 있다
- 로그 로테이션(Log rotation)
[출처] 데이터 엔지니어링 데브코스