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

کارایی و ردیابی

ردیابی به این پرسش پاسخ می‌دهد که «چرا آن درخواست کند بود؟» — کدام فراخوانی دیتابیس، کدام پرش HTTP، کدام تماس با مدل زبانی زمان را خورده است.

راه‌اندازی​

نمونه‌برداری ترِیس را در SDK روشن کنید. بقیهٔ چیزها (میان‌افزار فریم‌ورک، درایور دیتابیس، کلاینت HTTP) را SDKهای رسمی خودکار ابزارگذاری می‌کنند.

sentry_sdk.init(
dsn="…",
traces_sample_rate=0.2, # ۲۰٪ درخواست‌ها
environment="production",
release="myapp@1.4.2",
)
Sentry.init({
dsn: "…",
integrations: [Sentry.browserTracingIntegration()],
tracesSampleRate: 0.2,
tracePropagationTargets: ["localhost", /^https:\/\/api\.example\.com/],
});

راهبرد نمونه‌برداری​

  • توسعه: 1.0.
  • تولید: از 0.1 تا 0.2 شروع کنید. ترِیس به ازای هر اسپن محاسبه می‌شود (سرویس ردیابی) و یک سرویس پرترافیک اسپن زیادی می‌سازد.
  • روی یک مسیر خاص دقت بیشتری می‌خواهید؟ تابع traces_sampler بنویسید که برای مسیرهای مهم 1.0 و برای health-checkها نرخ پایین برگرداند.

ردیابی توزیع‌شده​

برای دنبال‌کردن یک درخواست در چند سرویس، SDK هدرهای sentry-trace و baggage را منتشر می‌کند. مقدار trace_propagation_targets (سمت سرور) یا tracePropagationTargets (مرورگر) را طوری بگذارید که میزبان‌های API خودتان را شامل شود و مطمئن شوید پراکسی معکوس این هدرها را حذف نمی‌کند.

اسپن دلخواه​

with sentry_sdk.start_transaction(op="task", name="nightly-settlement") as tx:
with tx.start_child(op="db.query", description="SELECT … FROM ledger"):
rows = fetch_rows()
with tx.start_child(op="http.client", description="POST /gateway/verify"):
verify(rows)

در پنل​

صفحهٔ کارایی تراکنش‌های پروژهٔ انتخاب‌شده را با این‌ها نشان می‌دهد:

  • توان عملیاتی (تعداد در بازه) و تأخیر (میانگین، p50 تا p99)
  • نرخ خطا
  • فیلتر بر اساس محیط، نسخه، نوع عملیات، بازهٔ زمانی و کاربر — با انتخاب یک کاربر، مسیرها و جاب‌ها به آن‌هایی محدود می‌شوند که او اجرا کرده است (همان فیلتر خطاها و لاگ‌ها؛ صفحهٔ کاربران میان‌بر مستقیم دارد)

با باز کردن یک تراکنش، آبشار ترِیس را می‌بینید: هر اسپن با مدت، تودرتویی و برچسب‌هایش — تا فراخوانی‌های پشت‌سرهم دیتابیس یا آن پرش کند به سرویس بیرونی مستقیم جلوی چشمتان باشد.

اسپن‌هایی که برچسب gen_ai.* یا mcp.* دارند، علاوه بر این به رصد هوش مصنوعی هم برده می‌شوند.

داشبورد​

مجموعه‌دادهٔ transactions در داشبوردها در دسترس است، با count()، avg(duration)، sum(duration)، failure_rate() و صدک‌های p50 تا p99، با تفکیک بر اساس تراکنش، عملیات، وضعیت، محیط، نسخه یا پلتفرم.

عیب‌یابی​

نشانهعلت / راه‌حل
هیچ تراکنشی نمی‌آیدtraces_sample_rate تنظیم نشده یا 0 است
ترِیس در مرز سرویس قطع می‌شودمقصدهای انتشار شامل سرویس مقصد نیست، یا پراکسی هدر sentry-trace/baggage را حذف می‌کند
تراکنش مرورگر هست ولی اسپن سمت سرور نیستSDK سمت سرور مقداردهی نشده یا نرخ نمونه‌برداری‌اش خیلی پایین‌تر است — فرزند فقط وقتی تصمیم نمونه‌برداری والد را به ارث می‌برد که هدرها برسند
هزینه بالا می‌رودtraces_sample_rate را کم کنید یا مسیرهای health-check را با traces_sampler روی 0 بگذارید