SLI مخفف Service Level Indicator و به معنی شاخص سطح خدمت است. SLI یک معیار عددی تعریفشده است که کیفیت واقعی سرویسی مانند API فروشگاه را از دید کاربر اندازه میگیرد. درصد درخواست موفق، تاخیر پاسخ و نرخ عملیات صحیح نمونههای کاربردیاند.
چرا هر متریکی SLI نیست؟
CPU Usage و مصرف رم برای مانیتورینگ مهماند، اما الزاماً کیفیت تجربه کاربر را بیان نمیکنند. برای API پرداخت، نسبت پرداختهای موفق به تلاشهای معتبر پرداخت میتواند SLI نزدیکتری به تجربه کاربر باشد. باید از قبل مشخص کنیم چه درخواستهایی در صورت و مخرج محاسبه قرار میگیرند.
محاسبه نرخ موفقیت
SLI availability = successful_requests / eligible_requests * 100
Example: 99,850 successful / 100,000 eligible = 99.85%
نمونه متریکهای قابل استفاده برای SLI
| شاخص | تعریف دقیق موردنیاز | نکته |
|---|---|---|
| Availability | نسبت درخواستهای پاسخدادهشده با نتیجه قابل قبول | ۴xx کاربر را بیدلیل خطای سرور حساب نکنیم |
| Latency | درصد درخواستهایی که سریعتر از حد مشخص تکمیل شدهاند | P95 / P99 به تنهایی نیاز به تعریف دقیق دارد |
| Correctness | نسبت پاسخهایی که نتیجه درست دارند | در برخی سرویسها پاسخ ۲۰۰ هم میتواند نتیجه اشتباه باشد |
| Freshness | سن داده تا لحظه نمایش | برای داشبوردهای داده مهم است |
مثال PromQL برای اندازهگیری
sum(rate(http_requests_total{status=~"2..|3.."}[5m]))
/
sum(rate(http_requests_total[5m]))
این کوئری مثال ساده است و صرفاً در صورتی معتبر است که سرویس شما از متریک http_requests_total با لیبل status استفاده کند. تعریف واقعی موفقیت ممکن است متناسب با API متفاوت باشد.
تفاوت با SLO و SLA
SLI چیزی است که اندازه میگیریم. SLO هدف عددی برای همان اندازهگیری است. SLA تعهد قراردادی و پیامد نقض تعهد را مشخص میکند.
اصطلاحات فنی: اسالاو، اسالای، قابلیت مشاهدهپذیری، پرومتئوس، ارور باجت.
منبع آموزشی: کتاب SRE گوگل درباره SLI و SLO.