αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž‚αž·αžαž‡αžΆ rpm αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ sentry αž–αžΈ rpm αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αž”αžšαž·αž™αžΆαž™

αž†αŸ’αž˜αžΆαŸ†αŸ” - αž§αž”αž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„ αž“αž·αž„αž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž›αž€αŸ’αžαžŽαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ–

  • αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„,
  • αž…αžΆαž”αŸ‹αž€αŸ†αž αž»αžŸαž‘αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž»αž€αžšαž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ αž“αž·αž„αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”
  • αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒ
  • αž”αž‰αŸ’αž‡αžΈαž“αŸƒαž€αŸ†αž αž»αžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž€αŸ’αž“αž»αž„αž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„,
  • αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αŸ†αž αž»αžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž αžΎαž™αž›αŸαž…αž‘αžΎαž„αž˜αŸ’αžαž„αž‘αŸ€αž αž“αŸ„αŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αŸ’αžαž„αž‘αŸ€αž αž αžΎαž™αž™αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αžŽαž“αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αŸ”
  • αž€αŸ†αž αž»αžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž‡αžΆαž€αŸ’αžšαž»αž˜ αž“αž·αž„αž”αž„αŸ’αž αžΆαž‰αžαžΆαž˜αž›αŸ†αžŠαžΆαž”αŸ‹αž“αŸƒαž—αžΆαž–αž‰αžΉαž€αž‰αžΆαž”αŸ‹αž“αŸƒαž€αžΆαžšαž€αžΎαžαž‘αžΎαž„,
  • αž€αŸ†αž αž»αžŸβ€‹αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžαŸ’αžšαž„β€‹αžαžΆαž˜β€‹αžŸαŸ’αžαžΆαž“αž—αžΆαž– αž”αŸ’αžšαž—αž–β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž αŸαžαž» αž€αž˜αŸ’αžšαž·αžβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αž αŸαžαž» αžˆαŸ’αž˜αŸ„αŸ‡β€‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“β€‹αž”αž˜αŸ’αžšαžΎ αŸ”αž›αŸ”

αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‡αžΆαž˜αž½αž™αž€αŸ†αžŽαžαŸ‹αž αŸαžαž» ELKαŸ– αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αžαž“αŸ„αŸ‡αž‚αžΊαžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ ELK αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžαŸ’αž˜αžΈαž“αžΈαž˜αž½αž™αŸ—αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‚αžΊαž‡αžΆαž’αžΆαžαž»αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αŸ” αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„ sentry αž€αžΆαžšαž›αžΎαž€αž›αŸ‚αž„αžαŸ’αž˜αžΈαž“αžΈαž˜αž½αž™αŸ—αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‚αžΊαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚ + 1 αž‘αŸ…αž“αžΉαž„αž…αŸ†αž“αž½αž“αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαžšαž”αžŸαŸ‹αžœαžΆαŸ”

Sentry αž‚αžΆαŸ†αž‘αŸ’αžšαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αŸ” αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜ αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Sentry αž‡αžΆαž˜αž½αž™ docker αž“αž·αž„ docker-compose

αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Sentry αžŠαŸ„αž™αž”αŸ’αžšαžΎ docker αž“αž·αž„ docker-compose αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ– https://github.com/getsentry/onpremise. αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αžαŸ‚αž˜αž½αž™ (αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž’αžαŸ‹αž±αž“αž€αŸ†αž αž»αžŸ) (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαŸ‚ 10.0.0)αŸ–

  • αž‘αž·αž“αŸ’αž“αž“αŸαž™
  • postgres
  • redis
  • αž’αŸ’αž“αž€β€‹αžαŸ‚αžšαž€αŸ’αžŸαžΆβ€‹αžŸαž½αž“αžŸαžαŸ’αžœ
  • Kafka
  • αž•αŸ’αž‘αŸ‡αž…αž»αž…
  • αž’αŸ’αž“αž€αžαŸ†αžŽαžΆαž„

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΆαžšαž’αžαŸ‹αž±αž“αž…αŸ†αž–αŸ„αŸ‡αž€αŸ†αž αž»αžŸ αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž‚αž˜αŸ’αžšαŸ„αž„αž•αž›αž·αžαž•αž›αž–αž–αž€ αž¬αžŠαŸ†αž‘αžΎαž„ Sentry αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž“αŸαŸ‡αŸ”

αž”αŸ’αžšαž€αžΆαžŸαž“αŸαŸ‡αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž€αžŸαžΆαž„ Sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž€αŸ’αž“αž»αž„ rpm αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ Sentry αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαž yum repository αž–αžΈ rpms αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αŸ”

αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŸαŸ†αžαžΆαž“αŸ‹αž›αžΎαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹

αž€αž‰αŸ’αž…αž”αŸ‹αžαŸ’αž›αŸ‡αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αž·αž„αžŠαŸ†αž‘αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž‘αŸ…αž‡αžΆαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ”

αž’αŸ’αžœαžΎ:

αž”αŸ’αžšαž€αžΆαžŸαž“αŸαŸ‡αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž›αžΎαž€αžΆαžšαž€αžŸαžΆαž„ αž“αž·αž„αžŠαŸ†αž‘αžΎαž„ Sentry αž€αŸ†αžŽαŸ‚ 9.1.2 αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαž·αž…αžαž½αž…αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž€αŸ†αžŽαŸ‚ Sentry 10.XY αž”αžΆαž“αŸ” αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αž„αŸ’αž’αžŸαŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸαž‚αžΊαž‡αž½αžŸαž‡αž»αž›αŸ”

αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αžŸαžΆαž„ rpm

αžŸαŸŠαžΈαž—αžΈαž™αžΌαž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αž“αŸ„αŸ‡ αž€αž‰αŸ’αž…αž”αŸ‹αžŸαŸαž˜αŸ‰αžΆαž αŸ’αžœαŸαžš αž“αž·αž„αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž€αžΆαž“αŸ‹αžαŸ‚αž›αžΏαž“

αž”αž·αž‘ Selinux

αžŸαž αž‚αž˜αž“αŸαž“αžΉαž„αž–αŸαž‰αž…αž·αžαŸ’αžαž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž˜αžΆαž“αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αžŸαžšαžŸαŸαžšαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ selinux αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Sentry αŸ”

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

αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„ epel-release

sudo yum install -y epel-release git

αž™αžΎαž„αž”αŸ’αžšαž˜αžΌαž›αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„ rpm pip αž αžΎαž™αžŠαŸ†αž‘αžΎαž„αž–αž½αž€αžœαžΆαŸ” αž―αž€αžŸαžΆαžš 1general_dependencies.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

αžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš PostgreSQL 9.6 αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž python-psycopg2-binary αŸ” αž―αž€αžŸαžΆαžš 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-urlib3 rpm αŸ” αž―αž€αžŸαžΆαžš 4urlib3.sh

αž…αŸ†αžŽαž„αž‡αžΎαž„ spoiler

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_dependencies.sh

αž…αŸ†αžŽαž„αž‡αžΎαž„ spoiler

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 

αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž€αŸ’αž“αž»αž„ rpm, αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„, αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžαŸ’αž‡αž·αž›αŸ”

αž”αž·αž‘ Selinux

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

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž αž“αž·αž„αžŠαŸ†αž‘αžΎαž„ sentry

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 αŸ” αž‘αžΆαž‰αž™αž€ java αž“αž·αž„ maven αŸ”

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

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš java αžŠαŸ„αž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžœαžΆ SENTRY_DSN

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

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŸαŸ’αžœαŸ‚αž„αžšαž€ SENTRY_DSN αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαŸ”

αžαŸ„αŸ‡αž‘αŸ… Sentry αŸ” αžαŸ„αŸ‡αž‘αŸ…αž‚αž˜αŸ’αžšαŸ„αž„αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ internal.

αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž‚αž·αžαž‡αžΆ rpm αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ sentry αž–αžΈ rpm αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

ឬ

αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž‚αž·αžαž‡αžΆ rpm αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ sentry αž–αžΈ rpm αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αžαŸ„αŸ‡αž‘αŸ…αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αŸ”

αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž‚αž·αžαž‡αžΆ rpm αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ sentry αž–αžΈ rpm αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹ Client Keys (DSN)αŸ”

αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž‚αž·αžαž‡αžΆ rpm αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ sentry αž–αžΈ rpm αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αž…αž˜αŸ’αž›αž„ DSN αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆ SENTRY_DSN αŸ”

αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž‚αž·αžαž‡αžΆ rpm αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ sentry αž–αžΈ rpm αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αž™αžΎαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš java αž‡αžΆαž˜αž½αž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸαŸ‡αŸ”

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

αž™αžΎαž„αžƒαžΎαž‰αžšαžΌαž”αž—αžΆαž–αž“αŸαŸ‡αŸ”

αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž‚αž·αžαž‡αžΆ rpm αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ sentry αž–αžΈ rpm αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž‘αŸ… UnsupportedOperationExceptionαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αž–αžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αŸ”

αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž‚αž·αžαž‡αžΆ rpm αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ sentry αž–αžΈ rpm αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αž€αžΆαžšαž€αžŸαžΆαž„ sentry αž“αž·αž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αžœαžΆαž‚αž·αžαž‡αžΆ rpm αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ sentry αž–αžΈ rpm αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž‡αž‡αŸ‚αž€αžαžΆαž˜ Telegram αžŠαŸ„αž™αž”αŸ’αžšαžΎ Sentry

https://t.me/sentry_ru

αž€αŸ’αž“αž»αž„αžœαž‚αŸ’αž‚αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • αžŸαžΆαž€αž›αŸ’αž”αž„ LDAP αŸ” αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžšαž½αž…αž αžΎαž™ 9sentry-ldap-auth.sh
  • αžŸαžΆαž€αž›αŸ’αž”αž„αž€αŸ†αžŽαŸ‚ 10.0.X αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαž·αž…αžαž½αž…αž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αŸ”

αžƒαŸ’αž›αžΆαŸ†αž„αž‡αžΆαž˜αž½αž™αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ–

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

αž”αŸ’αžšαž—αž–: www.habr.com