Sentry 모니터링 - Snuba 데이터 플랫폼 로컬 개발 환경 설정 가이드

로컬 개발 환경에서 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을 열어 간단한 쿼리 인터페이스를 사용할 수 있습니다.

태그: Sentry snuba ClickHouse

6월 24일 22:46에 게시됨