🤩 마지막으로 각자 Airflow 활동을 Prometheus와 Grafana로 Monitoring하는 활동을
진행해보기로 했다
다음 글을 참고하여 진행하였다. 알려준 혜지 자기 라뷰 🫶
대한민국 데이터 엔지니어링의 미래가 정리한 글이 궁금하다면?? 👉🏻 바로 가기
Airflow에서 prometheus로 metric 정보를 보내주기 위해 설정해줘야 하는 부분이 있다.
airflow.cfg
파일을 다음과 같이 수정해준다.
go 명령어를 사용하기 위해서 golang-go를 설치해주고 exporter를 설치한다.
$ sudo apt install golang-go
$ go install github.com/prometheus/statsd_exporter@latest
Airflow가 실행 중인 같은 machine에서 statsd_exporter를 시작한다.
이때 statsd_exporter가 설치된 경로(go가 설치된 곳에 있다)를 찾아서 해당 위치에서 statsd_exporter 파일을 실행시켜줘야 한다.
$ export GOLANG=/home/ubuntu/go/bin
$ $GOLANG/statsd_exporter --statsd.listen-udp localhost:8125 --log.level debug
위에 사진의 마지막을 보면, "Accepting Prometheus Requests" addr=:9102
라고 나와있는 것을 확인할 수 있다. 9102포트에서 statsd_exporter를 추적해보자.
우선 EC2 인스턴스의 보안(인바운드 규칙)에서 포트 9102를 허용해주는 것을 잊지 말자
그리고 다음 명령어를 실행한다.
$ curl localhost:9102/metrics
이렇게 뜨면 pip install statsd
해주자
다음 명령어를 통해서 프로메테우스를 설치한다. 버전이 현재 기준이므로, 공식 페이지 에서 원하는 버전에 대한 링크를 복사하면 된다.
$ wget https://github.com/prometheus/prometheus/releases/download/v2.48.0/prometheus-2.48.0.linux-amd64.tar.gz
$ tar xvfz prometheus-*.tar.gz
$ mv prometheus-2.48.6=0.linux-amd64 prometheus
$ cd prometheus
$ export PROMETHEUS_HOME=$(pwd)
Airflow에 대한 metric도 수집하기 위해서 아래와 같이 prometheus.yml
파일의 scrape_configs
부분에서 다음 job을 추가해준다.
scrape_configs:
- job_name: airflow
static_configs:
- targets: ['localhost:9102']
프로메테우스 폴더에서 실행하면 된다.
$ ./prometheus --config.file=prometheus.yml
다음 주소 http://localhost:9090/graph
(EC2 환경이라면 localhost 대신에 인스턴스 퍼블릭 IP주소를 넣으면 된다.)에 접속하면 다음과 같이 뜬다.
$ wget https://dl.grafana.com/oss/release/grafana-10.2.2.linux-amd64.tar.gz
$ tar -zxvf grafana-10.2.2.linux-amd64.tar.gz
$ mv grafana-v10.2.2 grafana
$ cd grafana
$ export GRAFANA_HOME=$(pwd)
grafana 폴더에서 실행시켜준다
$ ./bin/grafana-server
default 계정은 다음과 같이 설정되어있다. 로그인을 하자!
검색창에 Data Sources
를 검색해서 들어가자
Add data source
클릭하자
Prometheus
선택하자
이름과 Connection url을 설정해준다.
Dashboard -> New Dashboard 해주고 다음 깃허브 에 있는 json 파일로 구성해준다. 그리고 airflow에 있는 스케줄러를 돌려주면 이렇게 찍힌다!!
멋있으십니다