pub struct MonitoringServer { /* private fields */ }Expand description
HTTP server that exposes monitoring data as JSON
Implementations§
Source§impl MonitoringServer
impl MonitoringServer
Sourcepub fn new(
bind_address: SocketAddr,
server_monitoring: Option<Arc<dyn ServerMonitoring + Send + Sync + 'static>>,
sv2_clients_monitoring: Option<Arc<dyn Sv2ClientsMonitoring + Send + Sync + 'static>>,
refresh_interval: Duration,
) -> Result<Self, Box<dyn Error + Send + Sync>>
pub fn new( bind_address: SocketAddr, server_monitoring: Option<Arc<dyn ServerMonitoring + Send + Sync + 'static>>, sv2_clients_monitoring: Option<Arc<dyn Sv2ClientsMonitoring + Send + Sync + 'static>>, refresh_interval: Duration, ) -> Result<Self, Box<dyn Error + Send + Sync>>
Create a new monitoring server with automatic cache refresh.
This constructor creates a snapshot cache that decouples monitoring API requests from business logic locks, eliminating the DoS vulnerability where rapid API requests could cause lock contention with share validation and job distribution.
The cache is automatically refreshed in the background at the specified interval.
§Arguments
bind_address- Address to bind the HTTP server toserver_monitoring- Optional server (upstream) monitoring trait objectsv2_clients_monitoring- Optional Sv2 clients (downstream) monitoring trait objectrefresh_interval- How often to refresh the cache (e.g., Duration::from_secs(15))
Sourcepub fn with_sv1_monitoring(
self,
sv1_monitoring: Arc<dyn Sv1ClientsMonitoring + Send + Sync + 'static>,
) -> Result<Self, Box<dyn Error + Send + Sync>>
pub fn with_sv1_monitoring( self, sv1_monitoring: Arc<dyn Sv1ClientsMonitoring + Send + Sync + 'static>, ) -> Result<Self, Box<dyn Error + Send + Sync>>
Add Sv1 clients monitoring (optional, for Translator Proxy only)
This must be called before run() if you want SV1 monitoring.
Sourcepub async fn run(
self,
shutdown_signal: impl Future<Output = ()> + Send + 'static,
) -> Result<(), Box<dyn Error + Send + Sync>>
pub async fn run( self, shutdown_signal: impl Future<Output = ()> + Send + 'static, ) -> Result<(), Box<dyn Error + Send + Sync>>
Run the monitoring server until the shutdown signal completes
Starts an HTTP server that exposes monitoring data as JSON.
Also starts a background task that refreshes the snapshot cache periodically.
Both tasks shut down gracefully when shutdown_signal completes.
Automatically exposes:
- Swagger UI at
/swagger-ui - OpenAPI spec at
/api-docs/openapi.json - Prometheus metrics at
/metrics