로컬 개발 환경에서 Sentry의 핵심 데이터 처리 엔진인 Snuba를 설정하는 방법을 안내합니다. 이 문서는 Mac 기반 시스템을 대상으로 하며, Linux 또는 Windows 환경에서도 유사한 단계를 따를 수 있습니다.
Git 저장소 클론하기
먼저 Sentry와 Snuba 저장소를 별도로 클론합니다.
git clone https://github.com/getsentry/sentry.git
git clone https://github.com/getsentry/snuba.git
시스템 의존성 설치 (Mac 예시)
Xcode CLI 도구를 설치하고 Brewfile을 통해 필요한 패키지들을 가져옵니다.
Xcode CLI 도구 설치
xcode-select --install
Brewfile 구성
sentry 폴더로 이동하여 Brewfile을 확인합니다.
cd sentry
아래는 Brewfile의 일부 내용입니다:
# devservices 실행에 필요
cask 'docker'
brew 'pyenv'
# pyenv의 python-build에 필요
brew 'openssl'
brew 'readline'
# yarn test -u에 필요
brew 'watchman'
# 일부 Sentry 종속성 빌드에 필요
brew 'pkgconfig'
brew 'libxslt'
brew 'libxmlsec1'
brew 'geoip'
# Big Sur에서는 wheel 없음
brew 'librdkafka'
Docker Desktop이 이미 설치되어 있다면 cask 'docker' 부분을 주석 처리할 수 있습니다.
다음 명령어로 모든 의존성을 설치합니다.
brew bundle --verbose
Docker가 실행 중이지 않다면 다음과 같이 시작합니다.
open -g -a Docker.app
빌드 툴체인 구성
Sentry는 Python Wheels(이진 확장 모듈 포함)에 의존하며, 다음 시스템에서 분배됩니다:
- Linux: PEP-513(
manylinux1) 호환 - macOS 10.15 이상
위 시스템 중 하나를 사용하지 않는 경우 Rust 툴체인을 설치해야 합니다. Rust 공식 사이트를 참조하세요.
Rust 툴체인은 아래 명령어로 최신 상태를 유지할 수 있습니다.
rustup update stable
Python 설정
Pyenv을 사용해 Python 버전을 관리합니다.
make setup-pyenv
Zsh 사용자라면 아래 명령어로 Python 경로를 확인할 수 있습니다.
which python
결과는 $HOME/.pyenv/shims/python과 유사해야 합니다.
가상 환경 생성
Python 가상 환경을 생성하고 활성화합니다.
python -m venv .venv
source .venv/bin/activate
Snuba 관련 컨테이너 시작
sentry 디렉토리로 이동하여 master 브랜치를 체크아웃하고 최신 버전을 가져옵니다.
cd ../sentry
git checkout master
git pull
source .venv/bin/activate
sentry devservices up --exclude=snuba
위 명령어는 PostgreSQL, Clickhouse, Kafka, Redis 등의 서비스를 시작합니다.
컨테이너 목록을 확인하려면:
docker ps
Snuba 가상 환경 구성
Snuba 디렉토리로 이동하여 Python 환경을 설정합니다.
cd snuba
make pyenv-setup
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip==21.1.3
make develop
마이그레이션 적용
Snuba 마이그레이션 목록을 확인합니다.
snuba migrations list
모든 마이그레이션을 강제로 실행합니다.
snuba migrations migrate --force
마이그레이션 검증
Clickhouse 컨테이너에 접속하여 데이터가 제대로 적용되었는지 확인합니다.
docker exec -it sentry_clickhouse clickhouse-client
sentry_local 테이블의 데이터 수를 확인합니다.
SELECT count() FROM sentry_local;
엔티티 목록 확인
Snuba에서 사용 가능한 엔티티 목록을 출력합니다.
snuba entities list
개발 서버 시작
Kafka에서 데이터를 수집하는 API 및 Snuba 소비자를 시작합니다.
snuba devserver
브라우저에서 http://localhost:1218/events/snql을 열어 간단한 쿼리 인터페이스를 사용할 수 있습니다.