본문 바로가기

Minding's Programming/Airflow

[Airflow] Airflow API를 통해 모니터링하기

728x90
반응형

Airflow API

Airflow는 현재 실행되고 있는 airflow의 상태 등을 알 수 있고, 외부에서 조작이 가능하도록 하는 API를 제공하고 있다. 이 API를 사용하기 위해서는 몇 가지 설정이 필요하다.

 

Airflow API 활성화

airflow.cfg의 api 섹션에서 auth_backend의 값을 변경해야 한다. 일반적으로 docker-compose.yaml파일을 사용할 경우 이미 설정이 되어있는 것을 확인할 수 있다.

# docker-compose.yaml 파일

    &airflow-common-env
    
    ...
    
    AIRFLOW__API__AUTH_BACKENDS: 'airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session'

 

또는 아래 명령어를 통해 확인해볼 수 있다.

docker exec -it {scheduler container 이름} airflow config get-value api auth_backends

>>>
airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session

 

Airflow API 사용자 추가

Airflow API 사용자는 Webserver UI 또는 CLI를 통해 추가하거나 삭제할 수 있다. (Admin 권한이 있어야 함)

[Security] - [List Users] - [+]

위와 같이 정보를 입력하고, Role에 'User'를 지정한다. (Admin 계정을 사용하는 것보다 이렇게 사용하는 것이 안전하다.)

 

API 호출해보기 (Airflow 정상 동작 확인)

curl -X GET --user "monitor:minding" http://localhost:8080/health
{"dag_processor": {"latest_dag_processor_heartbeat": null, "status": null}, "metadatabase": {"status": "healthy"}, "scheduler": {"latest_scheduler_heartbeat": "2024-11-19T04:25:08.947698+00:00", "status": "healthy"}, "triggerer": {"latest_triggerer_heartbeat": "2024-11-19T04:25:07.776136+00:00", "status": "healthy"}}%

위와 같이 airflow 각 구성에 대한 상태값을 반환해준다. 시간단위는 UTC기준이다.

 

그 외 여러가지 기능을 API를 통해 확인할 수 있다.

# 특정 DAG을 API로 Trigger하기
curl -X POST --user "airflow:airflow" -H 'Content-Type: application/json' -d '{"execution_date":"2023-05-24T00:00:00Z"}' "http://localhost:8080/api/v1/dags/HelloWorld/dagRuns"

# 모든 DAG 리스트 출력하기
curl -X GET --user "airflow:airflow" http://localhost:8080/api/v1/dags

# 모든 Variable 리스트 출력하기
curl -X GET --user "airflow:airflow" http://localhost:8080/api/v1/variables
728x90