[Sentry] Sentry, 진짜 총 정리 다 정리 완전 정리 (self-hosted)

Error catching method using Sentry

주절

인피덕이다.

sentry 세팅 2탄을 가져왔다.

좋댓구알~♡

self-hosted로 sentry 사용하기

self-hosted 버전은 직접 sentry 서버를 구축하여 사용하는 방법이다.

sentry self-hosted 공식 링크에서 자세히 확인할 수 있으니 참고 고고

이슈 생기면 도와는 주지만 sentry discord community에 들어가서 직접 물어보고 해결하라고 하는 찐 셀프모드

특징?

센츄리에서 제공하는 버전과 비교했을 때

  • 세팅 과정에서 이슈가 발생해도 센츄리가 조언은 해줄 수 있지만 직접 해결해야 함

  • 발생하는 이슈는 센트리와 공유되는 게 아니라 세팅한 서버에 저장 및 관리됨

  • 이슈 트래킹이 1억개 발생해도 셀프로 세팅하는 것이기 때문에 센츄리에 지불할 추가 비용은 없음 (대신 데이터 저장 서버가 터질 수 있음)

등등이 대표적인 차이점이라고 볼 수 있다.

도커 설치

self-hosted 버전을 테스트 하려면 일단 docker가 필요하다.

docker가 설치되지 않았다면, 간단히 docker desktop으로 설치해주면 된다.

(docker desktop 설치 참고 블로그)

그냥 썡으로 설치하지 않고 왜 docker desktop을 사용하는가에 대한 내용이 궁금하다면 링크에서 확인 고고

Sentry 설치

docker 설치가 완료됐다면 sentry 폴더를 하나 만들어주고 sentry 레포를 가져와 보자

# 현재 docs 기준 버전 > 24.1.0
# cmd 창에 아래 라인 다 입력

VERSION="24.1.0"
git clone https://github.com/getsentry/self-hosted.git
cd self-hosted
git checkout ${VERSION}
sudo ./install.sh

# 중간에 발생하는 프롬프트
# 1. 에러 내용 sentry에 공유 할 거냐 (y/n 마음대로)
# 2. 어드민 계정 만들 거냐 (y) -> n 하면 나중에 이 프로세스 어차피 해야 함
# 2-1. 사용할 이메일 계정과 패스워드를 입력해 주자 (아무거나 입력해도 됨)

여기서 잠깐, errors-only vs. 그냥 일반

이제 그냥 git clone 해서 install 때리면 그냥 일반 모드로 설치가 되는데, error만 잡는 모드로도 변경 가능

이유: 일반 모드로 쓰면 replay 등등 여러 기능이 많아서 용량을 많이 차지할 수도 있음

sentry 프로젝트의 .env 파일을 수정해 주면 errors-only 모드 사용 가능

...
# .env 에 아래 문장 추가해주면 됨
COMPOSE_PROFILES=errors-only

현재 이 문서에서 권장하는 버전은 24.1.0인데, errors-only 옵션을 사용하려면 24.8.0+ 버전을 사용해야 한다고 함

sentry self-hosted github master 브랜치 기준으로 설치하면 24.8.0+ 버전이 설치됨

checkout master branch 하고 다시 ./install.sh 진행

설치 중 MemcachedCache 이슈가 발생할 수 있으니 참고

설치 완료

sentry 설치도 잘 됐다면 docker compose up -d로 센트리를 실행해 볼 수 있다.

아래는 docker desktop에서 sentry self-hosted 이미지가 실행되고 있는 것

image_01

한번 명령어로 실행을 진행했다면 그냥 docker desktop에서 container메뉴의 sentry container를 선택

내부의 run 버튼을 눌러도 된다.

image_02

로컬에서 띄워보자!

run 버튼으로 실행시키면 localhost:9000으로 접속이 가능할 것임

그러면 sentry 로그인 화면이 나타나고 아까 깃 클론 때릴 때 만들었던 계정으로 로그인을 해주면 완료

image_03

프로젝트 생성 레츠고

image_04

프로젝트 생성 후 만들어진 dsn을 연동해주면? (연동하는 방법은 이전 게시글 참고)

image_05

tada~ self-hosted 버전도 문제 없이 마무리!

메일 알림도 온다

self-hosted로 센츄리를 세팅하면 기본 알림으로 메일 알림이 선택되는데

이슈 발생 시점보다 약간 늦지만 알림도 잘 오는 걸 확인할 수 있었다.

image_06

errors-only 모드로 설치한 경우

이슈 트래킹 최적화 아니랄까봐 아래와 같이 메뉴들이 약간 줄어든 걸 볼 수 있다.

image_07

로컬에서 띄웠을 때 차이점

errors-only 모드의 경우 docker 메모리 사용량, 컨테이너 개수 등이 절반 가량으로 감소한 걸 확인할 수 있음

image_08

아래는 일반 버전을 설치한 경우의 캡쵸

image_09

self-hosted 진행 시 발생할 수 있는 에러

도커는 언제 봐도 제일 어려운 녀석이다…………………

하다가 계속 막힌 게 여러 번이라 결국 에러 목록과 해결했던 방법을 정리해 뒀음

여러분들도 self-hosted로 설치하다가 에러가 발생할 수 있으니 에러 발생 시 아래 내용을 참고하면 되겠다.

docker credentials 에러

ERROR: failed to solve: error getting credentials - err: exit status 1, out: ``
  • 발생 원인

docker desktop 설치 후 cmd 라인으로 docker image를 install 하려고 해서?

credsStore 부분이 docker desktop으로 설치된 버전과 cmd로 설치하는 버전이 다른 것으로 예상

  • 해결 방법

docker config 파일의 credsStore 부분을 osxkeychain으로 변경

sudo vi ~/.docker/config.json

image_10

kafka The requested image’s platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

  • 발생 원인

너는 linux/arm64/v8이고 내가 요구하는 건 linux/amd64임

  • 해결 방법

docker-compose.yml 파일에서 해당 에러가 발생하는 부분을 찾아 platform: linux/amd64를 추가

...
  kafka:
    <<: *restart_policy
    depends_on:
      zookeeper:
        <<: *depends_on-healthy
    image: "confluentinc/cp-kafka:5.5.7"
    platform: linux/amd64 <<<<<<<<<<<<<<<<<<< 이 부분
...

dependency failed to start: container sentry-self-hosted-kafka-1 is unhealthy

  • 발생 원인

캐시?

  • 해결 방법

sentry kafka 부분 설명 페이지

위의 링크를 참고하여 핵폭탄 투하 방법으로 해결

docker compose down 한 번 날려주고,

docker desktop에서 volumes랑 images 삭제하고 다시 설치를 진행해 보자.

모든 걸 지우는 방법이라 데이터 싹다 날아가니 주의 필요

kafka connection refused 또는 localhost:9000 으로 접속했을 때 502, 504 발생

  • 발생 원인

maybe 메모리 등등이 부족해서 발생했을 것으로 예상

  • 해결 방법

docker desktop resource 탭 부분을 모두 최대치로 변경

image_11

dsn이 안 보일 때

image_12

프로젝트 다 생성하고 이제 연동하려고 보는데 저 input 창이 빈 값으로 나오는 경우

  • 발생 원인

configure 세팅 이런 게 안 돼서 그런 듯

  • 해결 방법

docker desktop에서 stop -> run 하고 다시 localhost:9000으로 들어가 보면

configure 창이 나타나고 거기서 다시 세팅해주면 해결!

MemcachedCache found in sentry/sentry.conf.py, you should switch to PyMemcacheCache

  • 발생 원인

sentry errors-only 사용을 위해 24.8.0 버전으로 바꾸고 설치를 진행했는데 발생

  • 해결 방법

PyMemcacheCache 쓰라는 뜻

sentry.conf.py 파일의 BACKEND, MemcachedCache 부분을 PyMemcacheCache로 수정해 주자.

CACHES = {
  "default": {
      "BACKEND": "django.core.cache.backends.memcached.MemcachedCache", <<<<<<<  부분 PyMemcacheCache로 변경
      "LOCATION": ["memcached:11211"],
      "TIMEOUT": 3600,
      "OPTIONS": {"ignore_exc": True},
  }
}

수정하면 기분 좋아짐

image_13

참고

  • Chat GPT

이 글의 저작권은 Attribution-NonCommercial 4.0 International 라이센스를 따릅니다. Attribution-NonCommercial 4.0 International