본문 바로가기

개발 기록

모니터링 툴 sentry를 ubuntu 18.04 EC2에 설치 하기

반응형

이번에 isms 인증을 위해 별도 단독 모니터링 툴을 찾던 중 sentry라는 모니터링 툴을 찾게 되었다.

 

다양한 언어를 기반으로 어플리케이션들에 간단하게 모니터링 로그 설정을 하게 되면 어플리케이션 마다 발생하는

 

문제 로그를 한곳으로 통합 관리 할 수 있을것으로 보여 먼저 설치부터 알아보았다.

 

설치 방법은 아래 링크 대로 하면 될거 같은데 마지막 sentry 설치시 파이썬 버전 오류가 발생하여 이 명령어만 따로 하

 

였다. 순서는 아래 옮겨 적으려고 한다.

 

https://clouding.io/hc/en-us/articles/360011361680-How-to-Setup-Sentry-with-Python-on-Ubuntu-18-04

 

How to Setup Sentry with Python on Ubuntu 18.04

Sentry is a free and open source Python application for error tracking. It can be used to monitor and fix crashes in real time. Sentry alerts you via email and SMS when errors occur or resurface. I...

clouding.io

 

 

1. apt-get update

# apt-get update -y
# apt-get upgrade -y

 

2. 파이썬 설치

// ubuntu 18.04에서는 기본 설치가 2.7로 되어 있는듯 하다
# apt-get install python

// python 3.7 설치
# apt-get install python3.7

 

3. python 패키지 설치 (python2.7에만 해당됨)

# apt-get install python build-essential python-setuptools python-dev libxslt1-dev gcc libffi-dev libjpeg-dev libxml2-dev libxslt-dev libyaml-dev libpq-dev python-pip -y

 

4. redis 설치

# cd /usr/src

# wget http://download.redis.io/releases/redis-4.0.1.tar.gz

# tar -xvf redis-4.0.1.tar.gz

# cd redis-4.0.1

# make

# src/redis-server --daemonize yes

 

5. python 버추얼 환경 virtualenv 설치

// python 2.7
# pip install -U virtualenv

// python 3.7
# pip3 install -U virtualenv

 

6. PostgreSQL 설치

# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

# apt-get update -y

// 'apt-get install postgresql-9.5'가 설치 안되서 10으로 설치함
# apt-get install postgresql -y 

 

7. PostgreSQL 계정 및 DB 생성 후 권한 부여

// postgres 유저로 변경
# su - postgres

// postres에 template1에 citext 확장
# psql -d template1 -U postgres
# template1=# create extension citext;

// \q로 나가기 후 db 생성
# createdb sentrydb

// sentry 계정 생성
# createuser sentry --pwprompt
# psql -d template1 -U postgres

// sentrydb 데이터베이스 권한을 sentry에 부여
# template1=# GRANT ALL PRIVILEGES ON DATABASE sentrydb to sentry;
# template1=# ALTER USER sentry WITH SUPERUSER;

// \q로 나가기
# template1=# \q

 

8. Sentry 설치 및 계정 생성

// 유저 신규 생성
# adduser sentry

// sentry 권한으로 sentry_app 가상환경 생성
# su - sentry

# virtualenv ~/sentry_app/

// 가상환경 접속
# source ~/sentry_app/bin/activate

// python 2.7인 경우 - pip install -U sentry가 안되어 강제 버전을 맞춤
# pip install -U sentry==9.1.2

// python 3.7인 경우 
//( 혹여나 PEP517 에러가 발생하는 경우 apt-get install libxml2-dev libxmlsec1-dev 후 다시 시도)
# pip install -U sentry==20.11.0

// sentry 초기화
# sentry init

 

9. Sentry 데이터베이스 접속 정보 반영

// 설정 파일 열기
# vi ~/.sentry/sentry.conf.py
DATABASES = { 
   'default': { 
    'ENGINE': 'sentry.db.postgres', 
    'NAME': 'sentrydb',  // 생성한 sentrydb 데이터베이스명
    'USER': 'sentry', // 생성한 dbuser sentry 입력
    'PASSWORD': 'password', // dbuser 패스워드
    'HOST': 'localhost',  
    'PORT': '5432', 
    'AUTOCOMMIT': True, 
    'ATOMIC_REQUESTS': False, 
    } 
  }
  
// python 3.7 dataclasses 에러가 발생하는 경우 pip uninstall dataclasses 처리 후 실행
# sentry upgrade

# exit

 

10. Sentry 시스템 재부팅 후 자동으로 재시작 할 수 있도록 Supervisor 설치

// supervisor는 python2.7버전에 호환이 되는듯 하다. 3.7로 실행하면 에러나기 때문에 2.7로 다시 바꿔준다.
# apt-get install supervisor -y

# nano /etc/supervisor/conf.d/sentry.conf
[program:sentry-web] 
directory=/home/sentry/sentry_app/ 
environment=SENTRY_CONF=/home/sentry/.sentry
command=/home/sentry/sentry_app/bin/sentry run web 
autostart=true 
autorestart=true
redirect_stderr=true
user=sentry 
stdout_logfile=syslog 
stderr_logfile=syslog
 
[program:sentry-worker] 
directory=/home/sentry/sentry_app/ 
environment=SENTRY_CONF=/home/sentry/.sentry
command=/home/sentry/sentry_app/bin/sentry run worker 
autostart=true 
autorestart=true 
redirect_stderr=true 
user=sentry 
stdout_logfile=syslog 
stderr_logfile=syslog
 
[program:sentry-cron] 
directory=/home/sentry/sentry_app/ 
environment=SENTRY_CONF=/home/sentry/.sentry
command=/home/sentry/sentry_app/bin/sentry run cron 
autostart=true 
autorestart=true 
redirect_stderr=true 
stdout_logfile=syslog 
stderr_logfile=syslog
// python3.7 로 실행하는 경우 supervisorctl not found 에러가 발생 할 수 있다.
// pip install git+https://github.com/Supervisor/supervisor 실행으로 다시 한번 설치한다.
# supervisorctl reread
# supervisorctl update
# supervisorctl start all

 

11. nginx 설정하기 (선택사항)

 * sentry 기본 포트 설정은 9000이다. 포트를 변경하려면 ~/.sentry/sentry.conf.py에서 PORT 설정 정보를 변경하면 된다

server {
    listen 80;
#    listen 443 ssl;
    server_name sentry.example.com;
    location / {
      proxy_pass         http://localhost:9000;
      proxy_redirect     off;
      proxy_set_header   Host              $host;
      proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
      proxy_set_header   X-Forwarded-Proto $scheme;
    }
}
반응형