Sentry 구조
AWS 연동 및 Sentry 내부 작동방식
- Sentry 21.x.x 버전 이후부터 기존 방식과 다르게 Nginx Proxy Pass 방식을 사용하여 WEB 컨테이너(Django 기반)로 전달해주는 방식으로 변경.
- Sentry-release 서버는 기존과 내부 작동방식만 다르며, AWS 서비스와 연결하여 사용하는 방식은 기존과 동일합니다.
- Sentry 구축 간 HTTPS 연동불가 이슈
Sentry 서버 구축 후 AWS ALB(SSL 인증서 추가)와 연동하는 과정 중에서 내부 Nginx 컨테이너에서 Port:443 요청 InBound를 하지 못하여 Port:9000 서비스를 할 수 없는 이슈가 발생.
Sentry Main 소스코드 버전파일 “Nginx SSL” 설정을 사용한 방식으로 구성.
AWS ALB 서비스로 SSL 설정 시 Sentry-Release 관리 페이지 버전 설치 및 사용
Sentry-Release 관리 페이지 : https://github.com/getsentry/sentry/releases
구축 방법
Docker, Docker-compose, Git 설치
$ sudo yum -y update && sudo yum -y install docker git
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Docker 설정 및 Docker-compose 권한 설정
$ sudo systemctl enable docker
$ sudo systemctl start docker
$ sudo chown $USER /var/run/docker.sock
Sentry dir 생성 및 Script 설치
$ mkdir sentry
$ git clone https://github.com/getsentry/onpremise.git ./sentry
Sentry Config 설정
$ cd sentry/sentry
$ mv config.example.yml config.yml
$ mv requirements.example.txt requirements.txt
$ mv sentry.conf.example.py sentry.conf.py
$ cd sentry/sentry
-rw-rw-r-- 1 ec2-user ec2-user 3465 3월 4 05:33 config.yml
-rwxrwxr-x 1 ec2-user ec2-user 487 3월 4 05:22 entrypoint.sh
drwxrwxr-x 2 ec2-user ec2-user 94 3월 4 05:28 old
-rw-rw-r-- 1 ec2-user ec2-user 19 3월 4 05:22 requirements.txt
-rw-rw-r-- 1 ec2-user ec2-user 7497 3월 4 05:22 sentry.conf.py
Sentry 설치
$ cd sentry
$ sudo ./install.sh
합계 88
-rw-rw-r-- 1 ec2-user ec2-user 4733 3월 4 05:22 LICENSE
-rw-rw-r-- 1 ec2-user ec2-user 5399 3월 4 05:22 README.md
drwxrwxr-x 2 ec2-user ec2-user 24 3월 4 05:22 clickhouse
drwxrwxr-x 2 ec2-user ec2-user 45 3월 4 05:22 cron
-rw-rw-r-- 1 ec2-user ec2-user 9211 3월 4 05:29 docker-compose.yml
drwxrwxr-x 2 ec2-user ec2-user 64 3월 4 05:39 geoip
drwxrwxr-x 2 ec2-user ec2-user 47 3월 4 05:22 install
-rwxrwxr-x 1 ec2-user ec2-user 15898 3월 4 05:22 install.sh
drwxrwxr-x 2 ec2-user ec2-user 24 3월 4 05:22 nginx
drwxrwxr-x 2 ec2-user ec2-user 74 3월 4 05:39 relay
drwxrwxr-x 2 ec2-user ec2-user 52 3월 4 05:22 scripts
drwxrwxr-x 3 ec2-user ec2-user 102 3월 4 06:07 sentry
-rw-r--r-- 1 root root 33567 3월 4 05:39 sentry_install_log-2021-03-04_05-33-28.txt
drwxrwxr-x 2 ec2-user ec2-user 50 3월 4 05:33 symbolicator
-rwxrwxr-x 1 ec2-user ec2-user 4711 3월 4 05:22 test.sh
drwxrwxr-x 2 ec2-user ec2-user 24 3월 4 05:22 zookeeper
* 위 설정이 완료되면 install.sh 스크립트를 실행시켜 설치를 진행하면 되겠습니다.
Sentry 컨테이너 실행 및 확인
$ cd sentry
$ docker-compose up -d
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------------------
sentry_onpremise_clickhouse_1 /entrypoint.sh Up 8123/tcp, 9000/tcp, 9009/tcp
sentry_onpremise_cron_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp
sentry_onpremise_geoipupdate_1 /usr/bin/geoipupdate -d /s ... Exit 1
sentry_onpremise_ingest-consumer_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp
sentry_onpremise_kafka_1 /etc/confluent/docker/run Up 9092/tcp
sentry_onpremise_memcached_1 docker-entrypoint.sh memcached Up 11211/tcp
sentry_onpremise_nginx_1 nginx -g daemon off; Up 0.0.0.0:9000->80/tcp
sentry_onpremise_post-process-forwarder_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp
sentry_onpremise_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp
sentry_onpremise_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
sentry_onpremise_relay_1 /bin/bash /docker-entrypoi ... Up 3000/tcp
sentry_onpremise_sentry-cleanup_1 /entrypoint.sh 0 0 * * * g ... Up 9000/tcp
sentry_onpremise_smtp_1 docker-entrypoint.sh exim ... Up 25/tcp
sentry_onpremise_snuba-api_1 ./docker_entrypoint.sh api Up 1218/tcp
sentry_onpremise_snuba-cleanup_1 /entrypoint.sh */5 * * * * ... Up 1218/tcp
sentry_onpremise_snuba-consumer_1 ./docker_entrypoint.sh con ... Up 1218/tcp
sentry_onpremise_snuba-outcomes-consumer_1 ./docker_entrypoint.sh con ... Up 1218/tcp
sentry_onpremise_snuba-replacer_1 ./docker_entrypoint.sh rep ... Up 1218/tcp
sentry_onpremise_snuba-sessions-consumer_1 ./docker_entrypoint.sh con ... Up 1218/tcp
sentry_onpremise_snuba-subscription-consumer-events_1 ./docker_entrypoint.sh sub ... Up 1218/tcp
sentry_onpremise_snuba-subscription-consumer-transactions_1 ./docker_entrypoint.sh sub ... Up 1218/tcp
sentry_onpremise_snuba-transactions-consumer_1 ./docker_entrypoint.sh con ... Up 1218/tcp
sentry_onpremise_subscription-consumer-events_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp
sentry_onpremise_subscription-consumer-transactions_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp
sentry_onpremise_symbolicator-cleanup_1 /entrypoint.sh 55 23 * * * ... Up 3021/tcp
sentry_onpremise_symbolicator_1 /bin/bash /docker-entrypoi ... Up 3021/tcp
sentry_onpremise_web_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp
sentry_onpremise_worker_1 /etc/sentry/entrypoint.sh ... Up 9000/tcp
sentry_onpremise_zookeeper_1 /etc/confluent/docker/run Up 2181/tcp, 2888/tcp, 3888/tcp
Sentry Install Script(설치 및 컨테이너 기동)
#!/bin/bash
sudo yum -y update
sudo yum -y install docker git
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo systemctl enable docker
sudo systemctl start docker
sudo chown $USER /var/run/docker.sock
git clone https://github.com/getsentry/onpremise.git /home/ec2-user/sentry
sudo mv /home/ec2-user/sentry/sentry/config.example.yml /home/ec2-user/sentry/sentry/config.yml
sudo mv /home/ec2-user/sentry/sentry/requirements.example.txt /home/ec2-user/sentry/sentry/requirements.txt
sudo mv /home/ec2-user/sentry/sentry/sentry.conf.example.py /home/ec2-user/sentry/sentry/sentry.conf.py
cd sentry
sudo ./install.sh
docker-compose up -d
Sentry 사용자 계정 생성
- Sentry 사용자 계정 생성은 “sentry_onpremise_web_1” 컨테이너에 접속하여 “sentry shell” 명령을 사용하여 계정을 생성해야 한다.
서버 초기 설정은 smtp 서비스 미 구축으로 인해 WEB 페이지에서 계정생성 불가
$ docker exec -it sentry_onpremise_web_1 /bin/bash
root@49a1bbb966ee:/# sentry createuser
06:32:31 [INFO] sentry.plugins.github: apps-not-configured
* Unknown config option found: 'slack.legacy-app'
Email: sg.kim@plateer.com
Password: "input password"
Repeat for confirmation:
Should this user be a superuser? [y/N]: y
User created: sg.kim@plateer.com
Added to organization: sentry
Sentry 접속
Login
Sentry 초기 접속 화면
Sentry 프로젝트 생성 화면
Sentry Issues 화면