canina/docs/05-devops-and-monitoring.md

3.5 KiB
Raw Permalink Blame History

دواپس و مانیتورینگ سیستم (DevOps & Monitoring)

این مستند توضیحاتی در مورد پایش مستمر سامانه و اتوماسیون (CI/CD) پس از انتشار ارائه می‌دهد. هدف این است که اطمینان حاصل شود سرورها همیشه با بالاترین بهره‌وری در حال اجرا هستند و کدهای جدید با کمترین خطا دیپلوی می‌شوند.

۱. فرآیند استقرار خودکار (CI/CD)

در تیم‌های بزرگ برای جلوگیری از بروز خطای انسانی در سرور، از فرآیند استقرار خودکار استفاده می‌شود.

  • کدهای جدید ابتدا در برنچ‌های مختلف توسعه داده شده و پس از تست (توسط GitHub Actions یا ابزارهای مشابه) به شاخه main یا production مرج می‌شوند.
  • یک اکشن در گیت‌هاب پس از Push شدن کدهای جدید به صورت خودکار تغییرات را بیلد کرده و بر روی سرور کپی می‌کند.
  • برای انجام دستی این کار یک اسکریپت در سرور وجود دارد که آخرین کدها را git pull کرده، دستورات نصب وابستگی و npm run build را اجرا و در نهایت سرویس‌های PM2 را ری‌استارت می‌کند.

۲. مانیتورینگ عملکرد (PM2 Dashboard)

با توجه به اینکه سامانه روی پلتفرم Node.js و از طریق مدیریت فرآیند pm2 اجرا می‌شود، بهترین راه برای نظارت محلی (Local Server Monitoring) استفاده از دستورات زیر است:

  • مشاهده داشبورد منابع:

    pm2 monit
    

    این دستور در ترمینال یک محیط گرافیکی را نشان می‌دهد که میزان مصرف CPU و RAM برای سرویس‌های فرانت‌اند و بک‌اند را نمایش می‌دهد.

  • مشاهده لیست وضعیت برنامه‌ها:

    pm2 list
    

    نمایش Uptime (میزان زمان روشن ماندن) و وضعیت اجرا. اگر سرویسی Crash کرده باشد، در این لیست مشخص خواهد بود.

۳. بررسی لاگ‌های سیستم (Logs Management)

سیستم لاگین بک‌اند (NestJS) ارورهای پایگاه داده و ریکوئست‌های ناموفق را ثبت می‌کند. خطاهای رندرینگ فرانت‌اند نیز در لاگ‌های اجرای اپلیکیشن قابل ردیابی است.

  • برای مشاهده لاگ‌های زنده سیستم از این دستور استفاده کنید:
    pm2 logs
    
  • برای فیلتر کردن لاگ‌های مشخص، مثلاً فقط بک‌اند:
    pm2 logs canino-api --lines 100
    

۴. مانیتورینگ دیتابیس (PostgreSQL)

از آنجا که پایگاه داده یکی از گلوگاه‌های اصلی (Bottlenecks) سرعت در سیستم‌های فروشگاهی است، می‌توانید در صورت بروز کندی سیستم از ابزار pg_stat_statements برای ردیابی کوئری‌های کُند (Slow Queries) در دیتابیس استفاده کنید. همچنین پیشنهاد می‌شود از دیتابیس به صورت دوره‌ای بک‌آپ گرفته و لاگ‌های بک‌آپ را در سرور مانیتورینگ نظارت کنید.