ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Datahub] slack notification 연동하기(feat. docker-compose.yml env 적용)
    DDP 플랫폼/Datahub 2024. 7. 25. 20:17
    728x90

     
    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
     

    댓글

Designed by Tistory.