인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

kyou님의 프로필 이미지
kyou

작성한 질문수

Airflow 마스터 클래스

스케줄러 부하 줄이기

다중 스케줄러 실행 시 확인 방법 문의

작성

·

10

0

강사님, 안녕하세요.

다중 스케줄러 실행 시 정상적으로 동작하고 있는지 확인할 수 있는 방법에 대해 문의드립니다.

현재 Worker와 Scheduler를 다중으로 실행하여 고가용성 테스트를 진행 중입니다. Worker의 경우 Celery Flower를 통해 정상적으로 Sync가 이뤄지는 것을 확인하였습니다. 다만 Scheduler의 경우 뭔가 정확하게 확인이 안되는 것 같습니다.

우선 제가 찾은 방법으로는 메타 테이블 조회와 커맨드가 있습니다.

  1. 메타 테이블 조회

     

    아래와 같이 조회하면 running인 상태의 host가 Scheduler 수만큼 조회됩니다. hostname도 모두 일치합니다.

select *
  from job
 where job_type = 'SchedulerJob'
   and state = 'running';
  1. 커맨드

     

    아래와 같이 커맨드 실행 시 'Found one alive job.'이 출력됩니다.

$ airflow jobs check --job-type SchedulerJob
Found one alive job.

Scheduler 로그 확인 시 모두 heartbeat은 계속 요청하고 있습니다. 혹시 Worker와 같이 명확하게 다중 스케줄러 환경인지 확인하는 방법이 있을까요?

답변 1

0

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 kyou 님!

강의 내용에 없던 scheduler 고가용성 테스트도 해보시고 좋습니다 ^^

일단 airflow web에서도 scheduler 현황을 파악할 수 있는 메뉴는 없고, flower 웹에서는 worker 현황만 보이기 때문에 멀티 스케줄러 현황을 보기가 좀 여려울 거에요.

우선 kyou 님 질문에 답변 드리자면 DB를 통해서 확인하셔도 되고 CLI 사용하실 때 --allow-multiple --limit 100 옵션을 넣어서 해보실래요? 그럼 scheduler 노드 개수가 나올꺼에요.

 

airflow jobs check --job-type SchedulerJob --allow-multiple --limit 100

 

일반적으로 scheduler alive 등의 모니터링은 Grafana 를 통해서 쉽게 확인할 수 있습니다. 참고로 airflow는 여러 metric 정보를 내보낼 수 있는 기능이 있는데 statsD 라는 Metric 수집기를 사용해서 Metric 정보를 내보내고 이를 prometheus 에 저장, Grafana dashboard 로 구성하는게 가능합니다.

Airflow statsD 전송 --> stateD exporter --> prometheus --> Grafana

 

이런 흐름으로 metric 정보 전송이 가능한데 exporter, prometheus, Grafana 3개 모두 docker 컨테이너로 띄울 수 있어서 한번 해보시는것도 좋을 것 같아요. 참고로 airflow statsD 로 metric 을 내보내기 위해 파라미터 설정을 몇 가지 해줘야 합니다. 아래 문서를 참고해보세요.

https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html

 

Grafana Dashboard에 따라서 scheduler의 상태를 그래프로 볼 수 있습니다.

한번 구성해보는것도 나쁘지 않을 것 같아요. ^^

그럼 새해복 많이 받으시고 화이팅입니다!

kyou님의 프로필 이미지
kyou

작성한 질문수

질문하기