작성
·
10
0
강사님, 안녕하세요.
다중 스케줄러 실행 시 정상적으로 동작하고 있는지 확인할 수 있는 방법에 대해 문의드립니다.
현재 Worker와 Scheduler를 다중으로 실행하여 고가용성 테스트를 진행 중입니다. Worker의 경우 Celery Flower를 통해 정상적으로 Sync가 이뤄지는 것을 확인하였습니다. 다만 Scheduler의 경우 뭔가 정확하게 확인이 안되는 것 같습니다.
우선 제가 찾은 방법으로는 메타 테이블 조회와 커맨드가 있습니다.
메타 테이블 조회
아래와 같이 조회하면 running인 상태의 host가 Scheduler 수만큼 조회됩니다. hostname도 모두 일치합니다.
select *
from job
where job_type = 'SchedulerJob'
and state = 'running';
커맨드
아래와 같이 커맨드 실행 시 '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의 상태를 그래프로 볼 수 있습니다.
한번 구성해보는것도 나쁘지 않을 것 같아요. ^^
그럼 새해복 많이 받으시고 화이팅입니다!