pub struct EngineMetrics {Show 44 fields
pub events_ingested: IntCounter,
pub events_emitted: IntCounter,
pub events_dropped: IntCounter,
pub cycles: IntCounter,
pub batches: IntCounter,
pub queries_compiled: IntCounter,
pub queries_cached_plan: IntCounter,
pub cycles_backpressured: IntCounter,
pub mv_updates: IntCounter,
pub mv_bytes_stored: IntGauge,
pub pipeline_watermark: IntGauge,
pub source_watermark_ms: IntGaugeVec,
pub source_idle: IntGaugeVec,
pub stream_watermark_ms: IntGaugeVec,
pub input_buf_bytes: IntGaugeVec,
pub shed_records_total: IntCounterVec,
pub checkpoints_completed: IntCounter,
pub checkpoints_failed: IntCounter,
pub checkpoint_epoch: IntGauge,
pub checkpoint_size_bytes: IntGauge,
pub sink_write_failures: IntCounter,
pub sink_write_timeouts: IntCounter,
pub sink_task_channel_closed: IntCounter,
pub sink_filter_rejected_rows: IntCounterVec,
pub window_late_dropped: IntCounter,
pub events_null_timestamp: IntCounter,
pub temporal_filter_buffered: IntGauge,
pub temporal_filter_inserts: IntCounter,
pub temporal_filter_retracts: IntCounter,
pub temporal_filter_dropped: IntCounter,
pub cycle_duration: Histogram,
pub checkpoint_duration: Histogram,
pub checkpoint_pipeline_stall_duration: Histogram,
pub checkpoint_restorable_gate_wait: Histogram,
pub checkpoint_unchanged_vnodes: IntCounter,
pub sink_precommit_duration: Histogram,
pub sink_commit_duration: Histogram,
pub lookup_cache_hits: IntCounterVec,
pub lookup_cache_misses: IntCounterVec,
pub lookup_source_errors: IntCounterVec,
pub lookup_in_flight_rows: IntGaugeVec,
pub remote_subscription_batches_dropped: IntCounter,
pub placement_vnodes_per_domain: IntGaugeVec,
pub placement_blast_radius_ratio: Gauge,
}Expand description
Pipeline metrics registered on an explicit prometheus Registry.
Constructed once at startup, Arc-shared into PipelineCallback,
CheckpointCoordinator, and OperatorGraph.
Fields§
§events_ingested: IntCounterEvents ingested from sources.
events_emitted: IntCounterEvents emitted to streams.
events_dropped: IntCounterEvents dropped.
cycles: IntCounterProcessing cycles completed.
batches: IntCounterBatches processed.
queries_compiled: IntCounterQueries using compiled PhysicalExpr.
queries_cached_plan: IntCounterQueries using cached logical plan.
cycles_backpressured: IntCounterCycles skipped by backpressure.
mv_updates: IntCounterMaterialized view updates.
mv_bytes_stored: IntGaugeApproximate MV bytes stored.
pipeline_watermark: IntGaugeGlobal pipeline watermark.
source_watermark_ms: IntGaugeVecPer-source watermark (epoch-ms). Label: source.
source_idle: IntGaugeVec1 if a source is idle (excluded from the watermark min), else
0. Label: source.
stream_watermark_ms: IntGaugeVecPer-stream watermark (epoch-ms). Label: stream.
input_buf_bytes: IntGaugeVecPer-stream input-port buffered bytes. Label: stream.
shed_records_total: IntCounterVecPer-stream rows shed by the ShedOldest policy. Label: stream.
checkpoints_completed: IntCounterCompleted checkpoints.
checkpoints_failed: IntCounterFailed checkpoints.
checkpoint_epoch: IntGaugeCurrent checkpoint epoch.
checkpoint_size_bytes: IntGaugeLast checkpoint size in bytes.
sink_write_failures: IntCounterSink write errors.
sink_write_timeouts: IntCounterSink write timeouts.
sink_task_channel_closed: IntCounterSink task channel closed.
sink_filter_rejected_rows: IntCounterVecRows dropped because the sink’s WHERE filter failed to compile to
a PhysicalExpr (fail-closed). Label: sink.
window_late_dropped: IntCounterRows dropped at operator level past allowed_lateness (distinct
from events_dropped, which is source-side).
events_null_timestamp: IntCounterSource rows dropped because the event-time column was null.
temporal_filter_buffered: IntGaugeRows currently buffered by temporal-filter operators.
temporal_filter_inserts: IntCounterZ-set inserts (+1) emitted by temporal-filter operators.
temporal_filter_retracts: IntCounterZ-set retractions (-1) emitted by temporal-filter operators.
temporal_filter_dropped: IntCounterLate / born-expired / beyond-horizon rows dropped un-emitted.
cycle_duration: HistogramPer-cycle processing duration.
checkpoint_duration: HistogramCheckpoint cycle duration.
checkpoint_pipeline_stall_duration: HistogramPipeline stall per barrier: time the pipeline task is blocked by a checkpoint (shuffle alignment + state capture + the Aligned resume gate), excluding the background durable tail.
checkpoint_restorable_gate_wait: HistogramTime the leader’s restorable gate spends polling for vnode partials (failed gates that burn the timeout are observed too). When this dominates restorable latency at production cadence, the push-driven upload-completion-ack follow-up is worth building.
checkpoint_unchanged_vnodes: IntCounterVnode partials written as references to an unchanged base instead of re-uploading state.
sink_precommit_duration: HistogramSink pre-commit round-trip (2PC phase 1).
sink_commit_duration: HistogramSink commit round-trip (2PC phase 2).
lookup_cache_hits: IntCounterVecOn-demand lookup cache hits (served without a source fetch). Label: table.
lookup_cache_misses: IntCounterVecOn-demand lookup cache misses (not in cache). Label: table.
lookup_source_errors: IntCounterVecOn-demand lookup source fetch errors/timeouts. Label: table.
lookup_in_flight_rows: IntGaugeVecOn-demand lookup rows awaiting a source fetch. Label: table.
remote_subscription_batches_dropped: IntCounterOutput batches dropped when a remote subscriber’s routing queue is full (cluster mode, best-effort delivery under backpressure).
placement_vnodes_per_domain: IntGaugeVecVnodes owned per failure domain (cluster mode). Label: domain.
placement_blast_radius_ratio: GaugeLargest single domain’s share of all vnodes ([0, 1]) — the blast radius.
Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for EngineMetrics
impl !UnwindSafe for EngineMetrics
impl Freeze for EngineMetrics
impl Send for EngineMetrics
impl Sync for EngineMetrics
impl Unpin for EngineMetrics
impl UnsafeUnpin for EngineMetrics
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
U: Sized,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more§impl<T> AsAny for T
impl<T> AsAny for T
§fn any_ref(&self) -> &(dyn Any + Sync + Send + 'static)
fn any_ref(&self) -> &(dyn Any + Sync + Send + 'static)
dyn Any reference to the object: Read more§fn as_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>
fn as_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>
Arc<dyn Any> reference to the object: Read more§fn into_any(self: Box<T>) -> Box<dyn Any + Sync + Send>
fn into_any(self: Box<T>) -> Box<dyn Any + Sync + Send>
Box<dyn Any>: Read more§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
std::any::type_name, since Any does not provide it and
Any::type_id is useless as a debugging aid (its Debug is just a mess of hex digits).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<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Any.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T> MaybeSend for Twhere
T: Send,
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.