بازگشت به همه مطالب
DIDBAN / BLOG

پایش خطا و وضعیت سرورهای ASP.NET Core با دیدبان

راهنمای پایش سرورهای ASP.NET Core با دیدبان؛ مشاهده CPU، RAM و Load هنگام خطاهای شبکه و سرور، مدیریت چند سرور و مرزبندی دقیق قابلیت‌ها.

۲۰ شهریور ۱۴۰۵ · جواد کاظم زاده

دیدبان در ASP.NET Core چه نقشی دارد؟

برای یک API مبتنی بر ASP.NET Core، مشکل ممکن است از exception برنامه، timeout دیتابیس، سرویس خارجی یا فشار منابع سرور شروع شود. دیدبان در وضعیت فعلی برای این سناریو دو بخش مرتبط ارائه می‌کند:

  • Server Agent برای پایش وضعیت ماشین و ثبت snapshot هنگام خطاهای شبکه و سرور

  • مانیتورینگ سمت JavaScript برای frontend متصل به API، شامل request ناموفق، breadcrumb و release

نکته مهم این است که دیدبان فعلاً جایگزین کامل یک APM بومی .NET با instrumentation همه متدها و trace توزیع‌شده نیست. این راهنما روی قابلیتی تمرکز دارد که امروز قابل استفاده است: مرتبط‌کردن خطای شبکه یا سرور با وضعیت همان لحظه زیرساخت.

Server Agent را به سازمان متصل کنید

در صفحه نبض سرورها، یک سرور برای سازمان بسازید و فرمان نصب اختصاصی را روی ماشین اجرا کنید. توکن Agent را مانند یک secret نگه دارید و آن را در لاگ یا مستند عمومی قرار ندهید.

هر سازمان می‌تواند متناسب با پلن خود چند سرور داشته باشد. برای محیط‌های متداول نام روشن انتخاب کنید:

```text production-web-1 production-api-1 production-worker-1 staging-api-1 ```

این نام‌گذاری هنگام جابه‌جایی بین سرورها و بررسی incident جلوی اشتباه را می‌گیرد.

Snapshot خطا چگونه حجم را کنترل می‌کند؟

ذخیره دائمی همه sampleهای CPU و RAM برای هر سرور می‌تواند حجم زیادی ایجاد کند. دیدبان به‌جای نگهداری تاریخچه پرحجم، یک پنجره کوتاه از متریک‌ها را در حافظه Agent نگه می‌دارد و فقط وقتی رخداد در دسته network یا server باشد، snapshot فشرده همان بازه را ذخیره می‌کند.

در نمودار جزئیات، خط قرمز زمان وقوع خطا را مشخص می‌کند. بنابراین می‌توانید ببینید آیا درست پیش از timeout، مصرف RAM، CPU یا Load افزایش داشته است یا نه.

نمونه تحلیل یک Timeout

فرض کنید endpoint پرداخت پاسخ 504 داده است. ترتیب بررسی می‌تواند این باشد:

1. زمان دقیق خطا را روی نمودار پیدا کنید. 2. CPU، RAM و Load را در sampleهای قبل و بعد مقایسه کنید. 3. تعداد رخدادهای مشابه و سرور درگیر را بررسی کنید. 4. log برنامه را با همان timestamp و request ID جست‌وجو کنید. 5. وضعیت connection pool، دیتابیس و سرویس پرداخت را بررسی کنید.

بالابودن CPU هم‌زمان با خطا دلیل قطعی نیست؛ فقط یک شاهد زمانی است. برای نتیجه باید آن را با log و رفتار dependencyها ترکیب کرد.

خطاهای ASP.NET Core را ساختاریافته ثبت کنید

در برنامه، logging ساختاریافته را فعال و برای هر request یک correlation ID تولید کنید. در خطاها حداقل این اطلاعات مفید است:

  • نام سرویس و environment

  • release یا Git SHA

  • route و status code

  • correlation ID

  • نوع exception بدون داده حساس

  • مدت request یا dependency

رمز، bearer token، cookie، connection string و اطلاعات شخصی را از log حذف کنید.

ارتباط frontend با backend

اگر ASP.NET Core API به یک پنل React یا Next.js سرویس می‌دهد، SDK JavaScript دیدبان می‌تواند درخواست ناموفق سمت کاربر را ثبت کند. زمان، route و status آن رخداد را با snapshot سرور و correlation ID کنار هم قرار دهید. این روش مسیر کاربر تا API و وضعیت ماشین را به هم نزدیک می‌کند.

چه زمانی ابزار مکمل لازم است؟

اگر به trace توزیع‌شده بین چند microservice، profiling متدهای .NET، query tracing دیتابیس یا instrumentation عمیق runtime نیاز دارید، در کنار دیدبان از OpenTelemetry یا APM تخصصی .NET استفاده کنید. دیدبان در این معماری برای مشاهده خطاهای محصول و نبض سرورها نقش مکمل دارد.

جمع‌بندی

برای ASP.NET Core، ارزش فعلی دیدبان در پاسخ سریع به یک سؤال عملی است: «وقتی خطای شبکه یا سرور رخ داد، وضعیت همان لحظه ماشین چه بود؟» snapshot کم‌حجم، خط زمان خطا و مدیریت چند سرور کمک می‌کند بررسی incident از حدس به شواهد نزدیک شود، بدون اینکه دیتابیس با تاریخچه دائمی متریک‌ها پر شود.

پایش سرور ASP.NET Core در ایران با دیدبان