Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Sentry 설치하기

Sentry는 오류로그나 오류의 스택트레이스를 모아서 보여주는 서비스로 사용서비스를 하고 있지만 오픈소스로 공개되어 있으므로 다운받아서 직접 설치해서 사용할 수 있다. 직접 설치하고 관리하는 것이 귀찮다면 상용서비스를 그냥 쓰면 되고 가격도 그리 비싸지 않다. 근래에 주변분들이 Sentry를 써보고 좋다고 추천을 한터라 마침 스택트레이스를 관리할 필요가 있어서 설치해서 사용해 보게 되었다. 가이드 문서가 어느 정도 되어 있지만 설치한 김에 설치과정을 정리해본다. 참고로 Ubuntu기반에서 설치를 했다. CentOS상에서도 설치를 시도했었는데 Sentry설치를 하기도 전에 관련 의존라이브러리의 버전이 엉망인데다가 CentOS는 익숙치 않아서 포기하고 Ubuntu로 갈아탔다.


의존 환경 설정
Sentry는 파이썬 기반으로 만들어졌으므로 easy_install등이 필요하므로 파이썬 관련 도구를 설치한다.

$ sudo apt-get install python-setuptools python-dev

이제 easy_install을 사용할 수 있으므로 virtualenv를 설치한다. 파이썬은 잘 몰라서 정확히는 모르지만 virtualenv는 프로젝트간에 의존성 라이브러리가 엉키지 않도록 특정 프로젝트의 폴더를 샌드박싱해 주는 것으로 보인다.

$ sudo easy_install -UZ virtualenv

이제 Sentry를 설치할 폴더를 virtualenv로 샌드박싱한다. 여기서는 ~/apps/sentry에 Sentry를 설치한다고 가정한다.

$ virtualenv ~/apps/sentry

virtualenv 설정을 했으면 다음과 같이 활성화하면 프롬프트 앞에 (sentry)라고 표시되는 것을 볼 수 있다.

$ source ~/apps/sentry/bin/activate
(sentry)$ 


데이터베이스 설치
데이터베이스를 지정하지 않으면 SQLite를 사용하지만 문서에서도 별도의 디비를 설치해서 사용하길 권장하고 있고 특히 프로덕션에서 사용할 것이라면 SQLite를 사용하지 않도록 권고하고 있다. 현재 Sentry는 PostgreSQL과 MySQL을 지원하고 있지만 PostgreSQL을 훨씬 권장하고 있으며 여기서도 PostgreSQL을 기준으로 설명한다.

$ sudo apt-get install postgresql postgresql-contrib libpq-dev

PostgreSQL은 apt-get으로 간단히 설치할 수 있고 현재 9.1버전이 설치된다.(현재 최신버전은 9.2이다.) 추가로 Sentry에서 사용할 PostgreSQL 라이브러리를 함께 설치한다.  /etc/postgresql/9.1/main/postgresql.conf파일을 열어서 #listen_addresses = 'localhost'부분의 주석을 풀어준다.

$ sudo -u postgres psql template1
psql (9.1.9)
Type "help" for help.

template1=# ALTER USER postgres with encrypted password 'YOUR_PASSWORD';

위와 같이 postgres계정으로 디비에 접속하면 정상적으로 접근하는 것을 볼 수 있다. 접속해서 posgres 계정의 비밀번호를 지정한다.

sudo /etc/init.d/postgresql restart
 * Restarting PostgreSQL 9.1 database server
   ...done.


Sendmail 설치
Sentry를 설치한 뒤에 멤버 추가나 노티피케이션을 메일로 보내려면 SMTP서버가 필요하다. 여기서는 sendmail을 사용하는데 우분투에서는 apt-get으로 간단히 설치할 수 있다.

$ sudo apt-get install sendmail
$ sudo sendmailconfig

설치한뒤에 sudo sendmailconfig를 실행하면 기본 설정파일들이 생성되고 일반적인 사용은 기본 설정으로도 가능하다.


Sentry 설치
해당 폴더로 이동해서 다음과 같이 easy_install로 Sentry를 설치한다.

$ cd ~/apps/sentry
$ easy_install -UZ sentry[postgres]

MySQL이나 PostgreSQL을 사용하지 않는다면 그냥 easy_install -UZ sentry로 설치할 수 있지만 디비를 별도로 사용한다면 위처럼 [postgres][mysql]을 붙혀주어야 관련 패키지를 함께 설치한다.

$ sentry init

위 명령어로 기본 설정파일을 생성한다. init뒤에 파일명을 주지 않으면 기본적으로 ~/.sentry/sentry.conf.py에 생성을 하고 다른 경로를 사용하고 싶다면 sentry init /etc/sentry.conf.py와 같이 파일경로를 지정해준다.

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',

    #'NAME': os.path.join(CONF_ROOT, 'sentry.db'),
    'NAME': 'sentry',
    'USER': 'postgres',
    'PASSWORD': 'YOUR_PASSWORD',
    'HOST': '',
    'PORT': '',
  }
}

~/.sentry/sentry.conf.py 파일을 열어서 데이터베이스 부분 적절하게 바꾸어준다. 현재 버전의 설정은 NAME부분이 os.path.join으로 되어 있는데 변경하는 중인지 이대로 하면 뒷부분에서 마이그레이션 작업을 할 때 제대로 동작하지 않아서 그냥 sentry로 지정해 주었다. 이 설정을 보면 알수 있겠지만 Sentry는 django기반으로 동작한다. 그밖에 부분도 필요한 부분이 있다면 적절하게 바꾸어준다.

$ sudo -u postgres createdb -E utf-8 sentry

위의 명령어로 sentry라는 디비를 생성해 준다. 앞에서 postgres계정을 생성했으므로 이 계정으로 명령어를 실행해야 문제없이 동작한다.

$ sentry --config=~/.sentry/sentry.conf.py upgrade

sentry에 필요한 테이블을 생성한다. 이 과정중에서 수퍼유저를 생성할 꺼냐고 묻는데 반드시 yes를 누르고 슈퍼유저를 생성해야 정상적으로 사용할 수 있다. 미처 생성하지 못했을 경우에는 sentry --config=~/.sentry/sentry.conf.py createsuperuser 를 실행해서 수퍼유저를 생성해야 한다.


Sentry 실행

$ sentry start

위 명령어를 실행하면 Sentry가 시작된다.

Sentry 로그인 화면

http://localhost:9000으로 접속하면(기본포트가 9000이다) 위처럼 Sentry 화면이 정상적으로 나타나는 것을 볼 수 있다. 앞에 nginx를 두는게 더 자연스럽겠지만 여기서는 굳이 다루지 않는다. 일단 오늘은 설치까지만...
2013/04/15 23:48 2013/04/15 23:48