Sentry와 디스코드 (무료로) 연동하기

육기준·2024년 6월 4일
5
post-thumbnail

📝 사건의 전말

학교 동아리 프로젝트로 진행중인 PiCK 안드로이드 앱에 Sentry를 적용해 지금까지 쓰고 있습니다.

그런데 오류가 떠도 저한테 직접 메세지로 알려주진 않다보니, 아침부터 계속 로그 화면을 켜두고 모니터링해야 하는 문제가 있었습니다.
게다가 오류가 발생했을 때 자동으로 새로고침이 되는게 아니기에, 중간중간 새로고침해야 하는 불편함도 있었습니다.

이런 불편함들이 늘어나던 차에, 오류 제보까지 점점 늘어나고 있었습니다.
오류 제보 기능이 없었기에 사용자가 제게 와서 직접 제보를 하는 방식이었는데, 이 부분도 사용성에 꽤 문제가 되었기에 센트리의 오류 로그와 디스코드를 연동해보기로 했습니다.

🔗 자동 연동 시도

우선 센트리와 메신저를 연결하는 방법은 여러가지가 있습니다.

슬랙과 연동할 수도, 디스코드와 연동할 수도, 정말 뜬금없이 마이크로소프트 팀즈와 연동할 수도 있습니다.
그 외에도 깃허브, 깃랩, 비트버킷 등 여러 서비스들을 지원하는 모습입니다.

제가 정한 건 디스코드였기에, 디스코드로 들어가 봅니다.

유료 에반데;

아뿔싸, 디스코드 연동을 사용하려면 유료 플랜에 가입해야 했습니다.

슬프게도 유료 플랜의 최소 가격은 $29였고, 지원금도 잘 안 나오는 동아리 서비스에 적용하기엔 너무 큰 돈이였습니다.

이러면 어떻게 연동하지..?

방법이 없다고 생각했으나.. 다행히도 웹훅 연동은 무료였습니다.

하지만 저는 순수 프론트만 공부하던 개발자로, 웹훅은 디스코드 서버 설정 창에서나 보던 메세지였습니다.

그래도 Sentry 공식 사이트에 예제 문서예제 코드가 있으니, 이 문서를 읽으면서 웹훅으로 시도해봅니다.

🪝 웹훅으로 수동 연동하기

웹훅으로 수동 연동하면서, 단순한데 치명적인 문제가 몇개 생겼습니다.
아무래도 처음 하는 서버 작업에, discord.js까지 건드려야 하다 보니 조금 헷갈리는 게 많았던 것 같습니다.

유저 데이터는 어디로..?


예제 문서를 보면, 데이터로 유저 정보나 태그 등 이벤트에 대한 모든 정보가 넘어오는 페이로드가 있는 걸 알 수 있습니다.
근데 이상하게도 제 서버에서는 일부 데이터만 넘어왔습니다.

처음엔 유저 데이터를 따로 받질 않다 보니 그냥 오류 데이터만 넘어오면 됬었는데, 개발중에 유저 데이터도 전송하게 수정하고 나서부터 이 부분이 계속 걸렸습니다.

여기서 몇시간을 해맸는데.. 알고 보니 integration 설정에서 세팅을 켜주는게 아니라 alerts에서 따로 액션을 만드는 방식으로 설정하는 거였습니다.

날짜가 왜 이러지;

넘어오는 날짜와 시간이 한국 시간대가 아닌 GMT 시간대를 기준으로 반환되는 문제가 있었습니다.

센트리 사이트를 뒤져본 결과, 유저 설정에 시간대 설정이 있긴 했는데.. 사이트에서 표기되는 시간대만 한국 시간대로 바뀌었고 웹훅의 시간대는 바뀌지 않았습니다.

아무리 찾아봐도 자료가 안 나와서 결국 dayjs 라이브러리를 이용해서 반환된 날짜와 시간을 한국 시간대로 바꿔주었습니다.
(솔직히 좀 비효율적인 것 같긴 합니다.. 혹시 센트리와 메신저 연동 해보신 적 있으신 분은 댓글로 알려주시면 감사하겠습니다.)

🚀 결론

결국 어떻게든 해서 완성은 시켰습니다.
코드도 더럽고, 크게 복잡한 기능도 없는데 시간이 걸리긴 했지만 나름 재밌는 경험이었던 것 같습니다.
(그리고 가끔 디스코드로 수십통씩 날아오는 500 에러도 참.. 즐겁습니다)

아 그리고, 서버 해결을 아직 못 했습니다.
학교에서 지원하는 배포 서비스라도 써볼까 했는데, 기능 자체도 너무 단순한데다가 요즘 갈아엎고 있어서 그런지 좀 복잡해져서 안 쓰기로 했습니다.
아마 홈서버라도 구축해서 나중에 다시 올리지 않을까 싶긴 한데, 이 부분은 좀 더 알아봐야 할 것 같습니다.

https://github.com/five-standard/PiCK_Android_Webhook

번외

첫 글이라 글을 잘 쓴건지 모르겠습니다.
다른 선배님들 보면 다들 잘 쓰시는 것 같은데, 앞으로 개발만 하지 말고 글도 좀 많이 써봐야 할 것 같습니다.
아무튼 제 첫 글 읽어주셔서 감사합니다.

profile
Front-End 전문가가 되기 위해 꾸준히 공부하고 있습니다

4개의 댓글

comment-user-thumbnail
2024년 6월 5일

팀즈도 채팅 프로그램이라구요 ㅠㅠ
뜬금 없지 않다구요 ㅠㅠ

1개의 답글
comment-user-thumbnail
2024년 6월 11일

뻘짓에도 다 의미가 있더라고요
저 같은 경우에도 discord.js를 nest.js에서 사용해볼려고 뻘짓한 적 있어요.

1개의 답글