Files

107 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# مشخصات درس‌نامه: ثبت لاگ‌ها و ردگیری هوشمند خطاهای پروداکشن با Sentry و کنسول‌های ابری
- **شناسه در سیلابس:** `L13.4`
- **فصل:** فصل ۱۳: نگهداری محصول (Ch 13)
- **نوع محتوا:** 📘 درس‌نامه متنی
- **زمان تقریبی مطالعه:** ۱۸ دقیقه
- **پیش‌نیازهای مستقیم:** `L13.3` (سامانه‌های پایش آپتایم و هشدارهای تلگرام)
---
## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
دانشجو پس از مطالعهٔ این درس‌نامه باید بتواند:
- [ ] **درک کند (Understand):** نقطه کور بزرگ محیط پروداکشن را بشناسد؛ جایی که بر خلاف لوکال، هیچ خطای قرمزی روی مانیتور شما چاپ نمی‌شود و کاربران در سکوت با خطا مواجه شده و سایت را ترک می‌کنند.
- [ ] **تحلیل/ارزیابی کند (Evaluate):** ساختار سیستم ردگیری خطای حرفه‌ای **Sentry** و تفاوت لاگ‌های ساده کنسول (Server Logs در لیارا/ورسل) را با ثبت عمیق ردپا (Breadcrumbs) و استک‌تریس زنده ارزیابی کند.
- [ ] **به‌کار ببندد (Apply):** پکیج `@sentry/nextjs` را در پروژه پورتفولیو راه‌اندازی کرده و خطاهای ثبت‌نشده در کلاینت، سرور و تراکنش‌های زرین‌پال/پیامک را به صورت خودکار به دام بیندازد.
- [ ] **ایجاد کند (Create):** یک جریان دیباگ سریع با ایجنت بسازد که با دریافت گزارش تفصیلی خطای سنتری، ریشه باگ پروداکشن را در کمتر از ۱۰ دقیقه شناسایی و پچ امنیتی ارائه دهد.
---
## ۲. محدوده و مرزهای محتوا (Scope & Boundaries)
### آنچه باید پوشش داده شود (In-Scope):
1. **نقطه کور پروداکشن: «کاربر چه کرد که این باگ رخ داد؟»:**
* کاربر دکمه رزرو مشاوره را می‌زند، صفحه لودینگ گیر می‌کند، کاربر پنجره را می‌بندد و شما هرگز نمی‌فهمید چرا!
2. **لایه اول دیدبانی: لاگ‌های زنده سرور ابری (Server Runtime Logs):**
* خواندن خروجی‌های استاندارد (`stdout` و `stderr`) در تب لاگ‌های لیارا و پنل ورسل.
* تفکیک سطوح لاگ‌نویسی: `INFO`، `WARN` و `ERROR`.
3. **لایه دوم دیدبانی: شکارچی باگ‌های زنده با Sentry:**
* سنتری چیست؟ پلتفرم استاندارد جهانی برای ثبت، گروه‌بندی و تحلیل باگ‌های نرم‌افزار.
* ثبت جزئیات طلایی در هر گزارش خطا:
- ردپای دقیق توابع و شماره خط کد (Stack Trace).
- مدل دستگاه و سیستم‌عامل کاربر، مرورگر و موقعیت جغرافیایی.
- خرده‌نان‌ها یا تاریخچه اقدامات کاربر (Breadcrumbs): مثلاً «کاربر منو را باز کرد $\rightarrow$ روی دکمه کلیک کرد $\rightarrow$ فیلد تلفن را پر کرد $\rightarrow$ خطا رخ داد».
4. **راه‌اندازی فوق‌سریع سنتری در Next.js:**
* اجرای ویزارد خودکار: `npx @sentry/wizard@latest -i nextjs`.
* اضافه شدن فایل‌های کانفیگ کلاینت، سرور و لبه به صورت خودکار توسط ویزارد.
* استفاده از `Sentry.captureException(error)` داخل بلوک‌های حساس `try/catch` در Server Actions.
5. **روش دیباگ خطای پروداکشن با ترکیب گزارش Sentry و ایجنت هوش مصنوعی:**
* کپی کردن گزارش سنتری و پرامپت طلایی برای کشف باگ‌های پنهان داده‌های خاص کاربران.
6. **کال‌اوت‌های آموزشی و هشدار کوئرا:**
* کال‌اوت بنفش (`<details class="violet">`): مفهوم حریم خصوصی و فیلتر خودکار دیتای حساس (Data Scrubbing)؛ سنتری به صورت پیش‌فرض رمزها و اطلاعات کارت بانکی را از لاگ‌ها ماسک می‌کند.
* کال‌اوت سبز (`<details class="green">`): سهمیه رایگان سخاوتمندانه ماهیانه ۵۰۰۰ خطا در پلن توسعه‌دهنده سنتری.
* کال‌اوت قرمز (`<details class="red">`): پاک‌سازی کدهای `console.log("Password:", pass)` قبل از انتشار؛ هرگز اطلاعات محرمانه را در کنسول چاپ نکنید.
### آنچه نباید وارد آن شویم (Out-of-Scope):
- مباحث Enterprise پرفورمنس ردیابی توزیع‌شده چندسروری (Distributed Tracing در مقیاس‌های میلیونی).
- نوشتن افزونه‌های اختصاصی C++ برای هسته سنتری.
---
## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یک‌خطی ساده |
| :--- | :--- | :--- |
| Error Tracking | ردگیری و تله‌گذاری خطا | پایش، جمع‌آوری و گروه‌بندی خودکار خطاهای کلاینت و سرور به همراه زمینه وقوع حادثه |
| Sentry | پلتفرم سنتری | مطرح‌ترین سرویس مانیتورینگ خطا و مشاهده‌پذیری پایداری کد در برنامه‌های وب و موبایل |
| Breadcrumbs | ردپاها / خرده‌نان‌های اقدام | سلسله‌مراتب گام‌به‌گام اقداماتی که کاربر پیش از رخ دادن باگ در صفحه انجام داده است |
| Unhandled Exception | استثنای مدیریت‌نشده | خطایی غیرمنتظره در کد که در بلوک try/catch مهار نشده و موجب اختلال در اجرای برنامه می‌شود |
| Data Scrubbing | پاک‌سازی خودکار دیتای حساس | فیلتر کردن رمزهای عبور، شماره کارت و اطلاعات هویتی از گزارش‌های خطا برای حفظ حریم خصوصی |
| Structured Logging | لاگ‌نویسی ساختاریافته | ثبت پیام‌های سیستمی با فرمت منظم (مانند JSON) به همراه زمان دقیق و سطح اهمیت پیام |
---
## ۴. جایگاه‌های تصاویر و نمودارها (Visual & Diagram Placeholders)
> **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تک‌خانه‌ای وسط‌چین درج شوند:
1. **تصویر کاور درس:** `images/cover.png`
* **موضوع:** اسکنر تله‌گذار باگ با لوگوی سنتری که خطاهای مخفی کدهای زنده وب را به دام انداخته و در یک داشبورد شفاف نمایش می‌دهد.
2. **داشبورد بررسی لاگ‌های زنده در کنسول لیارا:** `images/liara-app-runtime-logs.png`
* **موضوع:** اسکرین‌شات از تب «لاگ‌ها» در پنل لیارا با پیام‌های رنگی درخواست‌های HTTP و خطاهای سرور.
3. **کالبدشکافی یک گزارش خطا در پنل Sentry:** `images/sentry-issue-details-anatomy.png`
* **موضوع:** اسکرین‌شات از صفحه یک خطا در سنتری با بخش‌های هایلایت‌شده: استک‌تریس، نام فایل، مشخصات سیستم کاربر و بخش Breadcrumbs.
4. **چرخه حل باگ پروداکشن با هوش مصنوعی:** `images/sentry-ai-debugging-loop.png`
* **موضوع:** اینفوگرافیک: وقوع خطا در مرورگر کاربر $\rightarrow$ ثبت در سنتری $\rightarrow$ کپی خلاصه گزارش به ایجنت $\rightarrow$ تولید پچ اصلاحی $\rightarrow$ استقرار سریع.
---
## ۵. بخش‌بندی و ساختار محتوایی پیشنهادی درس‌نامه (`README.md`)
1. **تیتر اصلی:** `# ثبت لاگ‌ها و ردگیری هوشمند خطاهای پروداکشن با Sentry و کنسول‌های ابری`
2. **مقدمه:** وقتی کاربری در آن سوی دنیا با یک باگ مواجه می‌شود و بدون یک کلمه اعتراض سایت را می‌بندد، چگونه باگ او را در کسری از ثانیه روی مانیتور خود ببینیم؟
3. **جدول کاور درس**
4. **استعاره جعبه سیاه هواپیما:**
* ثبت تک‌تک حرکات خلبان و شرایط جوی تا در صورت بروز هر سانحه، علت ریشه‌ای بلافاصله مشخص شود.
5. **پایش لایه اول: خواندن لاگ‌های سرور در لیارا و Vercel:**
* چطور لاگ‌های زنده ترمینال سرور را روی مرورگر رصد کنیم و سطوح لاگ‌ها را تفکیک نماییم.
6. **پایش لایه دوم: نصب و راه‌اندازی شکاری باگ‌های سنتری (Sentry):**
* ساخت پروژه در sentry.io و اجرای ویزارد خودکار Next.js در ترمینال.
7. **کالبدشکافی گزارش باگ در سنتری: قدرت شگفت‌انگیز Breadcrumbs:**
* دیدن گام‌های کاربر ثانیه‌هایی قبل از وقوع خطا (کلیک‌ها، ورودی‌ها، روت‌ها).
8. **به‌دام‌اندازی خطاهای پنهان در توابع حساس پورتفولیو:**
* ایمن‌سازی روت‌های پرداخت زرین‌پال، ارسال پیامک و چت‌بات با `Sentry.captureException`.
9. **جعبه پرامپت طلایی: تحلیل گزارش خطای سنتری توسط ایجنت:**
* پرامپت دقیق:
> «من این گزارش خطا را از سنتری پروداکشن دریافت کرده‌ام: [کپی استک‌تریس و بردکرامب‌ها]. لطفاً ۱) علت بروز خطا را توضیح بده، ۲) مشخص کن این باگ تحت چه سناریوی نادری رخ داده است، و ۳) کد اصلاحی تاب‌آور (Defensive) به همراه تست اعتبارسنجی ارائه بده.»
10. **باکس نکته Quera (`<details class="violet">`):** ماجرای امنیت و حریم خصوصی داده‌ها در سنتری؛ خیالتان راحت باشد، توکن‌ها و اطلاعات کارت به صورت خودکار ستاره‌دار (`[Filtered]`) می‌شوند.
11. **باکس هشدار Quera (`<details class="red">`):** لاگ‌های اضافه و حجیم در پروداکشن ننویسید؛ چاپ بیهوده هزاران خط در هر ثانیه به هدررفت منابع و هزینه سرور می‌انجامد.
12. **باکس رضایت‌بخش Quera (`<details class="green">`):** ایجاد یک خطای عمدی آزمایشی در سایت و مشاهده ظاهر شدن آن در داشبورد سنتری در کمتر از ۳ ثانیه.
13. **جمع‌بندی درس‌نامه:** تجهیز کامل سیستم به جعبه سیاه عیب‌یابی؛ ورود به مبحث به‌روزرسانی‌های امنیتی و ارتقای دوره‌ای پکیج‌ها در درس بعدی.
---
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
- [ ] نقطه کور پروداکشن و ضرورت ثبت لاگ‌ها و ردگیری خطاها به روشنی تبیین شود.
- [ ] تفاوت میان لاگ‌های سرور (لیارا/ورسل) با سرویس‌های Error Tracking (سنتری) تشریح گردد.
- [ ] راه‌اندازی گام‌به‌گام سنتری در Next.js به همراه مفاهیم Breadcrumbs آموزش داده شود.
- [ ] پرامپت دیباگ خطای پروداکشن با استفاده از لاگ‌های سنتری ارائه شود.