کارایی و ردیابی
ردیابی به این پرسش پاسخ میدهد که «چرا آن درخواست کند بود؟» — کدام فراخوانی دیتابیس، کدام پرش 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 بگذارید |