آموزش نصب و پیکربندی سیستم مانیتورینگ 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