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을 사용하는가에 대한 내용이 궁금하다면 링크에서 확인 고고
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 이미지가 실행되고 있는 것
한번 명령어로 실행을 진행했다면 그냥 docker desktop에서 container메뉴의 sentry container를 선택
내부의 run 버튼을 눌러도 된다.
로컬에서 띄워보자!
run 버튼으로 실행시키면 localhost:9000으로 접속이 가능할 것임
그러면 sentry 로그인 화면이 나타나고 아까 깃 클론 때릴 때 만들었던 계정으로 로그인을 해주면 완료
프로젝트 생성 레츠고
프로젝트 생성 후 만들어진 dsn을 연동해주면? (연동하는 방법은 이전 게시글 참고)
tada~ self-hosted 버전도 문제 없이 마무리!
메일 알림도 온다
self-hosted로 센츄리를 세팅하면 기본 알림으로 메일 알림이 선택되는데
이슈 발생 시점보다 약간 늦지만 알림도 잘 오는 걸 확인할 수 있었다.
errors-only 모드로 설치한 경우
이슈 트래킹 최적화 아니랄까봐 아래와 같이 메뉴들이 약간 줄어든 걸 볼 수 있다.
로컬에서 띄웠을 때 차이점
errors-only 모드의 경우 docker 메모리 사용량, 컨테이너 개수 등이 절반 가량으로 감소한 걸 확인할 수 있음
아래는 일반 버전을 설치한 경우의 캡쵸
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
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
- 발생 원인
캐시?
- 해결 방법
위의 링크를 참고하여 핵폭탄 투하 방법으로 해결
docker compose down 한 번 날려주고,
docker desktop에서 volumes랑 images 삭제하고 다시 설치를 진행해 보자.
모든 걸 지우는 방법이라 데이터 싹다 날아가니 주의 필요
kafka connection refused 또는 localhost:9000 으로 접속했을 때 502, 504 발생
- 발생 원인
maybe 메모리 등등이 부족해서 발생했을 것으로 예상
- 해결 방법
docker desktop resource 탭 부분을 모두 최대치로 변경
dsn이 안 보일 때
프로젝트 다 생성하고 이제 연동하려고 보는데 저 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},
}
}
수정하면 기분 좋아짐
참고
- Chat GPT