Skip to main content

Metrics

Struct Metrics 

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

Prometheus metrics handle for the control plane.

Wraps a PrometheusHandle and the process start time used to compute lightshuttle_uptime_seconds at scrape time.

§Lifecycle

Call Metrics::install once per process to register the global Prometheus recorder. Pass the resulting value (wrapped in an std::sync::Arc) to crate::ControlState::with_metrics so GET /metrics can render a live snapshot.

For tests and embedders that do not need metrics, build with Metrics::for_test, which does not touch the global recorder.

§Tracked metrics

Metric nameKindDescription
lightshuttle_restart_totalcounterAccepted restart requests
lightshuttle_lifecycle_event_duration_secondshistogramSeconds from start to healthy
lightshuttle_resourcesgauge (per status label)Managed resource count
lightshuttle_uptime_secondsgaugeProcess uptime

Implementations§

Source§

impl Metrics

Source

pub fn install() -> Self

Install the global Prometheus recorder and describe every metric. Call exactly once per process, before any metric is recorded.

§Panics

Panics if a global recorder is already installed.

Source

pub fn for_test() -> Self

Build a non-installing handle for tests.

The metrics! macros always target the globally installed recorder, which this constructor never sets. The returned handle therefore renders an empty snapshot regardless of any metric recorded elsewhere. Use Self::install plus super::ControlState::with_metrics to serve live metrics.

Source

pub fn render(&self, status_counts: &[(&str, u64)]) -> String

Render the current metrics snapshot in Prometheus text format.

Before serialising, this method refreshes the two scrape-time gauges:

  • lightshuttle_resources{status="<s>"} for each (status, count) pair in status_counts.
  • lightshuttle_uptime_seconds derived from the process start time.

The returned string is suitable for serving directly as the body of GET /metrics with content type text/plain; version=0.0.4.

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<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<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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