scirs2_core/advanced_distributed_computing/
monitoring.rs

1//! Monitoring and statistics collection
2//!
3//! This module handles cluster statistics, performance monitoring, and telemetry
4//! for the distributed computing framework.
5
6use super::types::default_instant;
7use std::time::{Duration, Instant};
8
9/// Cluster statistics
10#[derive(Debug, Clone)]
11pub struct ClusterStatistics {
12    /// Total nodes
13    pub total_nodes: usize,
14    /// Active nodes
15    pub active_nodes: usize,
16    /// Total tasks processed
17    pub total_tasks_processed: u64,
18    /// Average task completion time
19    pub avg_task_completion_time: Duration,
20    /// Cluster throughput
21    pub cluster_throughput: f64,
22    /// Resource utilization
23    pub resource_utilization: ClusterResourceUtilization,
24    /// Fault tolerance metrics
25    pub fault_tolerance_metrics: FaultToleranceMetrics,
26    /// Tasks submitted
27    pub tasks_submitted: u64,
28    /// Average submission time
29    pub avg_submission_time: Duration,
30    /// Last update timestamp
31    pub last_update: Instant,
32}
33
34/// Cluster resource utilization
35#[derive(Debug, Clone)]
36pub struct ClusterResourceUtilization {
37    /// CPU utilization
38    pub cpu_utilization: f64,
39    /// Memory utilization
40    pub memory_utilization: f64,
41    /// Storage utilization
42    pub storage_utilization: f64,
43    /// Network utilization
44    pub network_utilization: f64,
45}
46
47/// Fault tolerance metrics
48#[derive(Debug, Clone)]
49pub struct FaultToleranceMetrics {
50    /// Mean time between failures
51    pub mtbf: Duration,
52    /// Mean time to recovery
53    pub mttr: Duration,
54    /// Availability percentage
55    pub availability: f64,
56    /// Successful recoveries
57    pub successful_recoveries: u64,
58}
59
60// Implementations
61impl Default for ClusterStatistics {
62    fn default() -> Self {
63        Self {
64            total_nodes: 0,
65            active_nodes: 0,
66            total_tasks_processed: 0,
67            avg_task_completion_time: Duration::default(),
68            cluster_throughput: 0.0,
69            resource_utilization: ClusterResourceUtilization {
70                cpu_utilization: 0.0,
71                memory_utilization: 0.0,
72                storage_utilization: 0.0,
73                network_utilization: 0.0,
74            },
75            fault_tolerance_metrics: FaultToleranceMetrics {
76                mtbf: Duration::from_secs(168 * 60 * 60), // 1 week
77                mttr: Duration::from_secs(15 * 60),
78                availability: 0.999,
79                successful_recoveries: 0,
80            },
81            tasks_submitted: 0,
82            avg_submission_time: Duration::default(),
83            last_update: default_instant(),
84        }
85    }
86}