Xây dựng lính gác và các phần phụ thuộc của nó theo vòng/phút. Cài đặt Sentry từ vòng/phút, thiết lập cơ bản

Описание

Lính gác — một công cụ để theo dõi các ngoại lệ và lỗi trong ứng dụng của bạn.

HÃY TÌM HIỂU:

  • dễ dàng tích hợp vào dự án,
  • bắt lỗi cả trong trình duyệt của người dùng và trên máy chủ của bạn.
  • Miễn phí,
  • Danh sách lỗi được cập nhật theo thời gian thực,
  • Nếu lỗi được đánh dấu là đã giải quyết và xuất hiện lại thì lỗi đó sẽ được tạo lại và xem xét trong một luồng riêng biệt,
  • Các lỗi được nhóm lại và hiển thị theo thứ tự tần suất xuất hiện,
  • Lỗi có thể được lọc theo trạng thái, nguồn ghi nhật ký, cấp độ ghi nhật ký, tên máy chủ, v.v.

So sánh với nhật ký ELK: Điều quan trọng nhất là trong ELK, mỗi nhật ký mới cùng loại là một mục riêng biệt. và trong canh gác, mỗi ngoại lệ mới cùng loại chỉ +1 cho số lượng bản ghi của nó

Sentry hỗ trợ hầu hết các ngôn ngữ lập trình. Thêm chi tiết đây.

Chạy Sentry với docker và docker-compose

Bạn có thể chạy Sentry bằng docker và docker-compose như được mô tả ở đây: https://github.com/getsentry/onpremise. Nhưng tập lệnh khởi chạy các dịch vụ bổ sung trên cùng một máy chủ ở chế độ đơn (không có khả năng chịu lỗi) (Đối với phiên bản Sentry 10.0.0):

  • dữ liệu
  • bưu điện
  • redis
  • người trông coi vườn thú
  • Kafka
  • nhà nhấp chuột
  • người biểu tượng

Nếu cần khả năng chịu lỗi, bạn sẽ phải sử dụng các gói sản phẩm đám mây hoặc cài đặt Sentry mà không có tập lệnh này.

Bài đăng này mô tả quá trình xây dựng Sentry và các phần phụ thuộc của nó trong vòng một phút. Nếu bạn cần cài đặt Sentry ở nơi không có Internet, thì bạn có thể tạo một kho lưu trữ yum từ các vòng/phút nhận được.

Làm rõ quan trọng về việc lắp ráp và cài đặt các gói

Một số gói phụ thuộc vào nhau. Vì vậy, quá trình lắp ráp và lắp đặt được chia thành nhiều giai đoạn.

LÀM:

Bài đăng này bao gồm việc xây dựng và cài đặt Sentry phiên bản 9.1.2. Sau khi nhà phát triển phát hành một số bản phát hành nhỏ, bạn có thể xây dựng phiên bản Sentry 10.XY. Nhiều cam kết mới nhất trong bản chính là bản sửa lỗi.

Yêu cầu máy chủ để xây dựng vòng/phút

Càng có nhiều CPU thì các gói semaphore và Symbolic sẽ được xây dựng càng nhanh

Tắt Selinux

Cộng đồng sẽ chỉ được ưu ái nếu ai đó viết chính sách selinux cho Sentry.

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

Kết nối kho lưu trữ phát hành epel

sudo yum install -y epel-release git

Chúng tôi thu thập các phần phụ thuộc theo số vòng/phút và cài đặt chúng. Tệp 1general_dependences.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

Cài đặt và chạy PostgreSQL 9.6 để xây dựng python-psycopg2-binary. Tệp 2psycopg2-binary.sh

Bạn có thể thay đổi phiên bản PostgreSQL trong tập lệnh.

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

Biên dịch và cài đặt vòng/phút python-dateutil. Tệp 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

Biên dịch và cài đặt python-urllib3 vòng/phút. Tệp 4urllib3.sh

tiêu đề tiết lộ

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

Chúng tôi thu thập các phần phụ thuộc pip còn lại vào vòng/phút và cài đặt chúng. Tệp 5other_dependences.sh

tiêu đề tiết lộ

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

Chúng tôi biên dịch trong vòng/phút và cài đặt nó. Tệp 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

Cài đặt vòng/phút Sentry với sự phụ thuộc trên máy chủ khác

Tắt Selinux

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

Kết nối kho lưu trữ phát hành epel

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

Cài đặt và chạy PostgreSQL 9.6. Tệp 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;"

Chúng tôi bắt đầu di chuyển (tạo lược đồ cơ sở dữ liệu) và khởi động dịch vụ. Tệp 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

Tạo quản trị viên Sentry nội bộ

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 

Xây dựng Sentry trong vòng/phút, cài đặt, cấu hình cho người lười

Tắt Selinux

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

Chạy tập lệnh để xây dựng và cài đặt 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

Tạo quản trị viên Sentry nội bộ

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 

Kiểm tra việc gửi ngoại lệ

Chúng tôi sẽ thử nghiệm nó trên một dự án java. Tải xuống java và 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

Bây giờ chúng ta cần khởi chạy java bằng cách chuyển nó SENTRY_DSN

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

Bây giờ chúng ta cần tìm SENTRY_DSN được tạo mặc định.

Hãy tới Sentry. Hãy đi đến dự án mặc định internal.

Xây dựng lính gác và các phần phụ thuộc của nó theo vòng/phút. Cài đặt Sentry từ vòng/phút, thiết lập cơ bản

hoặc

Xây dựng lính gác và các phần phụ thuộc của nó theo vòng/phút. Cài đặt Sentry từ vòng/phút, thiết lập cơ bản

Hãy đi đến cài đặt dự án.

Xây dựng lính gác và các phần phụ thuộc của nó theo vòng/phút. Cài đặt Sentry từ vòng/phút, thiết lập cơ bản

Đi tới Khóa máy khách (DSN).

Xây dựng lính gác và các phần phụ thuộc của nó theo vòng/phút. Cài đặt Sentry từ vòng/phút, thiết lập cơ bản

Sao chép DSN. Đây là SENTRY_DSN.

Xây dựng lính gác và các phần phụ thuộc của nó theo vòng/phút. Cài đặt Sentry từ vòng/phút, thiết lập cơ bản

Chúng tôi khởi chạy java với tham số này.

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

Chúng ta nhìn thấy bức tranh này.

Xây dựng lính gác và các phần phụ thuộc của nó theo vòng/phút. Cài đặt Sentry từ vòng/phút, thiết lập cơ bản

Nếu chúng ta đi đến UnsupportedOperationException, khi đó chúng ta sẽ thấy thông tin mở rộng.

Xây dựng lính gác và các phần phụ thuộc của nó theo vòng/phút. Cài đặt Sentry từ vòng/phút, thiết lập cơ bản

Xây dựng lính gác và các phần phụ thuộc của nó theo vòng/phút. Cài đặt Sentry từ vòng/phút, thiết lập cơ bản

Tạo cuộc trò chuyện Telegram bằng Sentry

https://t.me/sentry_ru

Trong các tập sau:

  • Kiểm tra LDAP. Kịch bản đã được chuẩn bị sẵn 9sentry-ldap-auth.sh
  • Kiểm tra phiên bản canh gác 10.0.X sau khi tung ra một vài bản phát hành nhỏ.

Kho lưu trữ với các tập lệnh:

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

Nguồn: www.habr.com