-
[Datahub] slack notification 연동하기(feat. docker-compose.yml env 적용)DDP 플랫폼/Datahub 2024. 7. 25. 20:17
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 알림 메시지도 확인 가능합니다:)
- 이상 오늘의 삽질일기 끄읏🌞[datahub] 오픈소스 컨트리뷰트 후기
https://ninano1109.tistory.com/286
나의 인생 첫 오픈소스 컨트리뷰트 성공 후기
예전부터 오픈소스 컨트리뷰터라고 하면 뭔가 "찐개발자" 같다는 생각을 하곤 했다.그래서 나의 버킷리스트이기도 했던 꿈의 오픈소스 컨트리뷰트를 예상치 못한 시점(?)에얼떨결에 하게 되었
ninano1109.tistory.com
여기저기 삽질도 해보고
날려도 먹으면서
배우는 게
결국 남는거다
- Z.Sabziller