rpm์œผ๋กœ ์„ผํŠธ๋ฆฌ์™€ ๊ทธ ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. rpm์—์„œ ์„ผํŠธ๋ฆฌ ์„ค์น˜, ๊ธฐ๋ณธ ์„ค์ •

๊ธฐ์ˆ 

๋ณด์ดˆ โ€” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ˆ์™ธ ๋ฐ ์˜ค๋ฅ˜๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ :

  • ํ”„๋กœ์ ํŠธ์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉ๋˜๋ฉฐ,
  • ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ๋ชจ๋‘์—์„œ ์˜ค๋ฅ˜๋ฅผ ํฌ์ฐฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌด๋ฃŒ,
  • ์˜ค๋ฅ˜ ๋ชฉ๋ก์€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋ฉฐ,
  • ์˜ค๋ฅ˜๊ฐ€ ํ•ด๊ฒฐ๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ๋‹ค์‹œ ๋‚˜ํƒ€๋‚˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‹ค์‹œ ์ƒ์„ฑ๋˜์–ด ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ์—์„œ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋ฅ˜๋Š” ๋ฐœ์ƒ ๋นˆ๋„ ์ˆœ์œผ๋กœ ๊ทธ๋ฃนํ™”๋˜์–ด ํ‘œ์‹œ๋˜๋ฉฐ,
  • ์˜ค๋ฅ˜๋Š” ์ƒํƒœ, ๋กœ๊น… ์†Œ์Šค, ๋กœ๊น… ์ˆ˜์ค€, ์„œ๋ฒ„ ์ด๋ฆ„ ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ELK ๋กœ๊ทธ์™€์˜ ๋น„๊ต: ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ELK์—์„œ ๋™์ผํ•œ ์œ ํ˜•์˜ ๊ฐ๊ฐ์˜ ์ƒˆ ๋กœ๊ทธ๊ฐ€ ๋ณ„๋„์˜ ํ•ญ๋ชฉ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณด์ดˆ์—์„œ๋Š” ๋™์ผํ•œ ์œ ํ˜•์˜ ๊ฐ๊ฐ์˜ ์ƒˆ๋กœ์šด ์˜ˆ์™ธ๊ฐ€ ํ•ด๋‹น ๊ธฐ๋ก์˜ ๊ฐœ์ˆ˜์— +1์ด ๋ฉ๋‹ˆ๋‹ค.

Sentry๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—.

docker ๋ฐ docker-compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Sentry ์‹คํ–‰

์—ฌ๊ธฐ์— ์„ค๋ช…๋œ ๋Œ€๋กœ docker ๋ฐ docker-compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Sentry๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/getsentry/onpremise. ๊ทธ๋Ÿฌ๋‚˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹จ์ผ ๋ชจ๋“œ(๋‚ด๊ฒฐํ•จ์„ฑ ์—†์Œ)๋กœ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ ์ถ”๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค(๋ฒ„์ „ Sentry 10.0.0์˜ ๊ฒฝ์šฐ).

  • ๋ฐ์ดํ„ฐ
  • ํฌ์ŠคํŠธ ๊ทธ๋ ˆ์Šค
  • ํ™์ฑ„
  • ์‚ฌ์œก์‚ฌ
  • ์นดํ”„์นด
  • ํด๋ฆญํ•˜์šฐ์Šค
  • ์ƒ์ง•์ž

๋‚ด๊ฒฐํ•จ์„ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํด๋ผ์šฐ๋“œ ์ œํ’ˆ ๊ณ„ํš์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ด ์Šคํฌ๋ฆฝํŠธ ์—†์ด Sentry๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒŒ์‹œ๋ฌผ์€ rpm์—์„œ Sentry์™€ ํ•ด๋‹น ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์ด ์—†๋Š” ๊ณณ์— Sentry๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ˆ˜์‹ ๋œ rpms์—์„œ yum ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ์กฐ๋ฆฝ ๋ฐ ์„ค์น˜์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์„ค๋ช…

์ผ๋ถ€ ํŒจํ‚ค์ง€๋Š” ์„œ๋กœ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์กฐ๋ฆฝ ๋ฐ ์„ค์น˜ ๊ณผ์ •์€ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

ํ•  ๊ฒƒ:

์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” Sentry ๋ฒ„์ „ 9.1.2 ๋นŒ๋“œ ๋ฐ ์„ค์น˜๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช‡ ๊ฐ€์ง€ ๋งˆ์ด๋„ˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ฆด๋ฆฌ์Šคํ•œ ํ›„ Sentry 10.XY ๋ฒ„์ „์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ์˜ ์ตœ์‹  ์ปค๋ฐ‹ ์ค‘ ๋Œ€๋ถ€๋ถ„์€ ์ˆ˜์ • ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

rpm ๊ตฌ์ถ•์„ ์œ„ํ•œ ์„œ๋ฒ„ ์š”๊ตฌ ์‚ฌํ•ญ

CPU๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์„ธ๋งˆํฌ์–ด ๋ฐ ๊ธฐํ˜ธ ํŒจํ‚ค์ง€๊ฐ€ ๋” ๋น ๋ฅด๊ฒŒ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.

Selinux ๋„๊ธฐ

์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Sentry์— ๋Œ€ํ•œ selinux ์ •์ฑ…์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฐฌ์„ฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

sudo sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config
sudo reboot

epel-release ์ €์žฅ์†Œ ์—ฐ๊ฒฐ

sudo yum install -y epel-release git

rpm pip์—์„œ ์ข…์†์„ฑ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ 1general_dependent.sh

echo "Install dependencies"
sudo yum install -y cargo gcc gcc-c++ libffi-devel libjpeg-devel libxml2-devel 
libxslt libxslt-devel make mc openssl-devel python-devel memcached 
python-lxml python-nose python2-pip python34 rpm-build rpmdevtools 
ruby-devel rubygems zlib-devel redis xmlsec1-openssl xmlsec1 
libtool-ltdl-devel xmlsec1-devel xmlsec1-openssl-devel openldap-devel

echo "Build common pip dependencies to rpm by fpm"
gem install --no-document fpm
echo "For chardet==3.0.2 need setuptools>=12"
echo "For cryptography==2.8 need setuptools>=18.5"
fpm -s python -t rpm setuptools==18.5
sudo yum install -y python-setuptools-18.5-1.noarch.rpm
fpm -s python -t rpm --name python2-pip pip==20.0.2
sudo yum install -y python2-pip-20.0.2-1.noarch.rpm

Python-psycopg9.6-binary๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด PostgreSQL 2์„ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜์„ธ์š”. ํŒŒ์ผ 2psycopg2-binary.sh

์Šคํฌ๋ฆฝํŠธ์—์„œ PostgreSQL ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

sudo yum install -y postgresql-devel
fpm -s python -t rpm psycopg2-binary==2.7.7
sudo yum install -y python-psycopg2-binary-2.7.7-1.x86_64.rpm
sudo yum remove -y postgresql-devel postgresql postgresql-libs

python-dateutil rpm์„ ์ปดํŒŒ์ผํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ 3dateutil.sh

#!/bin/bash

echo "Build and install python-dateutil rpm"
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SRPMS,SPECS}
spectool -g -R spec/python-dateutil.spec
wget https://raw.githubusercontent.com/patsevanton/sentry-rpm/master/spec/python-dateutil-system-zoneinfo.patch -P ~/rpmbuild/SOURCES
wget https://raw.githubusercontent.com/patsevanton/sentry-rpm/master/spec/python-dateutil-timelex-string.patch -P ~/rpmbuild/SOURCES
rpmbuild --bb spec/python-dateutil.spec
sudo yum install -y ~/rpmbuild/RPMS/noarch/python-dateutil-2.4.2-1.el7.noarch.rpm

python-urllib3 rpm์„ ์ปดํŒŒ์ผํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ 4urllib3.sh

์Šคํฌ์ผ๋Ÿฌ ์ œ๋ชฉ

echo "Build pip dependencies to rpm by fpm for urllib3"
fpm -s python -t rpm pycparser==2.19
sudo yum install -y python-pycparser-2.19-1.noarch.rpm
fpm -s python -t rpm cffi==1.14.0
sudo yum install -y python-cffi-1.14.0-1.x86_64.rpm
fpm -s python -t rpm cryptography==2.8
sudo yum install -y python-cryptography-2.8-1.x86_64.rpm
fpm -s python -t rpm idna==2.7
sudo yum install -y python-idna-2.7-1.noarch.rpm
sudo chmod +r /usr/lib/python2.7/site-packages/idna-2.7-py2.7.egg-info/PKG-INFO
fpm -s python -t rpm pyOpenSSL==19.1.0
sudo yum install -y python-pyopenssl-19.1.0-1.noarch.rpm
fpm -s python -t rpm pbr==5.4.4
sudo yum install -y python-pbr-5.4.4-1.noarch.rpm
fpm -s python -t rpm mock==2.0.0
sudo yum install -y python-mock-2.0.0-1.noarch.rpm
fpm -s python -t rpm py==1.8.1
sudo yum install -y python-py-1.8.1-1.noarch.rpm
fpm -s python -t rpm six==1.10.0
sudo yum install -y python-six-1.10.0-1.noarch.rpm
fpm -s python -t rpm pluggy==0.6.0
sudo yum install -y python-pluggy-0.6.0-1.noarch.rpm
fpm -s python -t rpm attrs==19.3.0
sudo yum install -y python-attrs-19.3.0-1.noarch.rpm
fpm -s python -t rpm more-itertools==5.0.0
sudo yum install -y python-more-itertools-5.0.0-1.noarch.rpm
fpm -s python -t rpm pytest==3.5.1
sudo yum install -y python-pytest-3.5.1-1.noarch.rpm

echo "Build urllib rpm"
spectool -g -R spec/urllib3-1.24.2.spec
sudo yum-builddep -y spec/urllib3-1.24.2.spec
rpmbuild --bb spec/urllib3-1.24.2.spec
sudo yum install -y ~/rpmbuild/RPMS/noarch/python-urllib3-1.24.2-1.el7.noarch.rpm

๋‚˜๋จธ์ง€ pip ์ข…์†์„ฑ์„ rpm์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ 5other_dependent.sh

์Šคํฌ์ผ๋Ÿฌ ์ œ๋ชฉ

echo "Build rpm by fpm"
fpm -s python -t rpm jmespath==0.9.5
sudo yum install -y python-jmespath-0.9.5-1.noarch.rpm
fpm -s python -t rpm amqp==1.4.9
sudo yum install -y python-amqp-1.4.9-1.noarch.rpm
fpm -s python -t rpm anyjson==0.3.3
sudo yum install -y python-anyjson-0.3.3-1.noarch.rpm
fpm -s python -t rpm billiard==3.3.0.23
sudo yum install -y python-billiard-3.3.0.23-1.x86_64.rpm
fpm -s python -t rpm docutils==0.16
sudo yum install -y python-docutils-0.16-1.noarch.rpm
fpm -s python -t rpm Pillow==4.2.1
sudo yum install -y python-pillow-4.2.1-1.x86_64.rpm
fpm -s python -t rpm botocore==1.5.70
sudo yum install -y python-botocore-1.5.70-1.noarch.rpm
fpm -s python -t rpm boto3==1.4.5
sudo yum install -y python-boto3-1.4.5-1.noarch.rpm
fpm -s python -t rpm chardet==3.0.2
sudo yum install -y python-chardet-3.0.2-1.noarch.rpm
fpm -s python -t rpm croniter==0.3.31
sudo yum install -y python-croniter-0.3.31-1.noarch.rpm
fpm -s python -t rpm cssselect==1.1.0
sudo yum install -y python-cssselect-1.1.0-1.noarch.rpm
fpm -s python -t rpm cssutils==0.9.10
sudo yum install -y python-cssutils-0.9.10-1.noarch.rpm
fpm -s python -t rpm django-crispy-forms==1.4.0
sudo yum install -y python-django-crispy-forms-1.4.0-1.noarch.rpm
fpm -s python -t rpm django-jsonfield==0.9.13
sudo yum install -y python-django-jsonfield-0.9.13-1.noarch.rpm
fpm -s python -t rpm django-picklefield==0.3.2
sudo yum install -y python-django-picklefield-0.3.2-1.noarch.rpm
fpm -s python -t rpm django-sudo==2.1.0
sudo yum install -y python-django-sudo-2.1.0-1.noarch.rpm
fpm -s python -t rpm django-templatetag-sugar==1.0
sudo yum install -y python-django-templatetag-sugar-1.0-1.noarch.rpm
fpm -s python -t rpm djangorestframework==2.4.8
sudo yum install -y python-djangorestframework-2.4.8-1.noarch.rpm
fpm -s python -t rpm email-reply-parser==0.2.0
sudo yum install -y python-email_reply_parser-0.2.0-1.noarch.rpm
fpm -s python -t rpm enum34==1.1.9
sudo yum install -y python-enum34-1.1.9-1.noarch.rpm
fpm -s python -t rpm functools32==3.2.3.post2
sudo yum install -y python-functools32-3.2.3_2-1.noarch.rpm
fpm -s python -t rpm futures==3.3.0
sudo yum install -y python-futures-3.3.0-1.noarch.rpm
fpm -s python -t rpm hiredis==0.1.6
sudo yum install -y python-hiredis-0.1.6-1.x86_64.rpm
fpm -s python -t rpm honcho==1.0.1
sudo yum install -y python-honcho-1.0.1-1.noarch.rpm
fpm -s python -t rpm httplib2==0.17.0
sudo yum install -y python-httplib2-0.17.0-1.noarch.rpm
fpm -s python -t rpm jsonschema==2.6.0
sudo yum install -y python-jsonschema-2.6.0-1.noarch.rpm
fpm -s python -t rpm kombu==3.0.35
sudo yum install -y python-kombu-3.0.35-1.noarch.rpm
fpm -s python -t rpm celery==3.1.18
sudo yum install -y python-celery-3.1.18-1.noarch.rpm
fpm -s python -t rpm loremipsum==1.0.5
sudo yum install -y python-loremipsum-1.0.5-1.noarch.rpm
fpm -s python -t rpm lxml==4.5.0
sudo yum install -y python-lxml-4.5.0-1.x86_64.rpm
fpm -s python -t rpm milksnake==0.1.5
sudo yum install -y python-milksnake-0.1.5-1.noarch.rpm
fpm -s python -t rpm mistune==0.8.4
sudo yum install -y python-mistune-0.8.4-1.noarch.rpm
fpm -s python -t rpm mmh3==2.3.1
sudo yum install -y python-mmh3-2.3.1-1.x86_64.rpm
fpm -s python -t rpm exam==0.10.6
sudo yum install -y python-exam-0.10.6-1.noarch.rpm
fpm -s python -t rpm msgpack==0.6.2
sudo yum install -y python-msgpack-0.6.2-1.x86_64.rpm
fpm -s python -t rpm oauth2==1.9.0.post1
sudo yum install -y python-oauth2-1.9.0.post1-1.noarch.rpm
fpm -s python -t rpm oauthlib==3.1.0
sudo yum install -y python-oauthlib-3.1.0-1.noarch.rpm
fpm -s python -t rpm parsimonious==0.8.0
sudo yum install -y python-parsimonious-0.8.0-1.noarch.rpm
fpm -s python -t rpm requests==2.20.1
sudo yum install -y python-requests-2.20.1-1.noarch.rpm
fpm -s python -t rpm petname==2.0
sudo yum install -y python-petname-2.0-1.noarch.rpm
fpm -s python -t rpm python-utils==2.3.0
sudo yum install -y python-utils-2.3.0-1.noarch.rpm
fpm -s python -t rpm progressbar2==3.10.1
sudo yum install -y python-progressbar2-3.10.1-1.noarch.rpm
fpm -s python -t rpm pytest-django==2.9.1
sudo yum install -y python-pytest-django-2.9.1-1.noarch.rpm
fpm -s python -t rpm pytest-html==1.9.0
sudo yum install -y python-pytest-html-1.9.0-1.noarch.rpm
fpm -s python -t rpm python-memcached==1.59
sudo yum install -y python-memcached-1.59-1.noarch.rpm
fpm -s python -t rpm python-openid==2.2.5
sudo yum install -y python-openid-2.2.5-1.noarch.rpm
fpm -s python -t rpm python-u2flib-server==4.0.1
sudo yum install -y python-u2flib-server-4.0.1-1.noarch.rpm
fpm -s python -t rpm qrcode==5.3
sudo yum install -y python-qrcode-5.3-1.noarch.rpm
fpm -s python -t rpm querystring-parser==1.2.4
sudo yum install -y python-querystring_parser-1.2.4-1.noarch.rpm
fpm -s python -t rpm redis==2.10.5
sudo yum install -y python-redis-2.10.5-1.noarch.rpm
fpm -s python -t rpm rb==1.7
sudo yum install -y python-rb-1.7-1.noarch.rpm
fpm -s python -t rpm redis-py-cluster==1.3.4
sudo yum install -y python-redis-py-cluster-1.3.4-1.noarch.rpm
fpm -s python -t rpm requests-oauthlib==0.3.3
sudo yum install -y python-requests-oauthlib-0.3.3-1.noarch.rpm
fpm -s python -t rpm percy==2.0.2
sudo yum install -y python-percy-2.0.2-1.noarch.rpm
fpm -s python -t rpm selenium==3.141.0
sudo yum install -y python-selenium-3.141.0-1.noarch.rpm
fpm -s python -t rpm semaphore==0.4.65
sudo yum install -y python-semaphore-0.4.65-1.x86_64.rpm
fpm -s python -t rpm sentry-sdk==0.14.1
sudo yum install -y python-sentry-sdk-0.14.1-1.noarch.rpm
fpm -s python -t rpm setproctitle==1.1.10
sudo yum install -y python-setproctitle-1.1.10-1.x86_64.rpm
fpm -s python -t rpm simplejson==3.8.2
sudo yum install -y python-simplejson-3.8.2-1.x86_64.rpm
fpm -s python -t rpm sqlparse==0.1.19
sudo yum install -y python-sqlparse-0.1.19-1.noarch.rpm
fpm -s python -t rpm statsd==3.1
sudo yum install -y python-statsd-3.1-1.noarch.rpm
fpm -s python -t rpm strict-rfc3339==0.7
sudo yum install -y python-strict-rfc3339-0.7-1.noarch.rpm
fpm -s python -t rpm structlog==16.1.0
sudo yum install -y python-structlog-16.1.0-1.noarch.rpm
fpm -s python -t rpm symbolic==6.1.4
sudo yum install -y python-symbolic-6.1.4-1.x86_64.rpm
fpm -s python -t rpm toronado==0.0.11
sudo yum install -y python-toronado-0.0.11-1.noarch.rpm
fpm -s python -t rpm ua-parser==0.7.3
sudo yum install -y python-ua-parser-0.7.3-1.noarch.rpm
fpm -s python -t rpm uwsgi==2.0.18
sudo yum install -y python-uwsgi-2.0.18-1.noarch.rpm
fpm -s python -t rpm -n PyYAML pyyaml==3.11
sudo yum install -y PyYAML-3.11-1.x86_64.rpm
fpm -s python -t rpm django-auth-ldap==1.2.17
sudo yum install -y python-django-auth-ldap-1.2.17-1.noarch.rpm

rpm sentry๋กœ ์ปดํŒŒ์ผํ•˜๊ณ  ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ 6sentry.sh

echo "Install nodejs and yarn"
curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
sudo yum install -y nodejs
sudo sed -e '/nodesource-source/,+6d' -i /etc/yum.repos.d/nodesource-el7.repo
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install -y yarn

cp spec/config.yml spec/sentry.conf.py ~/rpmbuild/SOURCES
cp spec/sentry-cron.service spec/sentry-web.service spec/sentry-worker.service ~/rpmbuild/SOURCES
spectool -g spec/sentry-9.1.2.spec
sudo yum-builddep -y spec/sentry-9.1.2.spec
rpmbuild -bb spec/sentry-9.1.2.spec
sudo yum install -y ~/rpmbuild/RPMS/noarch/python-sentry-9.1.2-1.el7.noarch.rpm

๋‹ค๋ฅธ ์„œ๋ฒ„์— ์ข…์†๋œ Sentry rpm ์„ค์น˜

Selinux ๋„๊ธฐ

sudo sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config
#### sudo reboot

epel-release ์ €์žฅ์†Œ ์—ฐ๊ฒฐ

sudo yum install -y epel-release git libjpeg-turbo redis
sudo systemctl start redis

PostgreSQL 9.6์„ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ 7postgresql.sh

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql96 postgresql96-server postgresql96-contrib
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
sudo systemctl start postgresql-9.6
sudo -i -u postgres psql -c "create user sentry with password 'password';"
sudo -i -u postgres psql -c "create database sentry with owner sentry;"
sudo -i -u postgres psql -c "alter role sentry superuser;"

# TODO: ะŸั€ะพะฒะตั€ะธั‚ัŒ ะฑะตะท ะฟั€ะฐะฒ superuser ะดะปั ั€ะพะปะธ sentry
#sudo -i -u postgres psql -c "alter role sentry nosuperuser;"
#sudo -i -u postgres psql -c "CREATE SCHEMA main AUTHORIZATION sentry;"

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ƒ์„ฑ)์„ ์‹œ์ž‘ํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ 8start_sentry.sh

sudo systemctl start redis
sudo -i -u sentry /usr/bin/sentry --config /etc/sentry/ upgrade
sudo systemctl start sentry-worker
sudo systemctl start sentry-cron
sudo systemctl start sentry-web

๋‚ด๋ถ€ Sentry ๊ด€๋ฆฌ์ž ์ƒ์„ฑ

https://forum.sentry.io/t/noninteractive-first-time-setup-of-user-via-upgrade/164

sudo -i -u sentry /usr/bin/sentry --config /etc/sentry/ createuser 

๊ฒŒ์œผ๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ rpm ๋‹จ์œ„๋กœ ์„ผํŠธ๋ฆฌ ๊ตฌ์ถ•, ์„ค์น˜, ๊ตฌ์„ฑ

Selinux ๋„๊ธฐ

sudo sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config
sudo reboot

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์„ผํŠธ๋ฆฌ ๊ตฌ์ถ• ๋ฐ ์„ค์น˜

sudo yum install -y epel-release git
git clone https://github.com/patsevanton/sentry-rpm.git
cd sentry-rpm
./1general_dependencies.sh
./2psycopg2-binary.sh
./3dateutil.sh
./4urllib3.sh
./5other_dependencies.sh
./6sentry.sh
ะšะพะฟะธั€ัƒะตะผ rpm ะธะท rpmbuild/RPMS ะธ ะบะพั€ะฝั sentry-rpm ะฝะฐ ั†ะตะปะตะฒะพะน ัะตั€ะฒะตั€. ะกะพะทะดะฐะตะผ yum ั€ะตะฟะพ. ะฃัั‚ะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฒัะต ัะพะฑั€ะฐะฝะฝั‹ะต rpm ะฟะฐะบะตั‚ั‹.
./7postgresql.sh
./8start_sentry.sh

๋‚ด๋ถ€ Sentry ๊ด€๋ฆฌ์ž ์ƒ์„ฑ

https://forum.sentry.io/t/noninteractive-first-time-setup-of-user-via-upgrade/164

sudo -i -u sentry /usr/bin/sentry --config /etc/sentry/ createuser 

์˜ˆ์™ธ ์ „์†ก ํ…Œ์ŠคํŠธ

Java ํ”„๋กœ์ ํŠธ์—์„œ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์™€ ๋ฉ”์ด๋ธ์„ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”.

sudo yum install -y java-1.8.0-openjdk-devel git
sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
sudo yum -y install apache-maven
git clone https://github.com/getsentry/examples.git
cd examples/java/basic
mvn compile exec:java

์ด์ œ SENTRY_DSN์„ ์ „๋‹ฌํ•˜์—ฌ Java๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SENTRY_DSN=https://public:private@host:port/1 mvn exec:java

์ด์ œ ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋œ SENTRY_DSN์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ผํŠธ๋ฆฌ๋กœ ๊ฐ€์ž. ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ž internal.

rpm์œผ๋กœ ์„ผํŠธ๋ฆฌ์™€ ๊ทธ ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. rpm์—์„œ ์„ผํŠธ๋ฆฌ ์„ค์น˜, ๊ธฐ๋ณธ ์„ค์ •

๋˜๋Š”

rpm์œผ๋กœ ์„ผํŠธ๋ฆฌ์™€ ๊ทธ ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. rpm์—์„œ ์„ผํŠธ๋ฆฌ ์„ค์น˜, ๊ธฐ๋ณธ ์„ค์ •

ํ”„๋กœ์ ํŠธ ์„ค์ •์œผ๋กœ ๊ฐ€๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

rpm์œผ๋กœ ์„ผํŠธ๋ฆฌ์™€ ๊ทธ ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. rpm์—์„œ ์„ผํŠธ๋ฆฌ ์„ค์น˜, ๊ธฐ๋ณธ ์„ค์ •

ํด๋ผ์ด์–ธํŠธ ํ‚ค(DSN)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

rpm์œผ๋กœ ์„ผํŠธ๋ฆฌ์™€ ๊ทธ ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. rpm์—์„œ ์„ผํŠธ๋ฆฌ ์„ค์น˜, ๊ธฐ๋ณธ ์„ค์ •

DSN์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. SENTRY_DSN์ž…๋‹ˆ๋‹ค.

rpm์œผ๋กœ ์„ผํŠธ๋ฆฌ์™€ ๊ทธ ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. rpm์—์„œ ์„ผํŠธ๋ฆฌ ์„ค์น˜, ๊ธฐ๋ณธ ์„ค์ •

์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Java๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

SENTRY_DSN=http://[email protected]:9000/1 mvn exec:java

์šฐ๋ฆฌ๋Š” ์ด ์‚ฌ์ง„์„ ๋ด…๋‹ˆ๋‹ค.

rpm์œผ๋กœ ์„ผํŠธ๋ฆฌ์™€ ๊ทธ ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. rpm์—์„œ ์„ผํŠธ๋ฆฌ ์„ค์น˜, ๊ธฐ๋ณธ ์„ค์ •

์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๋ฉด UnsupportedOperationException, ๊ทธ๋Ÿฌ๋ฉด ํ™•์žฅ๋œ ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

rpm์œผ๋กœ ์„ผํŠธ๋ฆฌ์™€ ๊ทธ ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. rpm์—์„œ ์„ผํŠธ๋ฆฌ ์„ค์น˜, ๊ธฐ๋ณธ ์„ค์ •

rpm์œผ๋กœ ์„ผํŠธ๋ฆฌ์™€ ๊ทธ ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. rpm์—์„œ ์„ผํŠธ๋ฆฌ ์„ค์น˜, ๊ธฐ๋ณธ ์„ค์ •

Sentry๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„ํŒ…์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

https://t.me/sentry_ru

๋‹ค์Œ ์—ํ”ผ์†Œ๋“œ์—์„œ:

  • LDAP๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ์ด๋ฏธ ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. 9sentry-ldap-auth.sh
  • ๋ช‡ ๊ฐ€์ง€ ๋ถ€ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ถœ์‹œ๋œ ํ›„ Sentry ๋ฒ„์ „ 10.0.X๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋Š” ์ €์žฅ์†Œ:

https://github.com/patsevanton/sentry-rpm

์ถœ์ฒ˜ : habr.com