فناوری

آموزش نصب و پیکربندی سیستم مانیتورینگ Sentry روی CentOS Linux 8

در این مطلب قصد داریم سیستم رهگیری خطا و مانیتورینگ Sentry را نصب و پیکربندی کنیم. در صورتی که مقدمات لازم فراهم باشد، این کار حدود ۳۰ دقیقه زمان به زمان نیاز دارد.

Sentry چیست؟

Sentry یک سیستم مانیتوریگ و رهگیری خطا برای برنامه‌های کاربردی و سامانه های نرم افزاری است. Sentry به معنی نگهبان است و در واقع از نام یک سگ افسانه‌ای گرفته شده است که در این افسانه دارای ۳ سر بوده.

این سیستم با زبان برنامه نویسی قدرتمند Python توسعه پیدا کرده و از Django نیز به عنوان Web Application Framework استفاده کرده است.

مهم نیست که اپلیکیشنی را که قصد مانیتور کردن آن را دارید، با چه زبان یا چه Framework ای توسعه داده باشید، احتمال خیلی زیاد Sentry برای آن کتابخانه‌ای خواهد داشت و حتی اگر هم از تکنولوژی‌ای استفاده کردید که کتابخانه‌ی Sentry برایش پیدا نکردید، می توانید از API استفاده کنید و خطاها را به Sentry ارسال کنید. برای آشنایی با راهبری Sentry و شروع استفاده از آن می‌توانید راهنمای رسمی Sentry را مطالعه کنید.

آماده سازی مقدمات نصب

قبلا در این پست روش نصب سیستم عامل CentOS 8 را آموزش دادیم و برای نصب Sentry نیز از این سیستم عامل استفاده خواهیم کرد.

برای نصب برخی از بسته های نرم افزاری پیشنیاز، نیاز به فعال کردن مخزن‌های PowerTools و EPEL داریم، که برای آن فقط کافیست دستورات زیر را اجرا کنید:

sudo dnf config-manager --set-enabled PowerTools
sudo dnf install epel-release -y

گام بعدی بروزرسانی سیستم عامل که با دستور زیر انجام می شود:

sudo dnf update -y

سپس با اجرای دستور زیر، بسته های پیشنیاز نصب خواهد شد:

sudo dnf install wget nano python2 python2-setuptools python2-devel python2-lxml python2-pip libxml2-devel xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-devel libxslt libxslt-devel libxml2 libxml2-devel libzip libzip-devel libffi libffi-devel openssl-libs libyaml libyaml-devel libjpeg libjpeg-devel libpng libpng12 libpng-devel net-tools gcc gcc-c++ -y

اگر همه چیز خوب پیش رفته باشد و به خطا بر نخورده باشید، بسته های نرم افزاری مورد نیاز نصب شده است.

نصب پایگاه داده PostgreSQL:

Sentry برای نگهداری داده‌های ارسال شده از طرف برنامه های کاربردی، از پایگاه داده های مختلفی از جمله MySQL و Postgres استفاده می کند، پایگاه داده Postgres به خاطر قابلیت‌های ویژه‌ای که در مدیریت رکوردهای زیاد دارد، انتخاب ماست. برای نصب این پایگاه داده، مراحل زیر را انجام می دهیم:

دستورات زیر بسته پایگاه داده Postgres را نصب خواهد کرد:

sudo dnf module enable postgresql:10
sudo dnf install postgresql-server postgresql-contrib libpq-devel libpq -y

با دستورات زیر هم سرویس Postgres آماده سازی و فعال خواهد شد:

sudo postgresql-setup initdb
sudo systemctl enable postgresql.service
sudo systemctl start postgresql.service

تنظیم دسترسی ها در Postgres:

برای اینکار با اجرای دستور زیر، تنظیمات را مانند نمونه تغییر می دهیم:

sudo nano /var/lib/pgsql/data/pg_hba.conf

تنظیم نمونه:

 
# TYPE  DATABASE        USER            ADDRESS                 METHOD

local    all             postgres                                peer

# "local" is for Unix domain socket connections only
local    all             all                                     peer
# IPv4 local connections:
host     all             all             127.0.0.1/32            md5
# IPv6 local connections:
host     all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident

سپس با دستور زیر، تغییرات را اعمال می کنیم:

sudo systemctl restart postgresql.service

نصب Redis:

Sentry برای عملکرد بهینه خود نیاز به سرویس Redis دارد. Redis یک سیستم ذخیره سازی داده در خافظه است. برای نصب Redis از دستورات زیر استفاده می شود:

sudo dnf install redis -y
sudo systemctl enable redis.service
sudo systemctl start redis.service

نصب supervisor:

برای مدیریت سرویس مربوط به Sentry نیاز به نصب supervisor داریم که با دستورات زیر انجام خواهد شد:

sudo dnf install supervisor -y
sudo systemctl enable supervisord.service

بروزرسانی pip:

pip یک ابزار مدیریت بسته در Python است، برای بروزرسانی pip از دستور زیر استفاده می شود:

sudo pip2 install --upgrade pip

نصب virtualenv:

برای ایجاد یک محیط ایزوله برای Python می بایست بسته virtualenv نصب شود که با دستور زیر انجام خواهد شد:

sudo pip install -U virtualenv

شروع نصب Sentry:

بهتر است سرویس Sentry با یک حساب کاربری مستقل اجرا شود که در اینصورت امنیت سرویس بالاتر خواهد بود. بنابر این با دستور زیر، یک حساب کاربری با نام Sentry ایجاد می کنیم:

sudo useradd sentry

ایجاد پایگاه داده برای Sentry:

برای ایجاد حساب کاربری در پایگاه داده و همچنین ایجاد یک دیتابیس برای Sentry، دستورات زیر را به ترتیب اجرا می‌کنیم:

sudo su - postgres
psql template1
create user sentry with password 'your_strong_password';
alter user sentry with superuser;
create database sentrydb with owner sentry;
\q
exit

ایجاد virtual environment برای Sentry:

برای ایجاد virtual environment برای حساب کاربری Sentry که قبلا آن را ایجاد کردیم، دستورات زیر را به ترتیب اجرا می‌کنیم:

sudo su - sentry 
virtualenv /home/sentry/sentry_app 
source /home/sentry/sentry_app/bin/activate

نصب بسته Sentry:

حالا نوبت به نصب بسته نرم افزاری Sentry رسیده است، برای نصب و آماده سازی این بسته کافیست دستورات زیر را به ترتیب اجرا کنید:

pip install -U sentry 
/home/sentry/sentry_app/bin/sentry init

پیکربندی Sentry:

حالا نوبت آن است که تنظیمات Sentry را انجام دهیم، برای این کار با دستور زیر، فایل پیکربندی Sentry را باز می کنیم و مطابق پیکربندی نمونه تنظیم را انجلم می دهیم:

nano /home/sentry/.sentry/sentry.conf.py

پیکربندی نمونه:

…

DATABASES = {
    'default': {
        'ENGINE': 'sentry.db.postgres',
        'NAME': 'sentrydb',
        'USER': 'sentry',
        'PASSWORD': 'your_strong_password',
        'HOST': '127.0.0.1',
        'PORT': '5432',
        'AUTOCOMMIT': True,
        'ATOMIC_REQUESTS': False,
    }
}

…

همچنین می بایست فایل پیکربندی دوم را با دستور زیر ویرایش کرد و مطابق با نمونه، پیکربندی را تغییر داد:

nano /home/sentry/.sentry/config.yml

پیکربندی نمونه:

…

redis.clusters:
  default:
    hosts:
      ۰:
        host: 127.0.0.1
        port: 6379

…

بروزرسانی ساختار دیتابیس Sentry:

با دستور زیر، Sentry ساختار پایگاه داده را ایجاد خواهد کرد:

/home/sentry/sentry_app/bin/sentry upgrade
exit

در ادامه کار، از شما اطلاعات حساب کاربر مدیر Sentry خواسته می شود که نیاز به تعیین یک ایمیل و یک رمز عبور برای خود خواهید داشت. اگر همه چیز درست باشد، در انتها چیزی مانند تصویر را خواهید دید:

 

پیکربندی supervisor برای مدیریت سرویس Sentry:

گفتیم که برای مدیریت سرویس Sentry از supervisor استفاده می کنیم، برای اینکار دستور زیر را اجرا می کنیم:

sudo nano /etc/supervisord.conf

سپس در انتهای فایل، عبارت زیر را اضافه می کنیم:

files = supervisord.d/*.conf

حالا نوبت ایجاد فایل پیکربندی سرویس Sentry است، برای اینکار با دستور زیر، فایل پیکربنید را ایجاد می کنیم و محتوای زیر را درون آن قرار می دهیم:

sudo nano /etc/supervisord.d/sentry.conf

محتوای پیکربندی:

[program:sentry-web]
directory=/home/sentry/sentry_app/
environment=SENTRY_CONF="/home/sentry/.sentry"
command=/home/sentry/sentry_app/bin/sentry --config=/home/sentry/.sentry run web
autostart=true
autorestart=true
redirect_stderr=true
user=sentry
stdout_logfile=syslog
stderr_logfile=syslog

[program:sentry-worker]
directory=/home/sentry/sentry_app/
environment=SENTRY_CONF="/home/sentry/.sentry"
command=/home/sentry/sentry_app/bin/sentry --config=/home/sentry/.sentry run worker
autostart=true
autorestart=true
redirect_stderr=true
user=sentry
stdout_logfile=syslog
stderr_logfile=syslog
startsecs=1
startretries=3
stopsignal=TERM
stopwaitsecs=10
stopasgroup=false
killasgroup=true

[program:sentry-cron]
directory=/home/sentry/sentry_app/
environment=SENTRY_CONF="/home/sentry/.sentry"
command=/home/sentry/sentry_app/bin/sentry --config=/home/sentry/.sentry run cron
autostart=true
autorestart=true
redirect_stderr=true
user=sentry
stdout_logfile=syslog
stderr_logfile=syslog

برای اجرای سرویس Sentry و فعالسازی آن باید دستورات زیر را اجرا کرد:

sudo systemctl restart supervisord
sudo supervisorctl reread
sudo supervisorctl update

حالا باید پورت ۹۰۰۰ را روی فایروال باز کنید و این دستور این کار را خواهد کرد:

sudo firewall-cmd --zone=public --permanent --add-port 9000/tcp
sudo firewall-cmd --reload

دسترسی به Sentry:

اگر همه مراحل به درستی انجام شده باشد، شما صاحب یک Sentry شده‌اید و  می توانید در مرورگر خود با آدرس زیر، Sentry را ببینید:

http://server_ip_address:9000

 

 

 

تیم تحقیق و توسعه