pulseengine_mcp_monitoring/lib.rs
1//! Monitoring, metrics, and observability for MCP servers
2//!
3//! This crate provides comprehensive monitoring capabilities for MCP servers including:
4//! - Real-time metrics collection and reporting
5//! - Health checks and system monitoring
6//! - Performance profiling and optimization insights
7//! - `InfluxDB` integration for time-series data
8//! - Prometheus-compatible metrics export
9//!
10//! # Quick Start
11//!
12//! ```rust,ignore
13//! use pulseengine_mcp_monitoring::{MetricsCollector, MonitoringConfig};
14//!
15//! #[tokio::main]
16//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
17//! // Create monitoring configuration
18//! let config = MonitoringConfig {
19//! enabled: true,
20//! collection_interval_secs: 60,
21//! performance_monitoring: true,
22//! health_checks: true,
23//! };
24//!
25//! // Create metrics collector
26//! let collector = MetricsCollector::new(config);
27//!
28//! // The collector automatically tracks metrics for requests
29//! // when integrated with your MCP server
30//!
31//! // Get current metrics
32//! let metrics = collector.get_current_metrics();
33//! println!("Total requests: {}", metrics.request_count);
34//! println!("Total errors: {}", metrics.error_count);
35//! println!("Uptime: {:?}", metrics.uptime);
36//!
37//! Ok(())
38//! }
39//! ```
40//!
41//! # Features
42//!
43//! - **Real-time metrics**: Live request/response time tracking
44//! - **Health monitoring**: System resource and connectivity checks
45//! - **Time-series storage**: `InfluxDB` integration for historical data
46//! - **Prometheus export**: Industry-standard metrics format
47//! - **Performance profiling**: Identify bottlenecks and optimization opportunities
48//! - **Production ready**: Low overhead, highly optimized collection
49
50pub mod collector;
51pub mod config;
52pub mod metrics;
53
54pub use collector::MetricsCollector;
55pub use config::MonitoringConfig;
56pub use metrics::{ServerMetrics, SystemMetrics};
57
58/// Default monitoring configuration
59pub fn default_config() -> MonitoringConfig {
60 MonitoringConfig::default()
61}
62
63#[cfg(test)]
64mod lib_tests;