Building sentry at ang mga dependencies nito sa rpm. Pag-install ng sentry mula sa rpm, basic setup

ОписаниС

Nagbabantay β€” isang tool para sa pagsubaybay sa mga exception at error sa iyong mga application.

Mga pangunahing tampok:

  • madaling isinama sa proyekto,
  • nakakakuha ng mga error sa browser ng user at sa iyong server.
  • Libre,
  • Ang listahan ng mga error ay ina-update sa real time,
  • Kung ang error ay minarkahan bilang nalutas at lilitaw muli, pagkatapos ito ay nilikha muli at isinasaalang-alang sa isang hiwalay na thread,
  • Ang mga error ay pinagsama-sama at ipinapakita sa pagkakasunud-sunod ng dalas ng paglitaw,
  • Maaaring i-filter ang mga error ayon sa katayuan, pinagmulan ng pag-log, antas ng pag-log, pangalan ng server, atbp.

Paghahambing sa mga log ng ELK: Ang pinakamahalagang bagay ay na sa ELK, ang bawat bagong log ng parehong uri ay isang hiwalay na entry. at sa sentry, ang bawat bagong exception ng parehong uri ay + 1 lang sa bilang ng record nito

Sinusuportahan ng Sentry ang karamihan sa mga programming language. Higit pang mga detalye dito.

Running Sentry na may docker at docker-compose

Maaari mong patakbuhin ang Sentry gamit ang docker at docker-compose tulad ng inilarawan dito: https://github.com/getsentry/onpremise. Ngunit ang script ay naglulunsad ng mga karagdagang serbisyo sa parehong server sa isang mode (nang walang fault tolerance) (Para sa bersyon na sentry 10.0.0):

  • data
  • postgres
  • redis
  • zookeeper
  • kafka
  • clickhouse
  • symbolicator

Kung kailangan mo ng fault tolerance, kakailanganin mong gamitin ang mga cloud product plan o i-install ang Sentry nang wala ang script na ito.

Inilalarawan ng post na ito ang proseso ng pagbuo ng Sentry at ang mga dependency nito sa isang rpm. Kung kailangan mong i-install ang Sentry kung saan walang Internet, maaari kang gumawa ng isang yum repository mula sa natanggap na rpms.

Mahalagang paglilinaw sa pag-assemble at pag-install ng mga pakete

Ang ilang mga pakete ay nakasalalay sa isa't isa. Samakatuwid, ang proseso ng pagpupulong at pag-install ay nahahati sa maraming yugto.

GAGAWIN:

Sinasaklaw ng post na ito ang pagbuo at pag-install ng Sentry na bersyon 9.1.2. Pagkatapos maglabas ang mga developer ng ilang menor de edad na release, maaari mong buuin ang bersyon ng Sentry 10.X.Y. Marami sa mga pinakabagong commit sa master ay mga pag-aayos.

Mga kinakailangan ng server para sa pagbuo ng rpm

Ang mas maraming mga CPU, mas mabilis ang semaphore at simbolikong mga pakete ay itatayo

I-off ang Selinux

Pabor lang ang komunidad kung may magsusulat ng mga patakarang selinux para sa Sentry.

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

Pagkonekta sa epel-release repository

sudo yum install -y epel-release git

Kinokolekta namin ang mga dependency sa rpm pip at ini-install ang mga ito. File 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

I-install at patakbuhin ang PostgreSQL 9.6 para bumuo ng python-psycopg2-binary. I-file ang 2psycopg2-binary.sh

Maaari mong baguhin ang bersyon ng PostgreSQL sa script.

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

I-compile at i-install ang python-dateutil rpm. File 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

I-compile at i-install ang python-urllib3 rpm. File 4urllib3.sh

pamagat ng 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

Kinokolekta namin ang natitirang mga dependency ng pip sa rpm at i-install ang mga ito. I-file ang 5other_dependencies.sh

pamagat ng 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

Nag-compile kami sa rpm sentry at i-install ito. File 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

Pag-install ng sentry rpm na may mga dependency sa isa pang server

I-off ang Selinux

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

Pagkonekta sa epel-release repository

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

I-install at patakbuhin ang PostgreSQL 9.6. File 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;"

Sinisimulan namin ang paglipat (paglikha ng isang database schema) at simulan ang mga serbisyo. File 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

Paglikha ng isang panloob na administrator ng 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 

Pagbuo ng sentry sa rpm, pag-install, pagsasaayos para sa mga tamad

I-off ang Selinux

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

Magpatakbo ng mga script para bumuo at mag-install ng 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

Paglikha ng isang panloob na administrator ng 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 

Pagpapadala ng exception sa pagsubok

Susubukan namin ito sa isang java project. I-download ang java at 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

Ngayon kailangan nating ilunsad ang java sa pamamagitan ng pagpasa nito sa SENTRY_DSN

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

Ngayon ay kailangan nating hanapin ang default na nabuong SENTRY_DSN.

Punta tayo sa Sentry. Pumunta tayo sa default na proyekto internal.

Building sentry at ang mga dependencies nito sa rpm. Pag-install ng sentry mula sa rpm, basic setup

o

Building sentry at ang mga dependencies nito sa rpm. Pag-install ng sentry mula sa rpm, basic setup

Pumunta tayo sa mga setting ng proyekto.

Building sentry at ang mga dependencies nito sa rpm. Pag-install ng sentry mula sa rpm, basic setup

Pumunta sa Client Keys (DSN).

Building sentry at ang mga dependencies nito sa rpm. Pag-install ng sentry mula sa rpm, basic setup

Kopyahin ang DSN. Ito ay SENTRY_DSN.

Building sentry at ang mga dependencies nito sa rpm. Pag-install ng sentry mula sa rpm, basic setup

Inilunsad namin ang java gamit ang parameter na ito.

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

Nakikita namin ang larawang ito.

Building sentry at ang mga dependencies nito sa rpm. Pag-install ng sentry mula sa rpm, basic setup

Kung pupunta tayo sa UnsupportedOperationException, pagkatapos ay makikita natin ang pinalawak na impormasyon.

Building sentry at ang mga dependencies nito sa rpm. Pag-install ng sentry mula sa rpm, basic setup

Building sentry at ang mga dependencies nito sa rpm. Pag-install ng sentry mula sa rpm, basic setup

Gumawa ng Telegram chat gamit ang Sentry

https://t.me/sentry_ru

Sa mga sumusunod na yugto:

  • Subukan ang LDAP. Inihanda na ang script 9sentry-ldap-auth.sh
  • Test sentry version 10.0.X pagkatapos mailunsad ang ilang menor de edad na release.

Imbakan na may mga script:

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

Pinagmulan: www.habr.com