پرش به مطلب اصلی

سنتری چگونه کار می‌کند؟

جعبه سیاه هواپیما اطلاعات پرواز را ثبت می‌کند تا هنگام بروز حادثه، بررسی اتفاق‌ها فقط بر حدس‌وگمان متکی نباشد. سنتری نیز نقش مشابهی در اپلیکیشن دارد: اطلاعات مربوط به خطاها و عملکرد برنامه را جمع‌آوری می‌کند و برای بررسی در اختیار تیم توسعه قرار می‌دهد.

سنتری برای انجام این کار از یک کتابخانه کوچک به نام کیت توسعه نرم‌افزار (Software Development Kit یا SDK) استفاده می‌کند. SDK داخل اپلیکیشن قرار می‌گیرد و بر اساس تنظیمات شما، رخدادهای مرتبط با خطا و عملکرد را برای سنتری می‌فرستد.

چرخه کار سنتری

فرایند کار سنتری را می‌توان در چند مرحله خلاصه کرد:

  1. SDK را به اپلیکیشن اضافه می‌کنید. برای هر زبان یا فریم‌ورک، SDK مخصوصی وجود دارد. بهتر است SDK در مراحل ابتدایی اجرای برنامه راه‌اندازی شود تا بتواند خطاهای بیشتری را ثبت کند.

  2. SDK را با DSN پیکربندی می‌کنید. نام منبع داده (Data Source Name یا DSN) مشخص می‌کند اطلاعات جمع‌آوری‌شده باید برای کدام پروژه در سنتری ارسال شوند.

  3. اپلیکیشن به کار خود ادامه می‌دهد. SDK بر اساس تنظیمات فعال‌شده، خطاها و داده‌های عملکردی برنامه را جمع‌آوری می‌کند.

  4. یک خطا یا کندی رخ می‌دهد. این اتفاق ممکن است یک Exception، درخواست ناموفق، خطای مدیریت‌نشده یا تراکنشی کند باشد.

  5. SDK اطلاعات مرتبط را ثبت می‌کند. این اطلاعات، بسته به پیکربندی اپلیکیشن، می‌توانند شامل پشته فراخوانی (Stack Trace)، مرورگر، سیستم‌عامل، نسخه اپلیکیشن و رویدادهای منتهی به خطا باشند.

  6. اطلاعات در قالب رخداد ارسال می‌شوند. هر بسته اطلاعاتی که برای سنتری فرستاده می‌شود، یک رخداد (Event) است. رخدادها می‌توانند از نوع خطا (Error) یا تراکنش (Transaction) باشند.

  7. سنتری رخدادها را پردازش می‌کند. خطاهای مشابه در قالب یک Issue گروه‌بندی می‌شوند و داده‌های عملکردی نیز برای بررسی تراکنش‌ها و گلوگاه‌های برنامه در دسترس قرار می‌گیرند.

پس از این مراحل، می‌توانید اطلاعات ثبت‌شده را در پنل سنتری بررسی کنید و در صورت نیاز، برای رخدادهای مهم هشدار بسازید.

از Event تا Issue

فرض کنید یک خطای مشخص در صفحه پرداخت برای صدها کاربر رخ دهد. نمایش هر رخداد به‌صورت جداگانه، بررسی مشکل را دشوار می‌کند. سنتری خطاهایی را که در بخش‌های مشابه کد رخ داده‌اند، شناسایی و در یک Issue گروه‌بندی می‌کند.

در نتیجه، به‌جای مشاهده صدها گزارش جداگانه، یک Issue می‌بینید که اطلاعاتی مانند تعداد رخدادها، زمان اولین و آخرین وقوع و جزئیات فنی خطا را در اختیار شما قرار می‌دهد.

این گروه‌بندی کمک می‌کند متوجه شوید با یک مشکل تکرارشونده روبه‌رو هستید یا چند خطای مستقل رخ داده‌اند. همچنین می‌توانید Issueها را اولویت‌بندی، پیگیری یا پس از رفع مشکل بسته کنید.

ارتباط میان بخش‌های یک درخواست

سنتری فقط نقطه وقوع خطا را ثبت نمی‌کند. با فعال‌سازی ردیابی (Tracing)، می‌توانید مسیر اجرای یک درخواست را نیز بررسی کنید.

هر مسیر ردیابی یک شناسه ردیابی (Trace ID) دارد. اگر ردیابی در سرویس‌های مرتبط فعال و انتقال این شناسه به‌درستی پیکربندی شده باشد، سنتری می‌تواند تراکنش‌های مربوط به یک درخواست را به یکدیگر مرتبط کند.

برای مثال، وقتی کاربر روی گزینه «پرداخت» کلیک می‌کند، درخواست ممکن است از مرورگر به سرور، دیتابیس و درگاه پرداخت منتقل شود. اطلاعات ردیابی کمک می‌کنند مشخص شود درخواست در هر بخش چقدر زمان صرف کرده و کندی یا خطا در کدام مرحله رخ داده است.

هر تراکنش نیز می‌تواند به چند بازه (Span) تقسیم شود. هر Span بخشی از عملیات، مانند اجرای یک کوئری دیتابیس یا فراخوانی یک API خارجی، را نشان می‌دهد. با بررسی آن‌ها می‌توانید منشأ کندی را دقیق‌تر پیدا کنید.

فعال‌سازی ردیابی ممکن است تعداد رخدادهای ارسالی را افزایش دهد. برای کنترل این مقدار می‌توانید از نمونه‌برداری (Sampling) استفاده کنید و فقط درصد مشخصی از تراکنش‌ها را برای سنتری بفرستید.

اهمیت اطلاعات زمینه‌ای

یک لاگ معمولی ممکن است فقط بگوید خطایی در ساعت مشخصی رخ داده است. سنتری می‌تواند همان خطا را همراه با اطلاعات زمینه‌ای (Context) نمایش دهد؛ برای مثال، خطا در کدام نسخه اپلیکیشن، مرورگر یا محیط اجرا رخ داده و مسیر اجرای برنامه تا آن نقطه چه بوده است.

مقدار اطلاعات هر گزارش به SDK، زبان برنامه‌نویسی و تنظیمات اپلیکیشن بستگی دارد. بنابراین، سنتری همیشه همه اطلاعات را به‌صورت خودکار در اختیار ندارد؛ اما با پیکربندی مناسب می‌تواند بخش زیادی از اطلاعات لازم برای اشکال‌زدایی را در یک محل جمع‌آوری کند.

این صفحه مفید بود؟

با ثبت بازخوردتان در بهبود کیفیت مستندات مشارکت داشته باشید.