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

42 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# دواپس و مانیتورینگ سیستم (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) استفاده از دستورات زیر است:
- **مشاهده داشبورد منابع:**
```bash
pm2 monit
```
این دستور در ترمینال یک محیط گرافیکی را نشان می‌دهد که میزان مصرف CPU و RAM برای سرویس‌های فرانت‌اند و بک‌اند را نمایش می‌دهد.
- **مشاهده لیست وضعیت برنامه‌ها:**
```bash
pm2 list
```
نمایش Uptime (میزان زمان روشن ماندن) و وضعیت اجرا. اگر سرویسی Crash کرده باشد، در این لیست مشخص خواهد بود.
## ۳. بررسی لاگ‌های سیستم (Logs Management)
سیستم لاگین بک‌اند (NestJS) ارورهای پایگاه داده و ریکوئست‌های ناموفق را ثبت می‌کند. خطاهای رندرینگ فرانت‌اند نیز در لاگ‌های اجرای اپلیکیشن قابل ردیابی است.
- برای مشاهده لاگ‌های زنده سیستم از این دستور استفاده کنید:
```bash
pm2 logs
```
- برای فیلتر کردن لاگ‌های مشخص، مثلاً فقط بک‌اند:
```bash
pm2 logs canino-api --lines 100
```
## ۴. مانیتورینگ دیتابیس (PostgreSQL)
از آنجا که پایگاه داده یکی از گلوگاه‌های اصلی (Bottlenecks) سرعت در سیستم‌های فروشگاهی است، می‌توانید در صورت بروز کندی سیستم از ابزار `pg_stat_statements` برای ردیابی کوئری‌های کُند (Slow Queries) در دیتابیس استفاده کنید.
همچنین پیشنهاد می‌شود از دیتابیس به صورت دوره‌ای بک‌آپ گرفته و لاگ‌های بک‌آپ را در سرور مانیتورینگ نظارت کنید.