Airflow
[Airflow] airflow health status check 자동화 설정
쫄보삽질러
2022. 8. 28. 19:46
가끔 예고없이 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
Checking Airflow Health Status — Airflow Documentation
airflow.apache.org
이 중에서 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
반응형