4. airflowdbt-day1-4-Slack연동하기

data_hamster·2023년 8월 29일
0


알람알릴 채널 미리 생성

지정된 워크스페이스 채널로 보내는 일.
해당 워크스페이스 App 설정.
에러메세지를 보내는 함수를 생성. plugins/slack.py 사용

태스크의 속성들이 지정되는 default_args가 있었음. 거기에 사용가능한 속성중
on_failure_callback에 slack에서 만들어둔 함수를 지정함.
실패시 지정된 함수가 호출. 에러메세지를 적당히 만들어 연동이 되어있는 채널로 메세지를 보내게 되어있음.

해당 대그에서
on_failure_callback 에 세팅해줌.
해당 태스크가 무엇이 실패하건 함수가 불러질 것임.

연동이 되어있는 슬랙 워크스페이스 채널로 보내질 것임.
가장 복잡한건 - APP을 만드는 것임.

앱을 만들 수 있는 권한이 있어야함

워크스페이스 밑에 DataAlert App만들 것. create 채널을 함.

앱의 종류와 기능으로 인커밍 웹훅을 선택.
특정 엔드포인트를 하나 받음.
메세지를 보내면 연결되어있는 슬랙 채널에 메세지가 가게 될 것임.
이어서

웹훅 활성화
밑에 이 웹 훅으로 메세지를 보낼 수 있는지 샘플이 있음

웹훅 url이 있어야 함.
이때 add new 웹훅 클릭

data-alert에 보내기로 함

엔드포인트를 copy한다

받아온 엔드포인트가 있다면
POST 메소드를 보내면서 JSON 타입이고, text가 hello world!임. 실행시키면 헬로우 월드라는 메세지를 보내게 된다.

해당 엔드포인트를 기록을 했다가 사용을 해서 슬랙이 이해할 수 있는 메세지로 보내야하는데, 주소 뒷부분이 다름

이를 별도 Variable로 저장

인코딩이 되게, 암호화가 될 수 있도록 할수 있음. docker-compose의 환경변수로 넘겨줄 수도 있음.

도커 이미지에 넣을 것인지, compose yaml에 넣을것인지 결정해야 함.


실패했을 때 에어플로우가 기본으로 컨텍스트에 저장을 해줌 컨텍스트는 딕셔너리,
어떤 문제인지, 에러메세지는 무엇인지 넣어줌.
메세지 내용을 만들게 됨.
처음엔 어떤 태스크인지, 그다음 에러 내용. 틱 마크로 하면 박스가 생기면서 그 안에 택스트가 들어가게 됨.
택스트 두줄은 슬랙으로 보내는 메세지를 포맷팅

아래 함수를 호출하면서 이모지를 스크림으로 보냄.

아까 그 url로 메세지로 보내야하는데, 앞에는 동일함 그다음 Variable.get으로 가져옴. slack_url에 저장을 해놨음
어디에 보내하는지 결정
헤더는 JSON 타입이라고 컨텐트 타입 결정
실제 데이터는 받아왔던 내용 집어넣고,
최종적으로는 post라는 메소드를 호출해 링크 정하고, 데이터 내용 정하고, 헤더 세팅.
태스크가 실패했을 때 함수가 불릴 것이고 인자로 넘어온 걸. 제목, 구체 메세지를
슬랙이 이해할 메세지를 만들고,
보내야하는 url을 만들고 등등을
이걸 태스크가 가져다 써야함

dags를 세팅을 할때 default_args 세팅할때 슬랙 안에 있는 콜백함수를 지정함.
대그의 어느 태스크건 실패할 때마다. 지정된 함수가 호출되면서 인자로 컨택스트가 넘어가게 됨. 어떤 컨텍스트, 내용.

두줄 커맨드 풀고 일부로 에러를 내보고 메세지를 확인

에러 메세지를 보면
앞단에는 어떤 태스크에서 에러가 났는지 보임

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글