arc/docs/SYSTEM_MONITORING_SCENARIO.md
2026-04-14 19:34:55 +03:30

31 KiB
Executable file
Raw Permalink Blame History

سناریو مانیتورینگ سیستم (System Monitoring Scenario)

📋 فهرست مطالب

  1. مقدمه
  2. اهداف و نیازمندی‌ها
  3. معماری سیستم مانیتورینگ
  4. بخش‌های مانیتورینگ
  5. رابط کاربری (UI)
  6. به‌روزرسانی لحظه‌ای
  7. نمودارها و چارت‌ها
  8. گزارشات
  9. هشدارها و آلارم‌ها
  10. API Endpoints
  11. پیاده‌سازی Backend
  12. پیاده‌سازی Frontend

مقدمه

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


اهداف و نیازمندی‌ها

اهداف اصلی:

  1. مانیتورینگ منابع سخت‌افزاری: CPU، RAM، Disk، Network
  2. مانیتورینگ سرویس‌ها: API Server، Database، Redis Cache، Background Workers
  3. مانیتورینگ عملکرد: Response Time، Request Rate، Error Rate
  4. گزارشات قابل دانلود: PDF، Excel، CSV
  5. هشدارهای خودکار: در صورت بروز مشکل
  6. تاریخچه و تحلیل روند: برای بررسی الگوهای استفاده

نیازمندی‌های عملکردی:

  • به‌روزرسانی لحظه‌ای: بروزرسانی هر 1-5 ثانیه برای metrics حساس
  • ذخیره‌سازی داده‌ها: نگهداری تاریخچه حداقل 30 روز
  • دسترسی محدود: فقط مدیران سیستم (superadmin یا permission خاص)
  • عملکرد بالا: استفاده از cache برای کاهش بار دیتابیس

معماری سیستم مانیتورینگ

┌─────────────────┐
│   Frontend UI   │  (Flutter - Real-time Dashboard)
│                 │
│  - WebSocket    │
│  - Charts       │
│  - Alerts       │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Backend API    │  (FastAPI)
│                 │
│  - /monitoring  │
│  - /metrics     │
│  - WebSocket    │
└────────┬────────┘
         │
         ├──────────────────┬──────────────────┐
         ▼                  ▼                  ▼
┌──────────────┐   ┌──────────────┐   ┌──────────────┐
│   Database   │   │  Redis Cache │   │  System APIs │
│              │   │              │   │              │
│ - Metrics    │   │ - Real-time  │   │ - psutil     │
│ - History    │   │ - Aggregated │   │ - systemctl  │
│ - Alerts     │   │              │   │              │
└──────────────┘   └──────────────┘   └──────────────┘

بخش‌های مانیتورینگ

1. مانیتورینگ منابع سخت‌افزاری (Hardware Resources)

1.1 CPU (پردازنده)

  • استفاده CPU (%): درصد استفاده از CPU
  • Core Count: تعداد هسته‌ها
  • Load Average: میانگین بار سیستم (1min, 5min, 15min)
  • Process Top Consumers: پردازه‌های پرمصرف CPU
  • نمودار: Line Chart با زمان واقعی (Real-time)
  • بازه زمانی: 1 دقیقه، 5 دقیقه، 1 ساعت، 24 ساعت

1.2 Memory (حافظه)

  • RAM استفاده شده / کل (GB/MB): درصد و مقدار استفاده
  • Swap استفاده شده / کل: استفاده از Swap
  • Memory Breakdown: تفکیک استفاده (System, Cache, Buffers, Applications)
  • Memory Top Consumers: پردازه‌های پرمصرف حافظه
  • نمودار: Stacked Area Chart
  • هشدار: در صورت استفاده بیش از 85% از RAM

1.3 Disk (دیسک)

  • فضای استفاده شده / کل (GB/TB): برای هر پارتیشن
  • I/O Rate: خواندن/نوشتن در ثانیه (IOPS)
  • I/O Wait: زمان انتظار I/O
  • Disk Usage by Directory: استفاده فضای هر دایرکتوری
  • نمودار: Pie Chart برای فضا، Line Chart برای I/O
  • هشدار: در صورت پر شدن بیش از 90% از فضا

1.4 Network (شبکه)

  • Bandwidth استفاده شده (Mbps/Gbps): Upload/Download
  • Packets: تعداد بسته‌های ارسالی/دریافتی
  • Connections: تعداد اتصالات فعال
  • Network Interface Stats: آمار هر رابط شبکه
  • نمودار: Dual-axis Line Chart (Upload/Download)
  • بازه زمانی: Real-time و تاریخی

2. مانیتورینگ سرویس‌ها (Services Monitoring)

2.1 API Server

  • Status: آنلاین/آفلاین
  • Uptime: مدت زمان فعالیت
  • Version: نسخه API
  • Workers: تعداد worker های فعال
  • Active Connections: اتصالات فعال
  • Response Time: میانگین زمان پاسخ
  • Request Rate: درخواست در ثانیه (RPS)
  • Error Rate: درصد خطا (4xx, 5xx)
  • Health Check: آخرین وضعیت health endpoint

2.2 Database (PostgreSQL/SQLite)

  • Status: متصل/قطع شده
  • Connection Pool: تعداد اتصالات فعال/حداکثر
  • Query Performance: تعداد query های کند
  • Slow Queries: لیست query های کند (بیش از 1 ثانیه)
  • Database Size: حجم دیتابیس
  • Table Sizes: حجم هر جدول
  • Cache Hit Rate: نرخ موفقیت cache
  • Lock Statistics: آمار قفل‌ها

2.3 Redis Cache

  • Status: فعال/غیرفعال
  • Memory Usage: استفاده حافظه
  • Keys Count: تعداد کلیدها
  • Hit/Miss Rate: نرخ موفقیت cache
  • Commands per Second: تعداد دستورات در ثانیه
  • Connected Clients: کلاینت‌های متصل
  • Eviction Policy: سیاست حذف

2.4 Background Workers (RQ Workers)

  • Status: فعال/غیرفعال
  • Queue Length: تعداد کارهای در صف
  • Processing Rate: نرخ پردازش
  • Failed Jobs: تعداد کارهای ناموفق
  • Worker Status: وضعیت هر worker
  • Job History: تاریخچه کارها

2.5 External Services

  • Email Service: وضعیت سرویس ایمیل
  • SMS Service: وضعیت سرویس پیامک
  • Telegram Bot: وضعیت ربات تلگرام
  • Payment Gateways: وضعیت درگاه‌های پرداخت

3. مانیتورینگ عملکرد (Performance Monitoring)

3.1 API Endpoints

  • Endpoint Performance: آمار عملکرد هر endpoint
    • تعداد درخواست‌ها
    • میانگین زمان پاسخ
    • حداکثر زمان پاسخ
    • نرخ خطا
  • Slow Endpoints: endpoint های کند (بیش از 1 ثانیه)
  • Error Endpoints: endpoint هایی با بیشترین خطا
  • Top Endpoints: پرکاربردترین endpoint ها
  • نمودار: Heatmap برای زمان پاسخ، Bar Chart برای تعداد درخواست‌ها

3.2 Request Statistics

  • Total Requests: کل درخواست‌ها
  • Requests per Second: RPS
  • Response Time Distribution: توزیع زمان پاسخ
  • Status Code Distribution: توزیع کدهای وضعیت
  • User Activity: فعالیت کاربران
  • Peak Hours: ساعات پیک

3.3 Application Metrics

  • Active Users: کاربران فعال
  • Concurrent Sessions: جلسات همزمان
  • API Usage by User: استفاده API توسط کاربر
  • Business Activity: فعالیت کسب‌وکارها
  • File Upload/Download: آپلود/دانلود فایل

رابط کاربری (UI)

4.1 صفحه اصلی Dashboard

┌─────────────────────────────────────────────────────────────┐
│  System Monitoring Dashboard                    [⚙️ Settings]│
├─────────────────────────────────────────────────────────────┤
│                                                               │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌─────────┐│
│  │ CPU        │  │ Memory     │  │ Disk       │  │ Network ││
│  │ 45%        │  │ 6.2/16 GB  │  │ 120/500 GB │  │ 15 Mbps ││
│  │ 🟢 Normal  │  │ 🟢 Normal  │  │ 🟢 Normal  │  │ 🟢 OK   ││
│  └────────────┘  └────────────┘  └────────────┘  └─────────┘│
│                                                               │
│  ┌─────────────────────────────────────────────────────────┐│
│  │  System Resources (Last 1 Hour)                          ││
│  │                                                           ││
│  │  [CPU Usage Chart - Line Chart]                          ││
│  │  [Memory Usage Chart - Area Chart]                       ││
│  │                                                           ││
│  └─────────────────────────────────────────────────────────┘│
│                                                               │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌─────────┐│
│  │ API Server │  │ Database   │  │ Redis      │  │ Workers ││
│  │ 🟢 Online  │  │ 🟢 OK      │  │ 🟢 Active  │  │ 4 Active││
│  │ Uptime: 7d │  │ 25/100 Conn│  │ 95% Hit    │  │ 0 Queue ││
│  └────────────┘  └────────────┘  └────────────┘  └─────────┘│
│                                                               │
│  ┌─────────────────────────────────────────────────────────┐│
│  │  API Performance (Last 1 Hour)                           ││
│  │                                                           ││
│  │  [Request Rate Chart - Bar Chart]                        ││
│  │  [Response Time Chart - Line Chart]                      ││
│  │                                                           ││
│  └─────────────────────────────────────────────────────────┘│
│                                                               │
└─────────────────────────────────────────────────────────────┘

4.2 تب‌های مختلف

  1. Overview (نمای کلی): خلاصه وضعیت سیستم
  2. Hardware (سخت‌افزار): منابع سخت‌افزاری
  3. Services (سرویس‌ها): وضعیت سرویس‌ها
  4. Performance (عملکرد): آمار عملکرد API
  5. Logs (لاگ‌ها): لاگ‌های سیستم
  6. Alerts (هشدارها): هشدارها و آلارم‌ها
  7. Reports (گزارشات): گزارشات قابل دانلود

4.3 فیلترها و تنظیمات

  • بازه زمانی: 1 دقیقه، 5 دقیقه، 1 ساعت، 6 ساعت، 24 ساعت، 7 روز، 30 روز
  • Auto-refresh: فعال/غیرفعال کردن بروزرسانی خودکار
  • Refresh Interval: تنظیم فاصله بروزرسانی (1s, 5s, 10s, 30s, 1m)
  • Export: خروجی گرفتن از داده‌ها

به‌روزرسانی لحظه‌ای

5.1 WebSocket Connection

برای بروزرسانی لحظه‌ای از WebSocket استفاده می‌شود:

// Frontend (Flutter)
WebSocket connection → Backend
  ↓
Subscribe to channels:
  - hardware:metrics
  - services:status
  - api:performance
  - alerts:new

Backend Endpoints:

  • WS /api/v1/admin/monitoring/stream - WebSocket endpoint برای دریافت داده‌های لحظه‌ای

Data Format:

{
  "channel": "hardware:metrics",
  "timestamp": "2024-01-01T12:00:00Z",
  "data": {
    "cpu_percent": 45.2,
    "memory_percent": 62.5,
    "disk_usage": 120.5,
    "network_in": 15.2,
    "network_out": 8.7
  }
}

5.2 Polling Fallback

در صورت عدم دسترسی به WebSocket، از HTTP Polling استفاده می‌شود:

  • فاصله پیش‌فرض: 5 ثانیه
  • قابل تنظیم: 1-60 ثانیه

5.3 Cache Strategy

  • Real-time Data: در Redis با TTL 10 ثانیه
  • Historical Data: در دیتابیس هر 1 دقیقه
  • Aggregated Data: هر 5 دقیقه برای بهینه‌سازی

نمودارها و چارت‌ها

6.1 کتابخانه‌های پیشنهادی

Flutter:

  • fl_chart - برای نمودارهای تعاملی
  • syncfusion_flutter_charts - کتابخانه کامل و قدرتمند
  • charts_flutter - از Google

6.2 انواع نمودارها

6.2.1 Line Chart (نمودار خطی)

  • موارد استفاده: CPU Usage، Memory Usage، Response Time، Request Rate
  • ویژگی‌ها: چند خطی (Multi-line)، زوم (Zoom)، Tooltip
  • رنگ‌بندی: رنگ‌های مختلف برای هر metric

6.2.2 Area Chart (نمودار ناحیه‌ای)

  • موارد استفاده: Memory Breakdown، Disk Usage over time
  • ویژگی‌ها: Stacked Area، Gradient Fill
  • شفافیت: نمایش چند metric همزمان

6.2.3 Bar Chart (نمودار میله‌ای)

  • موارد استفاده: Request Count by Endpoint، Error Count، Top Users
  • ویژگی‌ها: Horizontal/Vertical، Grouped Bar
  • تعاملی: قابلیت کلیک برای جزئیات بیشتر

6.2.4 Pie Chart (نمودار دایره‌ای)

  • موارد استفاده: Disk Usage by Partition، Status Code Distribution
  • ویژگی‌ها: Legend، Percentage Labels
  • انیمیشن: انیمیشن هنگام بارگذاری

6.2.5 Heatmap (نقشه حرارتی)

  • موارد استفاده: API Response Time by Endpoint and Time
  • ویژگی‌ها: رنگ‌بندی بر اساس شدت
  • تعاملی: Tooltip با جزئیات

6.2.6 Gauge Chart (نمودار عقربه‌ای)

  • موارد استفاده: CPU Usage، Memory Usage، Disk Usage
  • ویژگی‌ها: نشان دادن درصد استفاده
  • هشدار: تغییر رنگ در آستانه خطر

6.2.7 Real-time Sparklines (نمودارهای کوچک)

  • موارد استفاده: نمایش سریع در کارت‌ها
  • ویژگی‌ها: ساده و سریع
  • بهینه‌سازی: فقط آخرین 50 نقطه

6.3 ویژگی‌های مشترک

  • Zoom & Pan: زوم و جابجایی در نمودارها
  • Tooltip: نمایش مقدار دقیق هنگام hover/tap
  • Legend: راهنمای نمودار
  • Responsive: سازگار با اندازه‌های مختلف صفحه
  • Dark Mode: پشتیبانی از حالت تاریک
  • Export: خروجی تصویر (PNG, SVG)

گزارشات

7.1 انواع گزارشات

7.1.1 گزارش روزانه (Daily Report)

  • محتوا: خلاصه عملکرد در 24 ساعت گذشته
  • شامل:
    • استفاده منابع (CPU, RAM, Disk, Network)
    • آمار API (Requests, Errors, Response Time)
    • وضعیت سرویس‌ها
    • هشدارها و خطاها
  • فرمت: PDF, Excel, CSV

7.1.2 گزارش هفتگی (Weekly Report)

  • محتوا: تحلیل روند در 7 روز گذشته
  • شامل:
    • نمودارهای روند
    • مقایسه با هفته قبل
    • Peak Hours
    • توصیه‌های بهینه‌سازی
  • فرمت: PDF

7.1.3 گزارش ماهانه (Monthly Report)

  • محتوا: بررسی جامع در 30 روز گذشته
  • شامل:
    • تحلیل کامل عملکرد
    • الگوهای استفاده
    • پیش‌بینی روند
    • توصیه‌های استراتژیک
  • فرمت: PDF با نمودارهای کامل

7.1.4 گزارش سفارشی (Custom Report)

  • انتخاب بازه زمانی: از تاریخ تا تاریخ
  • انتخاب Metrics: انتخاب metrics مورد نظر
  • انتخاب فرمت: PDF, Excel, CSV, JSON
  • فیلترها: فیلتر بر اساس سرویس، endpoint، و غیره

7.2 قالب گزارشات

7.2.1 PDF Report

  • Header: لوگو و عنوان گزارش
  • Executive Summary: خلاصه اجرایی
  • Detailed Charts: نمودارهای تفصیلی
  • Tables: جداول داده‌ها
  • Footer: تاریخ و زمان تولید

7.2.2 Excel Report

  • Multiple Sheets:
    • Summary
    • Hardware Metrics
    • Service Status
    • API Performance
    • Alerts
  • Charts: نمودارهای Excel
  • Pivot Tables: جداول محوری

7.2.3 CSV Report

  • Raw Data: داده‌های خام
  • CSV Format: قابل استفاده در Excel و Google Sheets
  • Multiple Files: فایل جداگانه برای هر metric

7.3 برنامه‌ریزی گزارشات

  • Scheduled Reports: گزارشات زمان‌بندی شده
    • روزانه: هر روز ساعت 8 صبح
    • هفتگی: هر دوشنبه ساعت 8 صبح
    • ماهانه: اول هر ماه ساعت 8 صبح
  • Email Delivery: ارسال خودکار به ایمیل مدیر
  • Storage: ذخیره گزارشات در سیستم (حداقل 1 سال)

هشدارها و آلارم‌ها

8.1 انواع هشدارها

8.1.1 هشدارهای منابع سخت‌افزاری

  • CPU: استفاده بیش از 90% برای بیش از 5 دقیقه
  • Memory: استفاده بیش از 85% برای بیش از 5 دقیقه
  • Disk: استفاده بیش از 90% یا کمتر از 10% فضای خالی
  • Network: استفاده بیش از 80% از bandwidth

8.1.2 هشدارهای سرویس‌ها

  • API Server: قطع سرویس یا عدم پاسخ
  • Database: قطع اتصال یا خطای query
  • Redis: قطع اتصال یا خطای cache
  • Workers: توقف worker یا صف بیش از 1000 کار

8.1.3 هشدارهای عملکرد

  • Response Time: میانگین زمان پاسخ بیش از 2 ثانیه
  • Error Rate: نرخ خطا بیش از 5%
  • Slow Queries: query های کند بیش از 10 در دقیقه
  • Failed Jobs: کارهای ناموفق بیش از 10 در ساعت

8.2 سطوح هشدار

  1. Info (اطلاعات): فقط اطلاع‌رسانی
  2. Warning (هشدار): نیاز به توجه
  3. Critical (بحرانی): نیاز به اقدام فوری

8.3 کانال‌های ارسال هشدار

  • درون برنامه (In-app): نمایش در Dashboard
  • ایمیل: ارسال به مدیر سیستم
  • تلگرام: ارسال به گروه/کانال تلگرام (اختیاری)
  • SMS: برای هشدارهای بحرانی (اختیاری)

8.4 تنظیمات هشدار

  • Thresholds: تنظیم آستانه‌ها
  • Notification Channels: انتخاب کانال‌های اطلاع‌رسانی
  • Cooldown Period: فاصله بین هشدارهای مشابه (برای جلوگیری از spam)
  • Alert Rules: قوانین سفارشی برای هشدارها

API Endpoints

9.1 Hardware Monitoring

GET /api/v1/admin/monitoring/hardware/current
  - دریافت وضعیت فعلی منابع سخت‌افزاری

GET /api/v1/admin/monitoring/hardware/history
  - دریافت تاریخچه منابع سخت‌افزاری
  - Query params: start_time, end_time, interval

GET /api/v1/admin/monitoring/hardware/top-processes
  - دریافت پردازه‌های پرمصرف

9.2 Services Monitoring

GET /api/v1/admin/monitoring/services/status
  - دریافت وضعیت همه سرویس‌ها

GET /api/v1/admin/monitoring/services/{service_name}/status
  - دریافت وضعیت یک سرویس خاص

GET /api/v1/admin/monitoring/services/{service_name}/metrics
  - دریافت metrics یک سرویس خاص

9.3 Performance Monitoring

GET /api/v1/admin/monitoring/performance/overview
  - دریافت خلاصه عملکرد

GET /api/v1/admin/monitoring/performance/endpoints
  - دریافت آمار endpoint ها

GET /api/v1/admin/monitoring/performance/slow-endpoints
  - دریافت endpoint های کند

GET /api/v1/admin/monitoring/performance/error-endpoints
  - دریافت endpoint هایی با بیشترین خطا

9.4 WebSocket

WS /api/v1/admin/monitoring/stream
  - WebSocket endpoint برای دریافت داده‌های لحظه‌ای
  - Subscribe to channels:
    - hardware:metrics
    - services:status
    - api:performance
    - alerts:new

9.5 Reports

GET /api/v1/admin/monitoring/reports
  - دریافت لیست گزارشات

POST /api/v1/admin/monitoring/reports/generate
  - تولید گزارش سفارشی
  - Body: { start_time, end_time, metrics, format }

GET /api/v1/admin/monitoring/reports/{report_id}/download
  - دانلود گزارش

9.6 Alerts

GET /api/v1/admin/monitoring/alerts
  - دریافت لیست هشدارها

GET /api/v1/admin/monitoring/alerts/active
  - دریافت هشدارهای فعال

POST /api/v1/admin/monitoring/alerts/{alert_id}/acknowledge
  - تایید هشدار

GET /api/v1/admin/monitoring/alerts/settings
  - دریافت تنظیمات هشدارها

PUT /api/v1/admin/monitoring/alerts/settings
  - به‌روزرسانی تنظیمات هشدارها

پیاده‌سازی Backend

10.1 ساختار دیتابیس

جدول monitoring_metrics

CREATE TABLE monitoring_metrics (
    id SERIAL PRIMARY KEY,
    metric_type VARCHAR(50) NOT NULL,  -- cpu, memory, disk, network, api
    metric_name VARCHAR(100) NOT NULL, -- cpu_percent, memory_used, etc.
    value DECIMAL(15, 2) NOT NULL,
    unit VARCHAR(20),                   -- percent, bytes, seconds
    timestamp TIMESTAMP NOT NULL,
    metadata JSONB,                     -- اطلاعات اضافی
    INDEX idx_metric_timestamp (metric_type, timestamp)
);

جدول monitoring_service_status

CREATE TABLE monitoring_service_status (
    id SERIAL PRIMARY KEY,
    service_name VARCHAR(50) NOT NULL,
    status VARCHAR(20) NOT NULL,       -- online, offline, degraded
    uptime_seconds INTEGER,
    version VARCHAR(50),
    metadata JSONB,
    last_check TIMESTAMP NOT NULL,
    INDEX idx_service_status (service_name, last_check)
);

جدول monitoring_alerts

CREATE TABLE monitoring_alerts (
    id SERIAL PRIMARY KEY,
    alert_type VARCHAR(50) NOT NULL,
    severity VARCHAR(20) NOT NULL,     -- info, warning, critical
    title VARCHAR(200) NOT NULL,
    message TEXT,
    metric_name VARCHAR(100),
    threshold_value DECIMAL(15, 2),
    current_value DECIMAL(15, 2),
    status VARCHAR(20) DEFAULT 'active', -- active, acknowledged, resolved
    created_at TIMESTAMP NOT NULL,
    acknowledged_at TIMESTAMP,
    acknowledged_by INTEGER,
    resolved_at TIMESTAMP,
    INDEX idx_alert_status (status, created_at)
);

10.2 Backend Services

10.2.1 Hardware Monitoring Service

class HardwareMonitoringService:
    def get_current_metrics(self) -> dict:
        """دریافت metrics فعلی سخت‌افزار"""
        # استفاده از psutil برای جمع‌آوری اطلاعات
        
    def get_historical_metrics(self, start_time, end_time, interval='1m') -> list:
        """دریافت تاریخچه metrics"""
        # خواندن از دیتابیس یا cache
        
    def collect_metrics(self):
        """جمع‌آوری و ذخیره metrics (Background Task)"""
        # اجرا هر 10 ثانیه

10.2.2 Service Monitoring Service

class ServiceMonitoringService:
    def check_service_status(self, service_name: str) -> dict:
        """بررسی وضعیت یک سرویس"""
        
    def check_all_services(self) -> dict:
        """بررسی وضعیت همه سرویس‌ها"""
        
    def get_service_metrics(self, service_name: str) -> dict:
        """دریافت metrics یک سرویس"""

10.2.3 Alert Service

class AlertService:
    def check_thresholds(self, metrics: dict):
        """بررسی آستانه‌ها و ایجاد هشدار"""
        
    def send_alert(self, alert: dict):
        """ارسال هشدار از طریق کانال‌های مختلف"""
        
    def acknowledge_alert(self, alert_id: int, user_id: int):
        """تایید هشدار"""

10.3 Background Tasks

Task: Collect Hardware Metrics

  • فرکانس: هر 10 ثانیه
  • وظیفه: جمع‌آوری metrics از psutil و ذخیره در Redis + Database

Task: Check Service Status

  • فرکانس: هر 30 ثانیه
  • وظیفه: بررسی وضعیت سرویس‌ها

Task: Aggregate Metrics

  • فرکانس: هر 5 دقیقه
  • وظیفه: تجمیع داده‌های دقیقه‌ای به داده‌های 5 دقیقه‌ای

Task: Check Alerts

  • فرکانس: هر 30 ثانیه
  • وظیفه: بررسی آستانه‌ها و ایجاد هشدار

پیاده‌سازی Frontend

11.1 ساختار صفحات

lib/pages/admin/system_monitoring/
  ├── system_monitoring_page.dart          # صفحه اصلی
  ├── widgets/
  │   ├── hardware_metrics_card.dart       # کارت منابع سخت‌افزاری
  │   ├── service_status_card.dart         # کارت وضعیت سرویس
  │   ├── performance_chart.dart           # نمودار عملکرد
  │   ├── alert_list.dart                  # لیست هشدارها
  │   └── metric_gauge.dart                # گیج metric
  ├── tabs/
  │   ├── overview_tab.dart                # تب نمای کلی
  │   ├── hardware_tab.dart                # تب سخت‌افزار
  │   ├── services_tab.dart                # تب سرویس‌ها
  │   ├── performance_tab.dart             # تب عملکرد
  │   ├── alerts_tab.dart                  # تب هشدارها
  │   └── reports_tab.dart                 # تب گزارشات
  └── services/
      ├── monitoring_service.dart          # سرویس ارتباط با API
      └── websocket_service.dart           # سرویس WebSocket

11.2 State Management

استفاده از Provider یا Riverpod برای مدیریت state:

  • Real-time metrics state
  • Historical data cache
  • Alert state
  • UI preferences (refresh interval, time range)

11.3 WebSocket Integration

class MonitoringWebSocketService {
  WebSocketChannel? _channel;
  
  Stream<Map<String, dynamic>> connect() {
    // اتصال به WebSocket
    // Subscribe to channels
    // Return stream
  }
  
  void disconnect() {
    // قطع اتصال
  }
}

11.4 Chart Implementation

استفاده از fl_chart برای نمودارها:

  • تنظیمات رنگ مطابق theme
  • انیمیشن‌های smooth
  • Tooltip با اطلاعات دقیق
  • قابلیت zoom و pan

اولویت‌بندی پیاده‌سازی

فاز 1: MVP (حداقل محصول قابل استفاده)

  1. ✅ مانیتورینگ منابع سخت‌افزاری (CPU, RAM, Disk, Network)
  2. ✅ مانیتورینگ وضعیت سرویس‌ها (API, Database, Redis)
  3. ✅ Dashboard ساده با نمودارهای اولیه
  4. ✅ بروزرسانی با HTTP Polling (هر 5 ثانیه)

فاز 2: بهبود عملکرد

  1. ✅ WebSocket برای بروزرسانی لحظه‌ای
  2. ✅ نمودارهای پیشرفته و تعاملی
  3. ✅ سیستم هشدارها
  4. ✅ گزارشات پایه (PDF)

فاز 3: ویژگی‌های پیشرفته

  1. ✅ گزارشات کامل و سفارشی (Excel, CSV)
  2. ✅ تحلیل روند و پیش‌بینی
  3. ✅ تنظیمات پیشرفته هشدارها
  4. ✅ ارسال هشدار از طریق کانال‌های مختلف

نکات مهم

  1. امنیت: تمام endpoint ها نیاز به مجوز admin دارند
  2. عملکرد: استفاده از cache برای کاهش بار دیتابیس
  3. مقیاس‌پذیری: طراحی برای مقیاس‌پذیری در آینده
  4. قابلیت اطمینان: مدیریت خطا و fallback mechanisms
  5. تجربه کاربری: UI/UX ساده و واضح
  6. مستندات: مستندسازی کامل API و کد

کتابخانه‌های پیشنهادی

Backend (Python)

  • psutil: جمع‌آوری اطلاعات سیستم
  • fastapi-websocket: WebSocket support
  • redis: برای cache و real-time data
  • celery یا rq: برای background tasks
  • reportlab یا weasyprint: برای تولید PDF
  • openpyxl: برای تولید Excel

Frontend (Flutter)

  • fl_chart: برای نمودارها
  • web_socket_channel: برای WebSocket
  • provider یا riverpod: برای state management
  • intl: برای فرمت تاریخ و زمان
  • syncfusion_flutter_pdf: برای نمایش PDF (اختیاری)

نویسنده: AI Assistant
تاریخ: 2024
نسخه: 1.0