مشاهدهپذیری پروداکشن: لاگ، متریک و تریس که واقعاً دیباگ میکنند
از سه ستون observability تا correlation id، سطح لاگ، RED/USE و آلارمهایی که تیم را بیحس نمیکنند.
علی مرتضوی
بنیانگذار پارادایس کد
بدون مشاهده، پروداکشن فقط امید است
وقتی کاربر خطا میبیند، سؤال اول «کجا» است نه «احتمالاً چه». لاگ ساختیافته، متریک طلایی، و تریس توزیعشده سهپایهٔ پاسخاند. یکی بهتنهایی کافی نیست: لاگ بدون متریک سیل است، متریک بدون تریس کور است، تریس بدون context کسبوکار تزئینی است.
از روز اول `requestId`/`correlationId` را از لبه تا صف و دیتابیس حمل کنید.
لاگ ساختیافته با انضباط میدانها
JSON با فیلدهای ثابت: سطح، سرویس، محیط، user/tenant (در صورت نیاز)، کد خطا، و پیام کوتاه. متن آزاد طولانی را به همان فیلدها ترجیح ندهید. PII و رمز را redact کنید—لاگ هم سطح حمله است.
سطحها را جدی بگیرید: debug در پروداکشن پیشفرض خاموش، info برای رویدادهای معنادار، warn برای recoverable، error برای نیاز به اقدام. اگر همه چیز error است، هیچ چیز error نیست.
متریکهای طلایی به سبک RED و USE
برای سرویس درخواستمحور: Rate، Errors، Duration (RED). برای منابع: Utilization، Saturation، Errors (USE). p95/p99 را ببینید نه فقط میانگین. متریک کسبوکار—ثبتنام موفق، پرداخت موفق—را کنار متریک سیستم بگذارید تا بفهمید outage واقعی کجاست.
کاردینالیتی برچسب را کنترل کنید؛ userId روی متریک، سری زمانی را منفجر میکند.
تریس توزیعشده برای مسیرهای بحرانی
نمونهٔ تریس را روی مسیرهای پول و مسیرهای با خطا متمرکز کنید. spanها باید نام عملیات دامنه داشته باشند نه فقط middleware. وقتی latency بالا میرود، تریس نشان میدهد DB است، وابستگی بیرونی، یا صف.
نمونهٔ بیش از حد گران است؛ نمونهٔ هدفمند بهتر از ۱۰۰٪ کور است.
هشدار اقدامپذیر نه نویز
هشدار باید مالک، معنا، و اقدام اولیه داشته باشد. روی علائم کاربر محور هشدار دهید (خطای پرداخت، افزایش latency API عمومی) نه روی هر CPU spike کوتاه. خستگی هشدار خطرناکتر از کمهشداری کنترلشده است.
برای هر سرویس داشبورد طلایی و runbook یکصفحهای بسازید: چگونه تشخیص دهیم، چگونه کاهش دهیم، چگونه escalate کنیم.
فرهنگ بعد از حادثه
پس از حادثه، پرسش «چه سیگنالی کم بود؟» را به بکلاگ مشاهدهپذیری وصل کنید. ابزار جدید بدون سؤال، قفسه است. مشاهدهپذیری وقتی بالغ میشود که هر فیچر حساس با متریک/لاگ خودش ship شود.
این همان تفاوت سیستم قابل نگهداری و سیستم ترسناک در نیمهشب است.
سؤالات متداول
OpenTelemetry لازم است؟
یک استاندارد باز برای تریس/متریک بسیار کمک میکند، مخصوصاً اگر چند سرویس و vendor دارید. مهمتر از برند ابزار، قرارداد میدانهاست.
چقدر لاگ نگه داریم؟
بستگی به compliance دارد؛ عملیاتی اغلب ۷–۳۰ روز داغ و آرشیو سردتر. هزینه را با نرخ و نمونهگیری کنترل کنید.
آیا لاگ فرانت هم لازم است؟
بله برای خطاهای کلاینت و vitals، با نمونهگیری و بدون PII. آن را به correlation سمت سرور وصل کنید وقتی ممکن است.
دانش و مقالات
نیاز به اجرای همین مفاهیم در محصولتان دارید؟
پارادایس کد از مشاوره تا پیادهسازی کامل کنار شماست.