-
[Airflow] airflow health status check 자동화 설정Airflow 2022. 8. 28. 19:46728x90
가끔 예고없이 airflow scheduler가 중단되는 현상이 발생할 때,
airflow health status 체크를 통해 스케줄러 재가동을 자동화하는 방법을 공유하려고 합니다.
airflow 공식 문서에 따르면 cli 명령어로 schduler와 DB, 그리고 worker의 상태를 확인할 수 있습니다.
https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/check-health
이 중에서 scheduler와 worker 프로세스를 감지한 후 서비스들을 재가동하는 스크립트를 다음과 같이 작성합니다.
# scheduler 체크 함수 scheduler_check () { python -m airflow jobs check --job-type SchedulerJob } # 함수 실행 scheduler_check # scheduler_check 결과에 따른 명령어 수행(성공 시 0 출력, 실패 시 1 출력) if [ $(echo $?) == 0 ] then echo 'scheduler success' else echo 'scheduler fail' nohup python -m airflow scheduler >> ~/airflow/scheduler_nohup.out & fi
# worker 체크 함수 worker_check() { python -m celery --app airflow.executors.celery_executor.app inspect ping } # 함수 실행 worker_check # worker_check의 결과 if [ $(echo $?) == 0 ] then echo 'worker success' else echo 'worker fail' nohup python -m airflow celery worker -q main >> ~/airflow/worker_nohup.out & fi
그럼 이제 airflow health 체크를 주기적으로 하기 위해서 위 스크립트(airflow_health_check.sh)를
매분마다 실행하는 crontab을 아래와 같이 설정합니다.
# airflow health status check * * * * * bash ~/airflow/airflow_health_check.sh
또는 script의 실행 로그까지 같이 저장하고 싶다면, 로그 파일에 계속해서 덮어쓰게끔 할 수도 있습니다!
# airflow health status check * * * * * bash ~/airflow/airflow_health_check.sh >> ~/airflow/health_check_error.log 2>&1
당신이 어떤 것을
할머니에게 설명해주지 못한다면,
그것은 진정으로 이해한 것이 아니다.
- A.Einstein
'Airflow' 카테고리의 다른 글
[Airflow] Airflow ExternalTaskSensor 활용법(feat. DAG Dependency) (0) 2023.02.07 [Airflow] DAG skipped 상태에서 멈춰있을 때(feat. queue 지정) (0) 2022.10.21 [Airflow] Airflow DAG skipped state 멈춤 현상 해결 (0) 2022.08.21 [Airflow] MysQL 설치 후 실행 에러 해결(feat. version을 확인하쟈!) (0) 2022.07.15 [Airflow] Airflow 초간단 설치하기(feat. 10분 컷!) (0) 2022.06.13