반응형
이번에 isms 인증을 위해 별도 단독 모니터링 툴을 찾던 중 sentry라는 모니터링 툴을 찾게 되었다.
다양한 언어를 기반으로 어플리케이션들에 간단하게 모니터링 로그 설정을 하게 되면 어플리케이션 마다 발생하는
문제 로그를 한곳으로 통합 관리 할 수 있을것으로 보여 먼저 설치부터 알아보았다.
설치 방법은 아래 링크 대로 하면 될거 같은데 마지막 sentry 설치시 파이썬 버전 오류가 발생하여 이 명령어만 따로 하
였다. 순서는 아래 옮겨 적으려고 한다.
https://clouding.io/hc/en-us/articles/360011361680-How-to-Setup-Sentry-with-Python-on-Ubuntu-18-04
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;
}
}
반응형