Sentry 연결하기
Mocco는 Sentry 조직의 internal integration을 통해 Sentry 이슈 웹훅을 받습니다. Sentry가 새 이슈를 만들 때마다 Mocco는 이를 Discord에 게시할 수 있습니다.
Mocco의 소유자나 관리자여야 하고, Sentry에서 통합을 관리할 수 있어야 합니다.
1. Mocco에서 소스 시작
Notifications를 열고 Sources 탭으로 이동합니다.
Add source를 클릭하고 Kind에서 Sentry를 고릅니다.
Sentry (acme)같은 Name을 입력합니다.
이 양식은 열어 두세요. Signing secret은 다음 단계에서 Sentry로부터 받습니다.
2. Sentry에서 internal integration 만들기
Sentry에서 조직의 Settings > Developer Settings로 이동합니다.
새 internal integration을 만듭니다.
Mocco같은 이름을 입력합니다.웹훅 URL을 이 소스의 Mocco ingest URL로 설정합니다. 아직 소스를 만들지 않았다면, 먼저 임시 시크릿으로 소스를 만들고 목록에서 Ingest URL을 복사해 쓰세요. 실제 시크릿은 나중에 Rotate secret으로 붙여 넣으면 됩니다.
통합에 이슈와 이벤트에 대한 읽기 권한을 주고, 웹훅 구독에서 issue를 켭니다. Sentry에서는 통합의 권한이 포괄하는 리소스만 구독할 수 있습니다.
통합을 저장합니다. Sentry가 통합 페이지에 Client Secret을 표시합니다.
통합의 alert action을 켜거나 알림 규칙을 만들 필요는 없습니다. Mocco는 Sentry가 새 이슈마다 보내는 issue 웹훅을 수신합니다. alert 웹훅은 ignored로 기록됩니다.
3. Mocco에서 마무리
Sentry의 Client Secret을 Signing secret에 붙여 넣습니다.
Create source를 클릭합니다.
새 소스의 Ingest URL을 복사하고(Copy 클릭), 이 URL이 Sentry 통합의 웹훅 URL과 같은지 확인합니다.
Sentry는 모든 웹훅에 Client Secret으로 서명합니다(Sentry-Hook-Signature 헤더). Mocco는 전달마다 이를 확인하고, 일치하지 않는 요청은 모두 거부합니다.
Sentry에서 Client Secret을 재설정했다면, Mocco에서 해당 소스의 Rotate secret을 클릭하고 새 시크릿을 붙여 넣으세요. ingest URL은 그대로입니다.
받게 되는 이벤트
| Sentry 웹훅 | Mocco 이벤트 |
|---|---|
issue, action created | sentry.issue.created |
issue, 그 밖의 action(resolved, assigned, archived, unresolved) | ignored로 기록 |
| 그 밖의 모든 리소스 | ignored로 기록 |
sentry.issue.created 규칙에 쓸 수 있는 필터 키:
| 키 | 예시 | 비고 |
|---|---|---|
project | web | Sentry가 보낸 경우의 Sentry 프로젝트 슬러그. |
environment | production | 이슈에 environment가 없으면 unknown. |
level | error | 소문자: fatal, error, warning, info, debug. |
예를 들어 sentry.issue.created에 environment=production 필터를 건 규칙은 프로덕션 이슈만 게시합니다. Sentry 프리셋은 필터 없이 sentry.issue.created를 추가합니다.
동작 확인
Sentry에서 새 이슈를 발생시킵니다(예를 들어 테스트 프로젝트에서 오류를 일으킵니다). 몇 초 안에 Mocco의 Activity 탭에 published 결과로 나타나고, 규칙이 일치하는 채널에도 게시됩니다. 아무것도 나타나지 않으면 문제 해결을 참고하세요.
Sentry는 1초 안에 응답을 기대합니다. Mocco는 즉시 응답한 뒤에 Discord에 게시하므로, Discord가 느려도 Sentry가 시간 초과되는 일은 없습니다.