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,no_run
13//! use pulseengine_mcp_monitoring::{MetricsCollector, MonitoringConfig, ServerMetrics};
14//! use std::time::Duration;
15//!
16//! #[tokio::main]
17//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
18//!     // Create monitoring configuration
19//!     let config = MonitoringConfig {
20//!         enable_metrics: true,
21//!         metrics_port: 9090,
22//!         health_check_interval: Duration::from_secs(30),
23//!         influxdb_url: Some("http://localhost:8086".to_string()),
24//!         influxdb_database: Some("mcp_metrics".to_string()),
25//!         ..Default::default()
26//!     };
27//!
28//!     // Create metrics collector
29//!     let mut collector = MetricsCollector::new(config);
30//!     collector.start().await?;
31//!
32//!     // Record metrics in your application
33//!     collector.record_request_duration(Duration::from_millis(50)).await;
34//!     collector.increment_request_count("tool_call").await;
35//!     collector.record_error("connection_timeout").await;
36//!
37//!     // Get current metrics snapshot
38//!     let metrics = collector.get_metrics().await;
39//!     println!("Total requests: {}", metrics.request_count);
40//!     println!("Average response time: {:?}", metrics.avg_response_time);
41//!
42//!     Ok(())
43//! }
44//! ```
45//!
46//! # Features
47//!
48//! - **Real-time metrics**: Live request/response time tracking
49//! - **Health monitoring**: System resource and connectivity checks
50//! - **Time-series storage**: InfluxDB integration for historical data
51//! - **Prometheus export**: Industry-standard metrics format
52//! - **Performance profiling**: Identify bottlenecks and optimization opportunities
53//! - **Production ready**: Low overhead, highly optimized collection
54
55pub mod collector;
56pub mod config;
57pub mod metrics;
58
59pub use collector::MetricsCollector;
60pub use config::MonitoringConfig;
61pub use metrics::ServerMetrics;
62
63/// Default monitoring configuration
64pub fn default_config() -> MonitoringConfig {
65    MonitoringConfig::default()
66}