Ndërtimi i sentry dhe varësive të tij në rpm. Instalimi i sentry nga rpm, konfigurimi bazë

Përshkrimi

Sentry — njĂ« mjet monitorimi pĂ«r pĂ«rjashtime (exception), gabime nĂ« aplikacionet tuaja.

Karakteristikat kryesore:

  • lehtĂ« integrohet nĂ« projekt,
  • kap gabimet si nĂ« shfletuesin e pĂ«rdoruesit ashtu edhe nĂ« serverin tuaj.
  • Pa pagesĂ«,
  • Lista e gabimeve refresh-ohet nĂ« kohĂ« reale,
  • NĂ«se njĂ« gabim Ă«shtĂ« shĂ«nuar si i zgjidhur dhe shfaqet pĂ«rsĂ«ri, ai rishfaqet dhe llogaritet nĂ« njĂ« proces tĂ« veçantĂ«,
  • Gabimet grupohen dhe shfaqen sipas frekuencĂ«s sĂ« shfaqjes,
  • Gabimet mund tĂ« filtrohen sipas statusit, burimit tĂ« regjistrimit, nivelit tĂ« regjistrimit, emrit tĂ« serverit etj.

Krahasimi me logët ELK: gjëja më e rëndësishme është se në ELK çdo log i njëjtë është një regjistrim i veçantë, ndërsa në Sentry çdo përjashtim i njëjtë është vetëm + 1 në numrin e regjistrimit të tij.

Sentry mbështet shumicën e gjuhëve të programimit. Më shumë informacion këtu.

Ekzekutimi i Sentry me docker dhe docker-compose

Mund të ekzekutoni Sentry me docker dhe docker-compose siç përshkruhet këtu: https://github.com/getsentry/onpremise. Por skripti ekzekuton në të njëjtin server në modin e vetë njëhershëm (pa qëndrueshmëri) shërbime shtesë (Për versionin Sentry 10.0.0):

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

Nëse ju nevojitet qëndrueshmëri, do t'ju duhet ose të përdorni një produkt oborrash planifikuar, ose të instaloni Sentry pa këtë skript.

Ky postim përshkruan procesin e ndërtimit të Sentry dhe varësive të tij në rpm. Nëse keni nevojë të instaloni Sentry aty ku nuk ka internet, mund të krijoni një repository yum nga rpm-të e marra.

Sqarim i rëndësishëm për ndërtimin dhe instalimin e paketave

Disa paketa varen nga njëra-tjetra. Prandaj, procesi i ndërtimit dhe instalimit është ndarë në disa faza.

TODO:

Ky postim shqyrton ndërtimin dhe instalimin e Sentry versionit 9.1.2. Pas lëshimit të disa versioneve të vogla nga zhvilluesit, mund të është ndërtuar versioni Sentry 10.X.Y. Shumë prej komiteteve më të fundit në master janë rregullime (fixes).

Kërkesat për serverin për ndërtimin e rpm

Sa më shumë CPU të ketë, aq më shpejt do të ndodhë ndërtimi i pakove semaphore dhe symbolic.

Çaktivizoni Selinux

Komuniteti do të jetë vetëm për, nëse dikush shkruan politika selinux për Sentry.

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

Çaktivizoni repository-nĂ« epel-release

sudo yum install -y epel-release git

Ndërtojmë në rpm varësitë pip dhe i instalojmë ato. Skedari 1general_dependencies.sh

echo "Instaloni varësitë"
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 "Krijoni varësitë e zakonshme pip për rpm me fpm"
gem install --no-document fpm
echo "Për chardet==3.0.2 nevojiten setuptools>=12"
echo "Për cryptography==2.8 nevojiten 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

Po instalojmë dhe po nisim PostgreSQL 9.6 për ndërtimin e python-psycopg2-binary. Skedari 2psycopg2-binary.sh

Ju mund ta ndryshoni versionin e PostgreSQL në skript.

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

Po mbledhim dhe po instalojmë python-dateutil rpm. Skedari 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

Po mbledhim dhe po instalojmë python-urllib3 rpm. Skedari 4urllib3.sh

Titulli i spolerit

echo "Krijoni varësitë pip për rpm me fpm për 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 "Krijoni rpm për urllib"
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

Po mbledhim në rpm varësitë e tjera pip dhe i instalojmë ato. Skedari 5other_dependencies.sh

Titulli i spolerit

echo "Ndërto rpm nga 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

Krijojmë në rpm sentry dhe e instalojmë atë. Skedari 6sentry.sh

echo "Instalo nodejs dhe yarn"
curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
sudo yum install -y nodejs
sudo sed -e 's/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

Instalimi i sentry rpm me varësitë në një server tjetër

Çaktivizoni Selinux

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

Çaktivizoni repository-nĂ« epel-release

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

Instalojmë dhe nisim PostgreSQL 9.6. Skedari 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: Verifiko pa të drejta superuser për rolin sentry
#sudo -i -u postgres psql -c "alter role sentry nosuperuser;"
#sudo -i -u postgres psql -c "CREATE SCHEMA main AUTHORIZATION sentry;"

Nisim migrimin (krijimin e skemës së DB) dhe nisim shërbimet. Skedari 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

Krijojmë administratorin e brendshëm 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 

Ndërtimi i sentry në rpm, instalimi, konfigurimi për të lenurit

Çaktivizoni Selinux

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

Nisim skriptet për ndërtimin dhe instalimin e 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
Kopjojmë rpm nga rpmbuild/RPMS dhe korja sentry-rpm në serverin e synuar. Krijojmë repo yum. Instalim të gjitha paketat rpm të ndërtuara.
./7postgresql.sh
./8start_sentry.sh

Krijojmë administratorin e brendshëm 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 

Testimi i dërgimit të exception

Do ta testojmë në një projekt java. Shkarkojmë java dhe 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

Tani na nevojitet të nisim java duke i kaluar SENTRY_DSN

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

Tani duhet të gjejmë SENTRY_DSN e gjeneruar për default.

Hyjmë në Sentry. Shkkojmë te projekti për default internal.

Ndërtimi i sentry dhe varësive të tij në rpm. Instalimi i sentry nga rpm, konfigurimi bazë

ose

Ndërtimi i sentry dhe varësive të tij në rpm. Instalimi i sentry nga rpm, konfigurimi bazë

Kalojmë në cilësimet e projektit.

Ndërtimi i sentry dhe varësive të tij në rpm. Instalimi i sentry nga rpm, konfigurimi bazë

Kalojmë në Client Keys (DSN).

Ndërtimi i sentry dhe varësive të tij në rpm. Instalimi i sentry nga rpm, konfigurimi bazë

Kopjojmë DSN. Kjo është SENTRY_DSN.

Ndërtimi i sentry dhe varësive të tij në rpm. Instalimi i sentry nga rpm, konfigurimi bazë

Nisim java me këtë parametër.

SENTRY_DSN=http://633e7361061d4dcaaca53877c4c0e80a@172.26.9.34:9000/1 mvn exec:java

Shohim një skenë të tillë.

Ndërtimi i sentry dhe varësive të tij në rpm. Instalimi i sentry nga rpm, konfigurimi bazë

Nëse kalojmë te UnsupportedOperationException, do të shohim informacion të zgjeruar.

Ndërtimi i sentry dhe varësive të tij në rpm. Instalimi i sentry nga rpm, konfigurimi bazë

Ndërtimi i sentry dhe varësive të tij në rpm. Instalimi i sentry nga rpm, konfigurimi bazë

Krijova një bisedë në Telegram për Sentry.

https://t.me/sentry_ru

Në seritë në vazhdim:

  • TĂ« testoj LDAP. Skripti Ă«shtĂ« pĂ«rgatitur tashmĂ«. 9sentry-ldap-auth.sh
  • TĂ« testoj versionin 10.0.X tĂ« sentry pas lĂ«shimit tĂ« disa versioneve tĂ« vogla.

Repozitari me skripte:

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

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster