Sentry는 실시간 이벤트 로깅 및 집계 플랫폼이다. 오류를 모니터링하고 사후 처리를 위한 정보를 추출하는 데에 특화되어 있다. (by Sentry.)
Official github : github.com/getsentry/sentry
※ Docker의 전반적인 install 및 Setting이 끝났다는 전제 하에 진행
Sentry는 Redis + DB (Postgres)와 함께 run 시켜야한다. (로그인 Session 유지 및 데이터 관리)
Data Volume 동기화를 위해 Data volume을 미리 생성
docker volume create sentry-postgres-volume
docker volume create sentry-worker-volume
docker volume create sentry-nginx-volume
docker run -d --name sentry-redis redis
docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry -v sentry-postgres-volume:/var/lib/postgresql/data postgres
docker run --rm sentry config generate-secret-key
docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
docker run -d --name sentry -v sentry-worker-volume:/var/lib/sentry/files -e SENTRY_SECRET_KEY='<secret-key>' -p 4443:9000 --link sentry-redis:redis --link sentry-postgres:postgres sentry
docker run -d --name sentry-cron -v sentry-worker-volume:/var/lib/sentry/files -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry run cron
docker run -d --name sentry-worker -v sentry-worker-volume:/var/lib/sentry/files -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry run worker
※ 주의!
Worker를 제대로 실행시켜주지 않으면 다음과 같은 창이 뜨게 된다. (Backlog task가 계속 쌓이게 됨)
여기까지 Sentry 구축은 완료되지만! 보안 요건에 따른 NLB 타겟그룹 정책때문에 별도의 웹 포트포워딩이 필요하다!
docker run -d --name sentry-nginx -p 4080:4080 -v sentry-nginx-volume:/etc/nginx/ nginx
docker exec -it sentry-nginx /bin/bash
→ 위 1번과정에서 볼륨 동기화를 시켜줬다면, Host 단에서 conf 파일을 수정할 수 있다.
server {
listen 4080 default_server;
server_name _;
location /health {
return 200 "OK";
}
return 301 https://$host$request_uri;
}
서버 인스턴스 구동 시, Docker 프로세스가 자동으로 시작될 수 있도록 system service을 등록해야 한다.
vim /usr/lib/systemd/system/sentry.service
[Unit]
Wants=docker.service
After=docker.service
[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/docker start sentry
ExecStop=/usr/bin/docker stop sentry
[Install]
WantedBy=multi-user.target
systemctl enable을 통해 /etc/systemd/system/에 서비스 등록
/etc/systemd/system/multi-user.target.wants/ 에 심볼릭 링크 생성
systemctl daemon-reload
AMI 작업 시작
sentry 관련 CLI 명령을 사용하고 싶다면, 컨테이너 내부에서 sentry config [list, get, set, …][OPTIONS] 를 사용하면 된다.
ex ) Sentry ROOT URL 조회 : sentry config get system.url-prefix
→ 추후에 v21.9.0을 Docker-compose로 다시 띄우게 된다.