Airflow를 운영하다 보면 AIRFLOW_HOME\logs 디렉터리에 많은 로그가 쌓입니다.
해당 디렉토리에 쌓이는 Log는 Dag의 Tasks 로그(execution_time 별)로 아래와 같은 내용을 담고 있습니다.
Airflow 운영 기간이 길어지면 누적해서 쌓인 Tasks log의 용량이 상당히 크기 때문에 지속적으로 Log를 Rotation(회전)할 필요가 있습니다.
아래에 리눅스의 find 명령어(with mtime 옵션)를 사용해서 최근 30일의 Airflow 로그만 남기는 Dag 코드 남기겠습니다.
"""30일 지난 Airflow 로그를 삭제함
사용 명령어 : find [airflow log dir] -type f -mtime +30 -delete
: ex. find /opt/airflow/logs -type f -mtime +30 -delete
: 위에 명령어를 BashOperator로 실행
옵션 설명 :
: -type f : 일반 파일만 검색
* 추가 설명 : d: 디렉토리, l: 링크 파일, b: 블록디바이스, c: 캐릭터 디바이스 ...
: -mtime +30 : 생성한지 720시간 이상 지난 파일만 검색
: -delete : 삭제
"""
import pendulum
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.bash import BashOperator # Import BashOperator
"""Set DAG"""
local_tz = pendulum.timezone("Asia/Seoul")
default_args = {
'owner': 'dev-user',
'email': 'your@email.com',
'retries': 3,
'retry_delay': timedelta(minutes=10)
}
dag = DAG(
dag_id='delete_log_mtime_30',
default_args=default_args,
start_date=datetime(2021, 9, 17, tzinfo=KST_TZ),
catchup=False,
schedule_interval='* 2 * * *', # Crontime : min hour day month week / 매일 02시에 삭제
max_active_runs=3,
tags=['operation']
)
"""Task"""
del_log = BashOperator(
task_id='delete_log',
bash_command='find /home/dev-user/airflow_dir/logs -type f -mtime +30 -delete',
dag=dag
)
del_log
기타 궁금하신 사항은 댓글 남겨주세요.
감사합니다.
적은 리소스로 Airflow 설치하기 (LocalExecutor, Docker) (0) | 2022.08.08 |
---|---|
[Airflow] Docker로 Airflow 설치 시 기본 패스워드 변경 (0) | 2022.02.15 |
[Airflow] Airflow Connections에 DB접속 정보(Oracle) 저장 및 사용 1 (0) | 2021.05.29 |