codex_memory/monitoring/
mod.rs

1pub 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}