نصب و راه اندازی Sentry
بررسی اجمالی Sentry
Sentry ابزاری اپنسورس جهت ردیابی خطا (Error Tracking) است که به دولوپرها این امکان را میدهد تا خیلی سریع، پیوسته و با کارایی بالا، خطاهای احتمالی اپلیکیشن خود را ردیابی و رفع نمایند.
این ابزار توانایی اتصال و integrate شدن با ابزار های Gitlab , Github , Bitbucket , Jira ,Slack و … را دارا می باشد.
لینک مربوط به مستندسازی API آن برای زبان های برنامه نویسی مختلف و نحوه ی استفاده از آن در برنامه نویسی در زیر آمده است.
Sentry ، مخزن عمومی و هسته اصلی Sentry ، و getsentry ، بخش اختصاصی و سورس بسته است. برای محیط پروداکشن پیشنهاد میشه از getsentry استفاده بشه زیرا بروزتر است و یکسری قابلیت اضافی نیز دارد که فقط در SaaS اختصاصی سنتری ارائه می شود.ولی همین نسخه getsentry به صورت onpremise هم قابل پیاده سازی است که جلوتر بررسی میکنیم.
در حال حاضر آخرین نسخه sentry 9.1.2 و getsentry 20.12.1 می باشد.بعضا ممکنه که زیرساخت شما نیازمند ورژن های بالای سنتری باشه در اینجور سناریو ها از getsentry میبایست استفاده کرد.
نصب و راه اندازی Sentry-9
در این حالت ما از نسخه متن باز سنتری استفاده میکنیم که آخرین ورژنش در حال حاضر ۹ هست. که آدرس آن در هاب داکر در پایین قید شده است.
برای پیکربندی دو فایل config.yml sentry.conf.py استفاده میشود که محتویات زیر را دارند
شما میتونین برای دسترسی به فایل های این پروژه از آدرس گیت زیر استفاده کنید.
علاوه بر استفاده از این فایل ها میتوانید از متغیر های محیطی نیز استفاده کنید. در فایل داکر کامپوز میتونین این هارو مقدار دهی کنین.
git clone https://github.com/rfakit/sentry-on-docker.git
برای ساخت ایمیج میتونین به کمک دستور زیر آن را ایجاد کنید همچنین میتونین از ایمیج موجود در داکرهاب استفاده کنید
cd sentry-on-docker/build && docker build -t sentry:custom .
بعد از شخصی سازی تنظیمات به کمک فایل docker-compose.yml سرویس را بالا می آوریم.
مطمین بشین تنظیمات سمت ردیس و دیتابیس ( هاست ، یوزر و پسورد ) رو در فایل های پیکربندی بدرستی ست کرده باشین
در این کامپوز فایل از نسخه latest مربوط به سنتری در هاب داکر استفاده شده است.
با زدن دستور زیر سرویس بالا آمده و از طریق پورت 9000 قابل دسترس است که میتواند در پشت Haproxy قرار بگیرد
docker-compose up -d
نصب و راه اندازی getsentry
برای نصب این ابزار از پروژه گیت آن بدین منظور استفاده میکنیم.
الزامات
- Docker 19.03.6+
- Compose 1.24.1+
- at least 2400MB RAM
برای نصب sentry ابتدا می بایست پروژه گیت آن را کلون کنین.
git clone https://github.com/getsentry/onpremise.git
cd onpremise
درون این پروژه سه فایل برای پیکربندی وجود دارد که می بایست قبل از راه اندازی و نصب آن آن ها را پیکربندی کنیم.
- sentry/config.example.yml
sentry/sentry.conf.example.py
.env
پیکربندی اولیه sentry
فایل env.
این فایل حاوی متغیر های محیطی ای می باشد که در فایل داکر کامپوز از آن ها استفاده شده است.
به طور پیش فرض سنتری روی پورت 9000 بالا می آید برای این سناریو ما از همان پورت استفاده میکنیم و در جلو دست این سرور یک reverse proxy قرار میگیرد. انتخاب نوع reverse proxy دست خودتان است ولی در این مثال ما از haproxy استفاده میکنیم. یکی از بهترین را های پیاده سازی ssl/tls برای سنتری استفاده از یک reverse proxy خارجی میباشد در ادامه نمونه تنظیمات haproxy قرار داده شده است.
حفظ رویدادها در سنتری پیشفرض 90 روز است . سنتری با cron job هر 90 روز عملیات cleanup را انجام میدهد. اگر می خواهید آن را تغییر دهید ، می توانید متغیر محیط SENTRY_EVENT_RETENTION_DAYS را در .env تغییر دهید
نمونه فایل .env
COMPOSE_PROJECT_NAME=sentry_onpremise
SENTRY_EVENT_RETENTION_DAYS=90
SENTRY_BIND=9000
SENTRY_IMAGE=getsentry/sentry:nightly
SNUBA_IMAGE=getsentry/snuba:nightly
RELAY_IMAGE=getsentry/relay:nightly
SYMBOLICATOR_IMAGE=getsentry/symbolicator:nightly
فایل sentry/config.yml
شامل اکثر گزینه های پیکربندی مهم میباشد. این فایل در هنگام نصب از sentry / config.example.yml تولید می شود.پس شما می بایست این فایل را ویرایش و درحین نصب فایل sentry/config.yml ایجاد میشود.
همانطور که از محتویات فایل مشخص است این فایل شامل پیکربندی های متفاوتی است
- Mail Server
این قسمت تنظیمات میل سرور را دارد. اگر سرویس میل درون شرکت وجود دارد حتما پیشنهاد میشود که از آن استفاده کنید کافیست مانند تنظیمات بالا اطلاعات دسترسی و آدرس میل سرور را درون این فایل قرار دهید. فورمت این فایل یامل است پس مطمین بشین که دز مقادیری که وازد میکنین از کاراکتر ‘ استفاده نکرده باشین (مثلا پسورد حاوی این کاراکتر نباشد).
در صورتی که میخواین این بخش میل رو غیر فعال کنین کافیست در مقابل عبارت mail.backend از مقدار dummy استفاده کنید (پیشنهاد نمیشه زیرا در سناریو های مختلف درون سنتری مانند invite user , password reset و … از این سرویس استفاده میشود)
- System Settings
این بخش دوتا تنظیم مهم دارد یکی secret-key سیستم است که کلیدی یکتا برای نمونه سنتری شما میباشد شما میتوانید این کلید را به کمک دستور زیر ایجاد کنید
sentry config generate-secret-key
قسمت دوم این بخش تنظیمات redis.clusters را دارد که همانطور مشاهده میکنید کامنت شده زیرا در فایل پیکربندی sentry/sentry.conf.example.py تنظیم شده است . مقادیر نمایشی به صورت کامنت مقادیر پیشفرض هستند.
- File storage
نوع استوریج برای سنتری در این بخش مشخص میشود در حال حاضر دوتا بیشتر نمیتواند باشد یا مقدار filesystem که می بایست دایرکتوری برای آن مشخص کنیم و یا هم مقدار s3 را دارد که یک سرویس استوریج خاصه شرکت آمازون است موارد دیگری همچون gcs و minio نیز قابل استفاده اند
.
مقادیر نمایشی به صورت کامنت مقادیر پیشفرض هستند شما میتوانید آن ها را متناسب با نیاز خود تغییر دهید.
- GitHub Integration
یکی از کاربرد های مهم سنتری اتصال آن به GitHub است. در این بخش تنظیمات مخصوص برای اتصال این دو ابزار بهم پیکربندی میشود. در این مثال ما نیازی به پیکربندی اون نداریم واسه همین میزاریم به همون حالت کامنت بمونه.
- Slack Integration
اسلک slack یک چت روم برای مبادله پیام در شرکت است که بسیار قدرمتمند بوده و دارای API نیز است اتصال ابزار سنتری به slack میتواند تا حد زیادی مفید و برخی گزارشات را برای شما در این سرویس ارسال کند.
این بخش تنظیمات مخصوص برای اتصال این دو ابزار بهم است و در این مثال ما نیازی به پیکربندی اون نداریم واسه همین میزاریم به همون حالت کامنت بمونه.
فایل sentry/sentry.conf.py
شامل پیکربندی پیشرفته تر است. این فایل هنگام نصب از sentry / sentry.conf.example.py تولید می شود.
بیشتر مقادیر پیش فرض این فایل مناسب بوده ولی میتوانید متناسب با زیرساخت خودتان آن را شخصی سازی کنید.
بعد از ویرایش فایل های پیکربندی دستور زیر را اجزا میکنیم . این دستور باعث ایجاد فایل های پیکربندی اصلی از فایل های example و ایجاد فایل docker-compoe.yml نهایی میشود قبل از اجرای این فایل کامپوز میتوانید یک سری شخصی سازی ها روی این فایل انجام دهید.
SENTRY_PYTHON3=1 ./install.sh
docker-compose up -d
بعد از اجرا سرویس روی پورت 9000 اماده ی ارایه سرویس است بدین منظور سرویس را به پشت haproxy منتقل میکنیم.
نمونه تنظیمات haproxy برای این سرویس در پروژه گیت آمده است.
git clone https://github.com/rfakit/sentry-on-docker.git
cd sentry-on-docker
cat sample-haproxy.conf
در تنظیمات بالا مقدار USER , PASS برای دسترسی به پنل status سرویس haproxy هست و IP_ADDRESS هم مقدار آدرس هاستی که سرویس سنتری در حال اجرا میباشد را شامل میشود. حال با مراجعه به آدرس مشخص شده صفحه ورود آن مشاهده میشود
اگر از نسخه onpremise استفاده کردین برای ساخت یوزر ادمین میتوانیم وارد کانتینر sentry web شده و دستور زیر را بزنیم . این دستور به صورت prompt از ما یوزر و پسورد را سوال میکند.
sentry createuser --superuser
حال با این credentials میتوان در سیستم ورود کرد.
امیدوارم مفید بوده باشه