pulseengine_mcp_monitoring/
metrics.rs

1//! Server metrics types
2
3use serde::{Deserialize, Serialize};
4
5/// Server metrics data
6#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(default)]
8pub struct ServerMetrics {
9    pub requests_total: u64,
10    pub requests_per_second: f64,
11    pub average_response_time_ms: f64,
12    pub error_rate: f64,
13    pub active_connections: u64,
14    pub memory_usage_bytes: u64,
15    pub uptime_seconds: u64,
16}
17
18/// Load average values
19#[derive(Debug, Clone, Serialize, Deserialize)]
20pub struct LoadAverage {
21    pub one: f64,
22    pub five: f64,
23    pub fifteen: f64,
24}
25
26/// Detailed system metrics
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct SystemMetrics {
29    pub cpu_usage_percent: f32,
30    pub memory_total_bytes: u64,
31    pub memory_used_bytes: u64,
32    pub memory_available_bytes: u64,
33    pub swap_total_bytes: u64,
34    pub swap_used_bytes: u64,
35    pub load_average: LoadAverage,
36    pub process_count: u64,
37}
38
39impl Default for ServerMetrics {
40    fn default() -> Self {
41        Self {
42            requests_total: 0,
43            requests_per_second: 0.0,
44            average_response_time_ms: 0.0,
45            error_rate: 0.0,
46            active_connections: 0,
47            memory_usage_bytes: 0,
48            uptime_seconds: 0,
49        }
50    }
51}
52
53#[cfg(test)]
54#[path = "metrics_tests.rs"]
55mod metrics_tests;