본문 바로가기
Sentry

[Sentry] slack alerts 연동하기 + sentry slack message 커스터마이징

by dohye1 2024. 7. 28.

목차

    반응형

    Sentry를 사용하면 error alerts를 slack으로 받아서 확인할 수 있다!

    sentry + slack 연동

    사실 해당 내용은 공식문서를 그대로 따라하면 된다

    https://docs.sentry.io/organization/integrations/notification-incidents/slack/

     

    Slack

    Learn more about Sentry's Slack integration and how you can triage, resolve, and archive Sentry issues directly from Slack.

    docs.sentry.io

     

    연동할때 신경써야하는부분을 말해보자면

    sentry alerts를 받을 채널에 sentry app 설치

    채널의 상세모달에 들어가서 앱을 추가해야함!!

     

    sentry에 alerts를 보낼 채널 정보 입력

    입력해야할 정보는 3가지가있는데,

    1. slack workspace

    2. slack channel name

    3. slack channel id

     

    1, 2는 어렵지않고, 3같은경우는 채널 상세모달 가장 하단에있는 ID를 복사해서 입력하면된다!

    메시지 커스터마이징

    default message

    기본적으로 연동만하고 아무 설정을 해주지않았을때는 alert가 아래처럼 온다.

    - issue type

    - stack trace에 있는 description

    - status

    - alert type

    - time

    왼쪽 - sentry 상세페이지, 오른쪽 - 슬랙 alerts 메시지

     

     

    센트리에 리포트되는 에러 상세메시지는 실제 시스템에서 던지는 에러의 메시지이다.

    <Button
        onClick={() => {
    	    console.log('여기가 실행되냐?');
    	    throw new Error('여긴가?');
        }}>
    	테스트
    </Button>

    해당 버튼을 클릭하면 Error를 Throw한다.

    왼쪽 - sentry 상세페이지, 오른쪽 - 슬랙 alerts 메시지

    위 에러를 보면 error throw에 적힌내용이 센트리로 리포트되는것을 확인할 수 있고, 해당 메시지가 slack alerts로 전송되는것도 볼 수 있다.

     

    그런데 센트리 상세페이지를 보면 unhandled, handled : false로 되어있는것을 볼 수있는데, 저렇게 뜨는 이유는 해당 에러를 catch해주는곳이 없기때문이다.

     

    그럴땐 아래처럼 try-catch로 감싸주면 센트리에는 handled error로 리포트된다!

    <Button
        onClick={() => {
            try {
    	        console.log('여기가 실행되냐?');
    	        throw new Error('try-catch문에 정리');
            } catch (error) {
            	Sentry.captureException(error);
            }
            }}
        >
        테스트
    </Button>

     

    아래 페이지를 보면 handled: true로 보여진다.

    sentry 상세페이지

    여기서 많이 헷갈릴수도있는게, 

    센트리는 동일 유형의 이벤트를 하나의 이슈로 묶는다.

     

    그래서 첫번째에러에 대해서는 슬랙메시지가왔지만, 두번째 에러에대해서는 따로 슬랙메시지가 오지않았다.

    이슈의 상세페이지에서 events들을 확인할 수 있다.

    all events탭에 들어가보면 동일 에러에 대해 발생한 이벤트들을 개별적으로 확인할 수 있다.

    sentry 상세페이지 - all events 탭

     

    alerts 내용을 풍부하게 만들기

    프로젝트의 alerts를 설정하는 페이지로 들어가면 아래 내용을 설정할수있는 영역이 보일것이다

     

    여기서 설정할수있는건

    - 슬랙 워크스페이스

    - 슬랙 채널(채널 ID)

    - alerts에 포함시킬 tag

    - alerts에 같이 적을 notes

    sentry - alerts 설정 페이지

    tag랑 notes부분을 설정해주면 alerts 메시지에 더 많은 내용을 담을수있다.

    아래 페이지에서 Alerts에 대한 설명을 읽을수있다.

     

    Slack

    Learn more about Sentry's Slack integration and how you can triage, resolve, and archive Sentry issues directly from Slack.

    docs.sentry.io

     

    Tag

    일단 tag라는게 뭔지 한번 살펴보자능

     

    Tags | Sentry for Javascript

    Tags power UI features such as filters and tag-distribution maps. Tags also help you quickly access related events and view the tag distribution for a set of events.

    docs.sentry.io

    - tag는 sentry에 리포트되는 이슈의 메타정보이다.

    - tag는 key-value꼴의 데이터이다.

    - 필터로 사용할수도있고, 태그별로 이슈를 모아서 확인할 수 있다.

     

    tag를 따로 설정해주지않아도 기본적으로 이슈에 저장되는 태그를 확인해보자

    이슈 상세에서 tags탭에 들어가보면 해당 이슈가 가지고있는 tag의 상세를 볼 수 있다.

     

    그래서 저 tag의 key를 아래 tags 뒤에잇는 input에 슬랙으로 받아보고싶은 tag의 key를 쉼표로 구분해서 넣어주면

    아래 슬랙메시지에 browser, user 태그들의 value값이 같이 보내진다.

     

    tag는 센트리에서 기본적으로 설정하는것들도 있지만, 사용자가 custom하게 추가할수있기도하다.

    setTag 메서드를 사용해 key, value를 설정해주면 해당 에러는 sentry에 이슈 추가될때 tag도 같이 추가된다.

    onClick={() => {
      try {
      	console.log('여기가 실행되냐?');
    	throw new Error('try-catch문에 정리');
      } catch (error) {
    	Sentry.setTag('hyewon', '이게 왜 에러야~~');
    	Sentry.captureException(error);
    	}
    }}

     

     

     

    그래서 alerts tags에 내가 커스텀하게 추가한 태그 key를 넣어주면 에러 발생시 해당 tag의 value가 있다면 슬랙 alerts에 같이 전송된다

     

    notes

    tags말고 notes라는것도 추가할 수 있다.

    해당 메시지의 아래부분을 보면 notes:~~~를 볼수있는데,

     

    이슈가 가진 데이터 이외에 같이 적어주고싶은 문자열을 추가해줄수있다.

    그런데, 슬랙 멘션도 설정가능하다고 나와있는데, 난 안된다.....

    @<USER_ID> 형태로 넣어주면된다고했는데, 

     

    @<USER_ID>

    @USER_ID

    이렇게 해봐도 아래처럼 유저멘션이 안된다..,ㅜㅠ뿌앵

     

    예시를 좀 찾아봤는데, 보통 이슈에 대해 참고할 URL같은거를 넣어서 쓰는것같음!!

     

     

    참고

     

     

    More Context in Slack Alerts | Sentry Changelog

    We've improved the context and formatting of Slack alerts to help developers get necessary context without leaving their messaging channels

    docs.sentry.io

     

     

    Slack

    Learn more about Sentry's Slack integration and how you can triage, resolve, and archive Sentry issues directly from Slack.

    docs.sentry.io