-
[Datahub] slack notification 연동하기(feat. docker-compose.yml env 적용)DDP 플랫폼/Datahub 2024. 7. 25. 20:17728x90
Datahub 내 발생하는 변동 및 업데이트 사항에 대해 slack 알림을 받을 수 있는 설정을 해보려고 합니다.
먼저 공식문서에 나와 있는 링크를 참고합니다.https://datahubproject.io/docs/actions/actions/slack/
Slack | DataHub
| | |
datahubproject.io
공식문서에서 확인할 수 있듯이- Adding or Removing a tag from an entity (dataset, dashboard etc.)
- Updating documentation at the entity or field (column) level.
- Adding or Removing ownership from an entity (dataset, dashboard, etc.)
- Creating a Domain
- and many more.
와 같은 datahub가 관리하는 metadata에 여러가지 변경 사항을 업데이트 할 때, slack으로 실시간 noti를 보내줍니다.
설정을 위해서 해야할 것은 아래 두가지가 있는데요,
1. slack api 설정
2. datahub 설정
1번 slack api에서의 설정은 공식문서를 보면 아주 자세~히 나와있기 때문에 무난하게 설정할 수 있으므로 pass! 하구요,
이번 글에서는 2번 datahub 설정을 다뤄보겠습니다.(이 부분이 시간을 많이 잡아먹었..)
먼저 공식문서에서 볼 수 있듯이,
어떤 설치 방법으로 datahub를 설치했는지에 따라 slack 설정 또한 4가지 방법으로 나뉠 수 있는데요.
저는 가장 무난하게 또 쉽게 사용할 수 있는 방법인 #Quickstart 버전으로 사용했기 때문에, 해당 방법을 참고하겠습니다.
여기서 보면 docker compose로 설치하는 datahub-actions container에 이미 Slack action이 미리 설치가 되어 있기 때문에,
몇가지 환경변수 설정만 해주면 끝! 입니다.
export DATAHUB_ACTIONS_SLACK_ENABLED=true
export DATAHUB_ACTIONS_SLACK_SIGNING_SECRET='65e...'
export DATAHUB_ACTIONS_SLACK_BOT_TOKEN='xoxb-601...'
export DATAHUB_ACTIONS_SLACK_CHANNEL='C0..'
# 이후 docker 재실행
datahub docker quickstart --stop && datahub docker quickstart
문제는 이거를 어디다가 적용하느냐! 인것인데..
저도 처음에는 호스트 서버에서 명령어를 입력하고 docker restart를 했지만, 실패했습니다.
docker logs {datahub-actions-1 container id} 를 실행해보면 아래와 같이 slack_action이 아직 비활성화 상태임을 볼 수 있습니다.
....
Skipping pipeline datahub_slack_action as it is not enabled
Skipping pipeline datahub_teams_action as it is not enabled
Action Pipeline with name 'ingestion_executor' is now running.
...
그리고 datahub 커뮤니티에서 간신히 발견한 한줄기 빛.
host가 아닌 docker container 안에 환경변수가 포함되어야 할 것!그저 빛..🌟
그러면 방법은 quickstart로 docker를 띄울 때 환경변수를 포함시키는 것.
그러나, docker datahub quickstart로는 환경변수를 넘길 수 없고, 실행하는 순간 새로운 docker-compose.yml 파일을 내려받아서
컨테이너를 띄우기 때문에, 임의로 환경변수 값을 넣은 커스텀 파일로 quickstart를 해보자!
docker-compose-custom.yml 이라는 명으로 파일을 하나 생성 후docker-compose.yml 파일
datahub-actions 컨테이너 아래 env 부분에 4개의 환경변수를 추가해줍니다.
이때 또 중요한 것은 저는 각 변수 값을 스트링으로('') 감쌌더니 에러가 나서 살짝 당황할뻔 했지만,# 대충 이런 에러
BoltError: `token` is invalid (auth.test result: {'ok': False, 'error': 'invalid_auth'})# 아무 터미널에서 실행
$curl -X POST -H 'Authorization: Bearer xox...' https://slack.com/api/auth.test
=> {"ok":true,"url":"https://X.slack.com/",...}% --토큰값 정상 확인
curl 명령어로 확인했을 때 토큰 값도 잘 맞았기 때문에, 고민하다가, docker-compose.yml 파일 내 다른 변수들에 string이 없길래 없애고 시도해봤더니 에러 없이 성공했습니다.
사실 저는 그냥 값을 하드코딩으로 넣었지만.. .env를 활용한 숨기는 방향으로 고민해보시는 것도 좋을 것 같습니다.
(단, quickstart 명령어가 아닌 docker compose로 실행해야 합니다.)
다시 docker를 재실행 합니다. 이때 -f 로 커스텀으로 사용할 파일을 명시합니다.datahub docker quickstart --stop && datahub docker quickstart -f docker-compose-custom.yml
datahub-actions 컨테이너 log
컨테이너 로그에도 성공적으로 활성화된 상태를 확인할 수 있고,
바로 실시간으로 slack 알림 메시지도 확인 가능합니다:)
- 이상 오늘의 삽질일기 끄읏🌞
여기저기 삽질도 해보고
날려도 먹으면서
배우는 게
결국 남는거다
- Z.Sabziller