Skip to main content

MonitoringServer

Struct MonitoringServer 

Source
pub struct MonitoringServer { /* private fields */ }
Expand description

HTTP server that exposes monitoring data as JSON

Implementations§

Source§

impl MonitoringServer

Source

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 to
  • server_monitoring - Optional server (upstream) monitoring trait object
  • sv2_clients_monitoring - Optional Sv2 clients (downstream) monitoring trait object
  • refresh_interval - How often to refresh the cache (e.g., Duration::from_secs(15))
Source

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.

Source

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

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more