kok202
센트리 on-premise 서버 mac local 에서 띄우기

2019. 3. 27. 18:44[정리] 기능별 개념 정리/Sentry

공식링크 : https://docs.sentry.io/server/installation/python/

참고링크 : https://blog.outsider.ne.kr/928

참고링크 : https://www.lesstif.com/pages/viewpage.action?pageId=30705079

추신) 도커파일도 있었다. : https://hub.docker.com/r/getsentry/sentry-cli

 

 

 

센트리를 설치하기 위한 폴더를 하나 생성해줍니다.

저는 ~/Desktop/LocalSentry/sentry 로 폴더를 만들어줬습니다.

이렇게 지정했을 때 최종적으로 설치가 완료되면 다음과 같은 디렉토리 구조를 가집니다.

Sentry 가상 환경을 돌리기위한 지정 경로 : ~/Desktop/LocalSentry/sentry

Sentry 실행 파일이 설치되는 경로 : ~/Desktop/LocalSentry/sentry/bin/sentry

Sentry 실제 소스가 설치되는 경로 : ~/Desktop/LocalSentry/sentry/lib/python2.7/site-packages/sentry

삽질 주의 ! : 파이썬 2.7 버전을 사용해야합니다.

-> 센트리가쓰는 Beautiful soup이 3 버전인데 이것이 python 3.x 으로는 호환이 안되기 때문입니다. 테스트 에러가 발생합니다.

-> mac python 2.7 버전이 자동으로 설치되어있으니 넘어갑니다.

 

 

 

1. 파이썬 라이브러리 설치를 위한 pip, setuptools 설치합니다

pip install --upgrade pip

pip install --upgrade setup tools

sudo easy_install -UZ virtualenv

# virtualenv는 파이썬 가상환경을 위해 필요한 파일입니다.

 

 

 

2. Sentry 구동을 위하여 Sentry 사용하는 Redis, PostgreSQL 설치합니다.

brew install redis

brew install postgresql

 

 

 

3. PostgreSQL template1이라는 이름으로 데이터베이스를 하나 만들고 센트리가 접근 가능한 계정을 만들어줍니다.

cd /usr/local/var/postgres

open postgresql.conf

listen_addresses = 'localhost'

psql -d template1

template1= # ALTER USER 컴퓨터_사용자_이름 with encrypted password ‘원하는 패스워드’;

# 내 컴퓨터의 사용자 이름이 무엇인지 모르겠다면 psql 에서 \du 를 해서 찾아봅니다.

 

 

 

4. 센트리를 위한 파이썬 가상환경을 설치하고 가상환경을 활성화 시킵니다.

virtualenv ~/Desktop/LocalSentry/sentry --python=python2.7

source ~/Desktop/LocalSentry/sentry/bin/activate

# 터미널 커맨드 앞에 (sentry) 가 붙여서 나온다면 가상환경이 제대로 활성화 된 것 입니다.

# 앞으로 센트리를 구동할 때는 source ~/Desktop/LocalSentry/sentry/bin/activate 를 입력하고 가상환경을 활성화 하여 실행시켜야 합니다.

 

 

 

5. 센트리 설치 및 센트리 초기화 파일을 생성합니다.

pip install -U sentry

sentry init

# sentry init을 통해서 sentry.conf.py 파일이 생성됩니다.

# sentry init 할 때 sentry init ~/Desktop/LocalSentry/.sentry와 같이 설정 파일의 경로를 지정해줄 수도 있습니다.

# 다만 그 이후 매번 모든 키워드에 SENTRY_CONF=~/Desktop/LocalSentry/ 을 추가로 입력해줘야하므로 생략합니다. 

 

 

 

6. 센트리를 PostgreSQL과 연동합니다.

# 설정파일을 열고 파일내용을 수정해줍니다.

# 주석을 해제하고 3번에서 지정한 DB, 유저, 패스워드를 입력하면 됩니다.

open ~/.sentry/sentry.conf.py

DATABASES = { 

'default': {

'ENGINE': 'sentry.db.postgres',

'NAME': 'template1',

'USER': '컴퓨터_사용자_이름',

'PASSWORD': '원하는 패스워드',

'HOST': '',

'PORT': '',

'AUTOCOMMIT': True,

'ATOMIC_REQUESTS': False,

}

 

}

 

SENTRY_WEB_OPTIONS = { 'workers': 2 } 

sentry upgrade

 

 

 

7. 센트리 구동을 위한 명령어

sentry run web&

sentry run worker&

sentry run cron&

# 이후 localhost:9000 으로 접근해봅니다.

# Oops! Something went wrong 하면서 안됩니다.

 

 

 

 

8. 센트리 DB에 아무런 프로젝트가 없어서 초기에 에러가 발생한다고 합니다. sentry shell을 켜고 기본 프로젝트를 생성해줘야합니다.

sentry shell

from sentry.models import Project 

from sentry.receivers.core import create_default_projects 

create_default_projects([Project])

# 쉘을 켜고 위에 세줄을 입력해주면 됩니다.

# 출처 : https://github.com/getsentry/sentry/issues/8862

# 다시 localhost:9000 으로 접근해보면 이제 로그인창이 나옵니다.

 

 

 

9. 센트리 웹에서 접근가능한 회원을 가입해줘야합니다.

# 그런데 센트리 계정을 만들려고 sentry createuser를 하면 장문의 에러와함께 psql에 시퀀스 함수가 없다고 안됩니다,

# createuser 하기전에 PostgreSQL에서 시퀀스를 생성해줘야합니다. 

# 출처 : https://github.com/getsentry/sentry/issues/9270

psql -d template1

create or replace function sentry_increment_project_counter( project bigint, delta int) returns int as $$ declare new_val int; begin loop update sentry_projectcounter set value = value + delta where project_id = project returning value into new_val; if found then return new_val; end if; begin insert into sentry_projectcounter(project_id, value) values (project, delta) returning value into new_val; return new_val; exception when unique_violation then end; end loop; end $$ language plpgsql;

 

sentry createuser

# 아이디 패스워드 입력합니다.

# localhost:9000/에 접근하여 아이디와 패스워드를 입력합니다.

 

 

 

10. 센트리 웹으로 다시 접근합니다.

superuser로 첫 로그인을 하게되면 센트리의 root url을 지정해달라는 폼이 나옵니다.

Root URL 은 localhost:9000 으로 지정해줍니다.