pub struct MetricsResponse {Show 21 fields
pub uptime_seconds: u64,
pub total_requests: u64,
pub total_errors: u64,
pub rejected_busy: u64,
pub rejected_unauthorized: u64,
pub rejected_rate_limited: u64,
pub in_flight_inferences: usize,
pub max_concurrent_requests: usize,
pub total_inferences: u64,
pub total_batches: u64,
pub average_batch_size: f64,
pub max_batch_size: usize,
pub average_inference_time_ms: f64,
pub last_inference_at: Option<String>,
pub request_latency_ms: Percentiles,
pub inference_latency_ms: Percentiles,
pub ready: bool,
pub models: Vec<ModelMetrics>,
pub llm: Vec<LlmMetrics>,
pub nerve: Option<NerveMetrics>,
pub timestamp: String,
}Expand description
GET /metrics: server-level counters for monitoring (originally contributed in #32)
Fields§
§uptime_seconds: u64§total_requests: u64/predict requests received, including ones rejected before inference
total_errors: u64/predict requests answered with a 4xx/5xx status
rejected_busy: u64Requests rejected with 503 SERVER_BUSY
Requests rejected with 401 UNAUTHORIZED for a missing or unknown API key
rejected_rate_limited: u64Requests rejected with 429 RATE_LIMITED
in_flight_inferences: usizeRequests queued for or running inference
max_concurrent_requests: usize--max-concurrent-requests (furnace_max_concurrent_requests in Prometheus)
total_inferences: u64Requests that reached the model (successful or failed)
total_batches: u64Forward passes run; with dynamic batching one pass serves several requests
average_batch_size: f64Items per forward pass, on average
max_batch_size: usize--max-batch-size; 1 means dynamic batching is off
average_inference_time_ms: f64§last_inference_at: Option<String>When the last successful inference finished
request_latency_ms: Percentiles/predict latency from arrival to response, estimated percentiles
inference_latency_ms: PercentilesSuccessful inference latency, queueing included, estimated percentiles
ready: boolWhether every model’s warm-up inference has run (see GET /readyz)
models: Vec<ModelMetrics>The same per model; the fields above are totals over them
llm: Vec<LlmMetrics>The LLMs (feature llm), with their own counters; absent without any
nerve: Option<NerveMetrics>The nervous system: the served models’ pathways, and the neurons added with
Server::nerve
timestamp: StringTrait Implementations§
Source§impl Debug for MetricsResponse
impl Debug for MetricsResponse
Source§impl<'de> Deserialize<'de> for MetricsResponse
impl<'de> Deserialize<'de> for MetricsResponse
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for MetricsResponse
impl RefUnwindSafe for MetricsResponse
impl Send for MetricsResponse
impl Sync for MetricsResponse
impl Unpin for MetricsResponse
impl UnsafeUnpin for MetricsResponse
impl UnwindSafe for MetricsResponse
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request