codex_memory/monitoring/
mod.rs1pub mod alerts;
2pub mod health;
3pub mod metrics;
4pub mod profiling;
5
6pub use alerts::*;
7pub use health::*;
8pub use metrics::*;
9pub use profiling::*;
10
11use chrono::{DateTime, Utc};
12use serde::{Deserialize, Serialize};
13use std::collections::HashMap;
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct SystemHealth {
17 pub status: HealthStatus,
18 pub timestamp: DateTime<Utc>,
19 pub components: HashMap<String, ComponentHealth>,
20 pub uptime_seconds: u64,
21 pub memory_usage_bytes: u64,
22 pub cpu_usage_percent: f64,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
26pub enum HealthStatus {
27 Healthy,
28 Degraded,
29 Unhealthy,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct ComponentHealth {
34 pub status: HealthStatus,
35 pub message: Option<String>,
36 pub last_checked: DateTime<Utc>,
37 pub response_time_ms: Option<u64>,
38 pub error_count: u64,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
42pub struct PerformanceMetrics {
43 pub request_count: u64,
44 pub error_count: u64,
45 pub avg_response_time_ms: f64,
46 pub p95_response_time_ms: f64,
47 pub p99_response_time_ms: f64,
48 pub memory_tier_distribution: HashMap<String, u64>,
49 pub active_connections: u32,
50 pub query_performance: QueryPerformanceMetrics,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct QueryPerformanceMetrics {
55 pub slow_queries: u64,
56 pub avg_query_time_ms: f64,
57 pub connection_pool_utilization: f64,
58 pub index_hit_ratio: f64,
59 pub cache_hit_ratio: f64,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct AlertRule {
64 pub name: String,
65 pub condition: AlertCondition,
66 pub threshold: f64,
67 pub severity: AlertSeverity,
68 pub enabled: bool,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
72pub enum AlertCondition {
73 MemoryPressure,
74 HighErrorRate,
75 SlowResponse,
76 ConnectionPoolSaturation,
77 MigrationFailures,
78 DiskUsage,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
82pub enum AlertSeverity {
83 Critical,
84 Warning,
85 Info,
86}