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}