فصل پنجم: مشاهده‌پذیری و مقاومت

متریک و مانیتورینگ

دانستن وضعیت سیستم پیش از شکایت کاربر

لاگ برای بررسی جزئیات یک رویداد خاص مفید است، اما برای دیدن سلامت کلی سیستم در طول زمان به متریک (Metrics) نیاز داریم: اعدادی که در بازه‌های زمانی منظم جمع‌آوری می‌شوند، مثل تعداد درخواست در ثانیه، درصد خطا، زمان پاسخ‌دهی و میزان مصرف حافظه.

Prometheus محبوب‌ترین ابزار جمع‌آوری متریک در دنیای میکروسرویس است؛ هر سرویس یک endpoint به نام /metrics در معرض دید قرار می‌دهد و Prometheus به‌طور دوره‌ای آن را می‌خواند (scrape می‌کند):

from prometheus_client import Counter, Histogram

REQUEST_COUNT = Counter("http_requests_total", "Total HTTP requests", ["method", "endpoint"])
REQUEST_LATENCY = Histogram("http_request_duration_seconds", "Request latency")

@REQUEST_LATENCY.time()
def handle_request():
    REQUEST_COUNT.labels(method="GET", endpoint="/orders").inc()
    ...

داشبورد و هشدار

داده‌های Prometheus معمولاً با Grafana به‌صورت داشبورد بصری نمایش داده می‌شوند تا تیم بتواند در یک نگاه، سلامت کل سیستم را ببیند. یکی از مهم‌ترین کاربردهای متریک، تنظیم هشدار (Alerting) است؛ مثلاً اگر درصد خطای یک سرویس از ۵ درصد بیشتر شود، سیستم به‌طور خودکار به تیم مسئول اطلاع می‌دهد، پیش از اینکه کاربران واقعی متوجه مشکل شوند و شکایت کنند. این رویکرد پیشگیرانه یکی از تفاوت‌های اصلی بین یک تیم دواپس بالغ و یک تیم واکنشی است.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.