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

رصد خطا (Issues)

خطاها هستهٔ ارورا هستند: هر استثنایی که برنامه‌تان پرتاب می‌کند نرمال‌سازی، اثرانگشت‌گیری و گروه‌بندی می‌شود؛ پس هزار بار تکرار یک باگ، یک ردیف است که می‌شود رویش کاری کرد.

راه‌اندازی​

چیزی بیشتر از مقداردهی اولیهٔ SDK لازم نیست — استثناهای مدیریت‌نشده خودکار ثبت می‌شوند:

import sentry_sdk
sentry_sdk.init(dsn="https://<public_key>@<host>/<project_id>", environment="production")

برای پلتفرم خودتان راه‌اندازی SDK را ببینید. برای ثبت خطایی که خودتان گرفته‌اید:

try:
charge(order)
except PaymentError as exc:
sentry_sdk.capture_exception(exc)

گروه‌بندی چطور کار می‌کند​

  1. رویداد نرمال‌سازی می‌شود (فریم‌های ردپا، مقادیر استثنا، درخواست، زمینه‌ها و برچسب‌ها).
  2. اگر جاوااسکریپت مینیفای‌شده باشد و سورس‌مپ بارگذاری کرده باشید، اول نمادگشایی می‌شود تا گروه‌بندی روی فریم‌های اصلی و پایدار انجام شود.
  3. یک اثر انگشت از نوع استثنا به‌علاوهٔ فریم‌های معنادار ردپا محاسبه می‌شود.
  4. رویدادهای هم‌اثرانگشت در یک خطا جمع می‌شوند که تعداد رخداد، کاربران یکتا، اولین/آخرین مشاهده و وضعیت را نگه می‌دارد.

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

فهرست خطاها​

خطاها در نوار کناری، خطاهای باز پروژهٔ انتخاب‌شده را به ترتیب آخرین فعالیت نشان می‌دهد؛ هر کدام با یک نمودار کوچک ۲۴ ساعته.

  • جست‌وجو — متن آزاد روی عنوان و پیام، با تطبیق ابتدای واژه: time واژهٔ timeout را هم پیدا می‌کند.
  • فیلترها — وضعیت (باز، حل‌شده، نادیده‌گرفته)، محیط، سطح، بازهٔ زمانی و کاربر: با انتخاب یک کاربر، فهرست به خطاهایی که او دیده محدود می‌شود. همین فیلتر در درخواست‌ها، جاب‌ها و لاگ‌ها هم هست و صفحهٔ کاربران میان‌برهای مستقیم به همهٔ آن‌ها دارد.
  • مرتب‌سازی — آخرین رخداد، اولین رخداد، تعداد رخداد (همان شمارنده‌ای که در هر سطر می‌بینید) یا تعداد کاربران متأثر، تا پرتأثیرترین خطاها اول بیایند.
  • محدودشدن به محیط — فهرست فقط محیط انتخاب‌شده را نشان می‌دهد و صفحهٔ خطا بقیهٔ محیط‌های متأثر را فهرست می‌کند.
  • کارهای گروهی — چند سطر را انتخاب کنید و یک‌جا حل، نادیده، بازگشایی، بایگانی، تغییر اولویت یا واگذار کنید.
  • روندها — GET /projects/{id}/issues/trends?period=24h|30d پشت نمودارهای کوچک است.

صفحهٔ خطا​

  • ردپای فراخوانی با رنگ‌آمیزی نحوی، برجسته‌کردن فریم مظنون و نمایش کد اطراف برای فریم‌های نمادگشایی‌شده.
  • نمودار روند — ۲۴ ساعته و ۳۰ روزه.
  • بردکرامب‌ها — از جمله عبارت‌های SQL همراه با مقادیرشان.
  • درخواست — متد، آدرس، هدرها و ارجاع‌دهنده.
  • زمینه‌ها و برچسب‌ها — رانتایم، سیستم‌عامل، مرورگر، نسخه، محیط و برچسب‌های خودتان.
  • دادهٔ پیوسته — بازپخش نشست، بازخورد کاربر و ترِیسی که این رویداد به آن تعلق دارد.

کارها​

کاراثر
حل‌شدهخطا را می‌بندد. رویداد بعدی آن را بازگشتی می‌کند.
نادیده گرفتنهشدار را قطع می‌کند، بدون ادعای اینکه رفع شده است.
بایگانیاز فهرست پیش‌فرض پنهانش می‌کند.
نشان‌گذاریستارهٔ شخصی هر کاربر.
واگذاریسپردن به یکی از اعضای سازمان.
کپی پیوند اشتراکلینک مستقیم به همین خطا.
ساخت/پیوند تیکت گیت‌لبیکپارچه‌سازی‌ها را ببینید.
رفع خودکار با هوش مصنوعینوشتن وصله و باز کردن مرج‌ریکوئست — رفع خودکار.

کم‌کردن نویز​

  • before_send در SDK — حذف یا پاک‌سازی رویدادها در سمت کلاینت.
  • ignore_errors / denyUrls — رد کردن استثناهای بی‌ضرر شناخته‌شده و اسکریپت‌های شخص ثالث.
  • نرخ نمونه‌برداری پروژه — ذخیرهٔ فقط کسری از رویدادهای رسیده (در تنظیمات پروژه).
  • به‌جای حل‌کردن، خطای نویزی‌ای را که فعلاً نمی‌توانید حذف کنید نادیده بگیرید.
  • بستن خودکار خطاهای راکد — در تنظیمات پروژه، خطاها پس از ۷، ۱۴ یا ۳۰ روز بدون رویداد جدید خودکار حل‌شده می‌شوند. رویداد بعدی دوباره بازشان می‌کند، مثل حل‌کردن دستی.

API​

GET /api/v1/projects/{project_id}/issues?q=&status=&environment=&user=&ordering=-times_seen
GET /api/v1/projects/{project_id}/issues/{issue_id}
GET /api/v1/projects/{project_id}/issues/environments
GET /api/v1/projects/{project_id}/issues/users?q=&stats_period=7d
GET /api/v1/projects/{project_id}/issues/trends?period=24h|30d
POST /api/v1/projects/{project_id}/issues/bulk
GET /api/v1/projects/{project_id}/issues/{issue_id}/series
POST /api/v1/projects/{project_id}/issues/{issue_id}/resolve|ignore|archive|bookmark|assign
GET /api/v1/projects/{project_id}/events/{event_id}

مقدار user می‌تواند id:42، email:…، username:…، ip:… یا مقداری ساده باشد که با هرکدام مطابقت کند.

ایجنت‌های هوش مصنوعی همین کارها را از راه MCP با ابزارهای list_issues، get_issue و update_issue_status انجام می‌دهند و با list_performance_issues / get_performance_issue به ایشوهای کارایی می‌رسند.

عیب‌یابی​

نشانهعلت / راه‌حل
دو باگ در یک خطا جمع شده‌انداثر انگشت آن‌ها را یکی کرده — زمینهٔ متمایزکننده اضافه کنید یا در SDK fingerprint صریح بگذارید
یک باگ در چند خطا پخش شدهفریم‌ها در هر اجرا فرق می‌کنند (مسیرهای حاوی شناسه، باندل مینیفای) — سورس‌مپ بفرستید و مسیرها را یکدست کنید
فریم‌های جاوااسکریپت مینیفای‌اندبرای همان release دقیقاً سورس‌مپ بارگذاری کنید
رویداد پذیرفته می‌شود ولی ذخیره نمی‌شودنرخ نمونه‌برداری پروژه کمتر از 1.0 است یا کیف پول از خط اعتبار گذشته
اصلاً هیچ داده‌ای نمی‌رسدSDK به ارورا نمی‌رسد — پاسخ 202 را بررسی کنید و راه‌اندازی SDK را ببینید