بازپخش نشست
بازپخش نشست ثبت میکند در مرورگر چه گذشته است — تغییرات DOM، کلیکها، ناوبری و کنسول — و آن را کنار خطایی که رخ داده بازپخش میکند.
راهاندازی
import * as Sentry from "@sentry/browser";
Sentry.init({
dsn: "https://<public_key>@<your-errora-host>/<project_id>",
integrations: [
Sentry.replayIntegration({
maskAllText: true, // پیشفرضهای حریم خصوصی: روشن
blockAllMedia: true,
maskAllInputs: true,
}),
],
replaysSessionSampleRate: 0.1, // ۱۰٪ همهٔ نشستها
replaysOnErrorSampleRate: 1.0, // ۱۰۰٪ نشستهایی که به خطا خوردهاند
});
دو نرخ نمونهبرداری، آگاهانه جدا از هم:
replaysSessionSampleRate— مرور عادی. پایین نگهش دارید؛ هر نشست ضبطشده هزینه دارد.replaysOnErrorSampleRate— نشستهایی که خطا داشتهاند. این را روی1.0بگذارید؛ همین ضبط است که واقعاً میخواهید ببینید.
حریم خصوصی
بازپخش صفحهٔ کاربران شما را ضبط میکند، پس بهطور پیشفرض با آن مثل دادهٔ حساس رفتار کنید:
| کنترل | اثر |
|---|---|
maskAllText: true | متنها با بلوک جایگزین میشوند |
maskAllInputs: true | مقدار ورودیها هرگز از مرورگر خارج نمیشود |
blockAllMedia: true | تصویر و ویدئو ضبط نمیشود |
class="sentry-mask" | ماسککردن یک عنصر مشخص |
class="sentry-block" | ضبطنکردن کامل آن عنصر |
class="sentry-ignore" | ضبط عنصر، بدون ثبت تعامل با آن |
ماسککردن در مرورگر و پیش از ارسال هر چیزی انجام میشود. ماسک را فقط برای عنصرهایی خاموش کنید که آگاهانه بررسیشان کردهاید.
در پنل
صفحهٔ بازپخشها نشستهای ضبطشده را با کاربر، مدت، تعداد خطا، مرورگر و سیستمعامل فهرست میکند. با باز کردن یکی:
- بازپخش ضبط rrweb همراه با خط زمان
- صفحههای بازدیدشده در طول نشست
- خطاهای رخداده در آن نشست، با پیوند به خطای مربوطه
- ترِیسهای پیوسته، وقتی ردیابی روشن باشد
از صفحهٔ خطا، پنل بازپخش مستقیم به لحظهٔ رخداد خطا میپرد. از
بازخورد کاربر هم replay_id همین کار را میکند.
API
GET /api/v1/projects/{project_id}/replays?stats_period=24h&limit=&offset=
GET /api/v1/projects/{project_id}/replays/{replay_id}
GET /api/v1/projects/{project_id}/replays/{replay_id}/events
هزینه
بازپخشها زیر سرویس بازپخش نشست و به ازای هر نشست ضبطشده محاسبه میشوند — گرانترین واحد فهرست قیمت. اهرم کنترل هزینهتان نمونهبرداری است؛ نگاه کنید به کیف پول.
عیبیابی
| نشانه | علت / راهحل |
|---|---|
| هیچ بازپخشی ثبت نمیشود | replayIntegration() اضافه نشده یا هر دو نرخ نمونهبرداری 0 است |
| بازپخش هست ولی به خطا وصل نیست | خطا در نشست یا تب دیگری ثبت شده، یا ضبط بعد از خطا شروع شده |
| بازپخش سفید یا خراب است | شیوهنامههای cross-origin قابل درج نیستند — CSS را از دامنهٔ خودتان سرو کنید یا CORS را باز کنید |
| حجم ضبط خیلی زیاد است | نشستهای طولانی روی DOM سنگین؛ replaysSessionSampleRate را کم کنید و ویجتهای شلوغ را با sentry-block مسدود کنید |
| دادهٔ حساس دیده میشود | جایی ماسک خاموش شده — گزینههای mask* و کلاسهای هر عنصر را بازبینی کنید |