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

 

 

 

반응형