مفاهیم پایه
سازمان
مرز صورتحساب و عضویت. هر کاربر هنگام ثبتنام یک سازمان شخصی میگیرد و میتواند سازمانهای دیگری هم بسازد. هر سازمان مالک اینهاست:
- پروژهها
- اعضا و نقشهایشان
- یک کیف پول (تومان) و مصرف مبتنی بر استفاده
- یکپارچهسازیها، پیکربندیهای هوش مصنوعی، کانالهای اعلان و قواعد هشدار
- داشبوردها
- سیاست نگهداری داده
پروژه
یک برنامه یا سرویس. هر پروژه مالک رویدادها، خطاها، لاگها، بازپخشها، مانیتورها، متریکها،
پروفایلها و بازخوردهای خودش است. پروژه یک پلتفرم دارد (برای آیکون و نمونهکد) و یک نرخ
نمونهبرداری: کسری از رویدادهای رسیده که ذخیره میشود (1.0 یعنی همهچیز نگه داشته میشود).
کلید DSN
اعتبارنامهای که SDK با آن داده میفرستد:
https://<public_key>@<host>/<project_id>
هر پروژه میتواند چند کلید داشته باشد (با برچسب، کلید عمومی و وضعیت فعال/غیرفعال) تا بتوانید
بدون قطعی کلید را بچرخانید. همین کلید عمومی است که دریافت داده را احراز میکند — از طریق هدر
X-Sentry-Auth، پارامتر ?sentry_key= یا فیلد dsn در سربرگ پاکت (envelope).
رویداد
هر چیزی که رخ داده است: یک استثنا، یک پیام، یک تراکنش، یک رکورد لاگ، یک قطعهٔ بازپخش، یک
چکاین کران، یک سطل متریک یا یک بازخورد. SDKها رویدادها را در قالب پاکت به
/api/<project_id>/envelope/ میفرستند (و رویدادهای خطای ساده را به نقطهٔ قدیمیتر /store/).
خطا (Issue) و گروهبندی
روی هر رویداد یک اثر انگشت حساب میشود — بر پایهٔ نوع استثنا و ردپای فراخوانی، به سبک Sentry — و رویدادهایی با اثر انگشت یکسان در یک خطا جمع میشوند. هر خطا اینها را دنبال میکند:
- تعداد رخداد، کاربران یکتا، اولین و آخرین مشاهده
- وضعیت: باز، حلشده، نادیدهگرفته، بایگانیشده
- واگذاری و نشانگذاری شخصی
- روند ۲۴ ساعته و ۳۰ روزه
اگر برای خطایی که بستهاید رویداد تازهای برسد، خطا بازگشت میکند، دوباره باز میشود و
رویداد هشدار issue.regressed را فعال میکند.
ترِیس و اسپن
ترِیس همهٔ کارهایی را که در یک عملیات منطقی رخ داده — حتی در چند سرویس — به هم گره میزند.
تراکنش اسپن ریشهٔ کار یک سرویس است و اسپنها واحدهای تودرتوی کار درون آن (یک فراخوانی
HTTP، یک کوئری SQL، یک تماس با مدل زبانی). لاگها، پروفایلها، بازپخشها و چکاینها هم
trace_id را با خود دارند؛ به همین دلیل میشود از یک خط لاگ به تراکنشی که آن را ساخته پرید.
محیط و نسخه
- محیط (
production،staging، …) اجرای یکسان کد را در جاهای مختلف از هم جدا میکند. مانیتورهای کران وضعیت را به تفکیک محیط نگه میدارند و خطاها، لاگها و بازخوردها را میشود بر اساس آن فیلتر کرد. - نسخه (
myapp@1.4.2) هر رویداد را به نسخهای که آن را ساخته برچسب میزند و کلیدی است که سورسمپها زیر آن بارگذاری میشوند.
هر دو را در SDK تنظیم کنید:
sentry_sdk.init(dsn="…", environment="production", release="myapp@1.4.2")
نمونهبرداری
دو اهرم مستقل:
- سمت SDK —
traces_sample_rate،profiles_sample_rateوreplaysSessionSampleRateتعیین میکنند کلاینت چه چیزی بفرستد. - سمت سرور — نرخ نمونهبرداری پروژه تعیین میکند ارورا از آنچه میرسد چه کسری را ذخیره کند.
هر دو هزینه را کم میکنند؛ نمونهبرداری سمت SDK بار روی خود برنامهٔ شما را هم کم میکند.
نگهداری داده
هر سازمان بازهٔ نگهداری خودش را تعیین میکند. یک کار شبانه رویدادها، لاگها و بازپخشهای قدیمیتر از آن بازه (و خطاهای بیرویداد باقیمانده) را حذف میکند. نگاه کنید به نگهداری داده.
نقشها و توانمندیها
نقشها عبارتاند از owner، admin، member، billing و viewer که در سطح سازمان و در
صورت نیاز در سطح پروژه اعمال میشوند و از طریق یک ماتریس توانمندی (org:manage،
project:manage، issue:write، ai:trigger، …) بررسی میشوند. نگاه کنید به
نقشها و دسترسیها.