مفاهیم پیشنیاز
برای اطلاعات جامع راجع به سنتری به صفحه مستندات رسمی آن مراجعه کنید.
رویداد (Event) چیست؟
در دنیای توسعهی نرمافزار، پایش و ثبت رفتار اپلیکیشنها نقش مهمی در افزایش کیفیت و عملکرد آنها دارد. Sentry نیز دقیقاً در همین نقطه وارد عمل میشود. هر دادهای که از سمت اپلیکیشن یا کاربر به Sentry ارسال میشود، یک رویداد یا همان Event محسوب میشود. این رویدادها معمولاً به دو دستهی کلی تقسیم میشوند: خطا (Error) و تراکنش (Transaction).
نرخ ارسال این رویدادها به Sentry، وابسته به پلن اشتراکی شما، محدودیتهایی دارد. این محدودیتها میتوانند در بازههای زمانی مختلفی تعریف شوند. نکته مهم اینکه هر خطا ممکن است شامل چندین Event باشد، بنابراین شمار رویدادها لزوماً با تعداد خطاها یکسان نیست.
خطا (Error): رویداد پایه
تعریف خطا ممکن است بسته به پلتفرم یا زبان برنامهنویسی متفاوت باشد، اما Sentry معمولاً رخدادهایی مثل استثناها (Exceptions) و خطاهای مدیریتنشده در Promiseها (Unhandled Promise Rejection) را بهعنوان خطا شناسایی و ثبت میکند.
در داشبورد Sentry، بخش Issues برای مدیریت و پیگیری خطاها طراحی شده است. این پلتفرم بهکمک الگوریتمهای داخلی خود، خطاهایی را که در ناحیهی مشابهی از کد یا تحت شرایط یکسانی رخ دادهاند، بهصورت خودکار گروهبندی میکند. دستهبندی بر اساس محل بروز، زمان، تعداد دفعات تکرار و سایر پارامترهای فنی انجام میشود و هدف از آن سادهسازی فرآیند تحلیل خطا برای تیم توسعه است.
تراکنش (Transaction): رویدادی برای رصد عملکرد اپلیکیشن
اگر بخواهید بدانید اپلیکیشن شما در عمل چقدر سریع، سبک و بهینه کار میکند، باید سراغ تراکنشها بروید. تراکنشها در Sentry برای پایش عملکرد (Performance) و مدت زمان اجرای عملیاتها مورد استفاده قرار میگیرند. این بخش در تب Performance در دسترس است.
برخی از رویدادهایی که بهصورت تراکنش ثبت میشوند شامل موارد زیر است:
-
بارگذاری یک صفحه (Page Load)
-
تغییر مسیر (Navigation)
-
اجرای یک عملیات یا تسک خاص (Task Execution)
زمانی که قابلیت Performance Monitoring در SDK فعال باشد، Sentry بهصورت خودکار برای بسیاری از این عملیاتها تراکنش تولید میکند. اما توجه داشته باشید که حجم بالای این دادهها ممکن است باعث عبور از محدودیت پلن شما شود. در چنین شرایطی بخشی از تراکنشها ممکن است نادیده گرفته شوند.
راهحل چیست؟ نمونهبرداری یا Sampling
برای مدیریت بهتر نرخ ارسال تراکنشها، Sentry قابلیتی بهنام Sampling ارائه میدهد. با استفاده از پارامتر tracesSampleRate
میتوانید تعیین کنید چه درصدی از تراکنشها به Sentry ارسال شوند.
مقدار این پارامتر بین ۰.۰ تا ۱.۰ است.
-
1.0
یعنی ارسال تمام تراکنشها -
0.5
یعنی ارسال نیمی از تراکنشها بهصورت تصادفی
برای اطلاعات دقیقتر در مورد نحوهی پیکربندی این پارامتر، به مستندات رسمی Sentry مراجعه کنید.
DSN: آدرس اتصال اپلیکیشن به Sentry
برای اینکه اپلیکیشن شما بداند رویدادها را به کجا بفرستد، باید از DSN (Data Source Name) استفاده کنید. این آدرس، اتصال بین SDK اپلیکیشن و پروژهی مشخص شما در داشبورد Sentry را برقرار میکند.
چطور DSN دریافت کنیم؟
-
اگر هنوز پروژهای در Sentry ندارید، ابتدا پروژهی جدید بسازید.
-
سپس وارد بخش Settings شده و در قسمت Client Keys (DSN)، آدرس مربوطه را مشاهده و کپی کنید.
برای اطلاعات دقیقتر به مستندات رسمی Sentry مراجعه کنید.
پیوستها (Attachment): اطلاعات تکمیلی برای تحلیل دقیقتر
هر خطا ممکن است با اطلاعاتی همراه باشد که تحلیل آن را آسانتر کند. این دادههای مکمل تحت عنوان Attachment در Sentry ذخیره میشوند.
نمونههایی از این پیوستها:
-
فایلهای لاگ (Log)
-
فایلهای پیکربندی (Config)
-
خروجیهای مربوط به خطا
وجود این فایلها میتواند مسیر شناسایی مشکل را برای توسعهدهنده بسیار کوتاهتر کند.
Environment: خطا در چه محیطی رخ داده؟
یکی از تگهای مهمی که میتوانید در SDK تعریف کنید، Environment است. این تگ مشخص میکند که خطا یا تراکنش در کدام محیط اجرای اپلیکیشن رخ دادهاند. محیطهایی مثل:
-
development
(توسعه) -
testing
(آزمایش) -
staging
(پیشتولید) -
production
(محیط نهایی)
این تگها به شما امکان میدهند تا خطاها را دقیقتر فیلتر کرده و مشخص کنید که آیا مشکلی مربوط به نسخهی نهایی است یا تنها در محیط توسعه دیده شده.
Issue: خطاهای مشابه در یک دسته
Sentry برای سادهسازی مدیریت خطاها، آنها را در قالب Issue نمایش میدهد. هر Issue در واقع مجموعهای از خطاها یا رویدادهای مشابه است که معمولاً در یک ناحیهی خاص از کد یا با شرایطی یکسان رخ دادهاند.
با بررسی یک Issue، میتوانید علت اصلی مشکل را پیدا کنید بدون اینکه لازم باشد تکتک رخدادها را جداگانه بررسی نمایید.
Release: نسخهای از کد که روی سرور است
در Sentry، مفهومی تحت عنوان Release تعریف شده که نشاندهندهی نسخهی خاصی از کد شماست که در محیطی مشخص دیپلوی شده است.
اگر Release جدیدی را بهدرستی در SDK یا از طریق API معرفی کنید، Sentry میتواند خطاها و رخدادهایی که در آن نسخه اتفاق افتادهاند را به همان Release نسبت دهد. این قابلیت در تحلیل نسخهبهنسخهی مشکلات نقش مهمی ایفا میکند.
SDKهای Sentry: جعبهابزار اتصال به سیستم
Sentry SDK مجموعهای از کتابخانههاست که برای زبانها و فریمورکهای مختلف توسعه یافته است. این ابزارها به توسعهدهندگان این امکان را میدهند که قابلیتهای Sentry را بهسادگی به اپلیکیشن خود اضافه کنند.
برخی از زبانهای پشتیبانیشده شامل JavaScript ،Python ،Java ،Go ،PHP ،.NET و بسیاری موارد دیگر هستند.
کاربردهای SDK شامل:
-
ثبت خطاها و ارسال آنها به سرور
-
تعریف و ارسال تراکنشها
-
تنظیم Environment و Release
-
فعالسازی Sampling
برای مشاهدهی لیست کامل SDKها و پلتفرمهای پشتیبانیشده، به وبسایت رسمی sentry.io مراجعه کنید.
هشدارها (Alerts): با اولین خطا خبردار شوید
یکی از ویژگیهای بسیار مفید Sentry، سیستم هشداردهی آن است. Alerts به شما این امکان را میدهند تا هنگام وقوع یک خطا، بلافاصله از آن مطلع شوید.
-
هشدارها میتوانند بهصورت خودکار یا دستی (Custom) تعریف شوند.
-
نحوهی اطلاعرسانی نیز قابل تنظیم است: ایمیل، Slack ،Webhook و...
این سیستم باعث میشود که هیچ خطایی بیپاسخ نماند و تیم توسعه همیشه در جریان وضعیت اپلیکیشن باشد.
تیمها (Team): همکاری مؤثر در مدیریت پروژه
در ساختار سازمانی Sentry، تیمها مجموعهای از کاربران هستند که بهطور مشترک روی یک یا چند پروژه فعالیت دارند. وقتی خطایی در پروژه رخ میدهد، هشدارهای مربوطه به اعضای تیم مرتبط ارسال میشود.
این ساختار باعث میشود:
-
مسئولیتها بهتر تقسیم شوند
-
واکنش به مشکلات سریعتر باشد
-
همکاری بین توسعهدهندگان مؤثرتر انجام شود