Skip to main content

SwarmHealthMonitor

Struct SwarmHealthMonitor 

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

Swarm health monitor — tracks worker health, detects failures, and provides aggregate telemetry.

§Heartbeat Protocol

Workers send heartbeats at regular intervals. If a worker misses max_missed_beats consecutive heartbeats, it is marked as Unhealthy. After max_missed_beats * 2 missed beats, it is marked as Dead.

§Dead-Agent Detection

The health monitor periodically scans all tracked workers. Workers that have been Dead for longer than replacement_timeout_secs are candidates for automatic replacement.

§Metrics

The monitor tracks task throughput, worker utilization, error rates, and communication latency. These are exposed via metrics().

Implementations§

Source§

impl SwarmHealthMonitor

Source

pub fn new( heartbeat_interval_secs: u64, max_missed_beats: u32, replacement_timeout_secs: u64, ) -> Self

Create a new health monitor with custom parameters.

Source

pub fn register_worker(&mut self, role: &str)

Register a new worker for health tracking.

Source

pub fn heartbeat(&mut self, role: &str)

Record a heartbeat from a worker.

Source

pub fn task_started(&mut self, role: &str)

Record that a worker started a task.

Source

pub fn task_completed(&mut self, role: &str)

Record that a worker completed a task successfully.

Source

pub fn task_failed(&mut self, role: &str)

Record that a worker’s task failed.

Source

pub fn record_error(&mut self, role: &str)

Record an error from a worker.

Source

pub fn message_sent(&mut self, role: &str)

Record a message sent by a worker.

Source

pub fn message_received(&mut self, role: &str)

Record a message received by a worker.

Source

pub fn check_health(&mut self) -> Vec<String>

Scan all workers and update their health status based on heartbeat timing. Returns a list of workers that have been detected as dead.

Source

pub fn worker_telemetry(&self, role: &str) -> Option<WorkerTelemetry>

Get telemetry for a specific worker.

Source

pub fn all_worker_telemetry(&self) -> Vec<WorkerTelemetry>

Get telemetry for all workers.

Source

pub fn metrics(&self) -> SwarmMetrics

Get aggregate swarm metrics.

Source

pub fn dead_workers_for_replacement(&self) -> Vec<String>

Get workers that are candidates for replacement (dead for > replacement_timeout).

Source

pub fn remove_worker(&mut self, role: &str)

Remove a worker from tracking (after replacement).

Source

pub fn worker_count(&self) -> usize

Get the number of tracked workers.

Source

pub fn format_status(&self) -> String

Format health status for logging.

Trait Implementations§

Source§

impl Clone for SwarmHealthMonitor

Source§

fn clone(&self) -> SwarmHealthMonitor

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SwarmHealthMonitor

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SwarmHealthMonitor

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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