pub struct MetricGroups {Show 15 fields
pub default: MetricLevel,
pub consensus: MetricLevel,
pub execution: MetricLevel,
pub checkpoints: MetricLevel,
pub transactions: MetricLevel,
pub authority: MetricLevel,
pub traffic_control: MetricLevel,
pub network: MetricLevel,
pub p2p: MetricLevel,
pub storage: MetricLevel,
pub rpc: MetricLevel,
pub epoch: MetricLevel,
pub runtime: MetricLevel,
pub hardware: MetricLevel,
pub overrides: BTreeMap<String, MetricLevel>,
}Expand description
Per-group verbosity levels for the node’s predefined Prometheus metric groups.
Fields§
§default: MetricLevelExposure threshold for metrics whose module belongs to no group.
consensus: MetricLevelConsensus and block production.
Modules: starfish_core, iota_core::consensus_adapter,
iota_core::consensus_manager, iota_core::consensus_validator,
iota_core::epoch::consensus_store_pruner.
execution: MetricLevelTransaction execution and caching, including the Move bytecode verifier and execution-limit meters.
Modules: iota_core::execution_cache, iota_core::global_state_hasher,
iota_core::module_cache_metrics, iota_types::metrics.
checkpoints: MetricLevelCheckpoint building, certification, and execution.
Modules: iota_core::checkpoints.
transactions: MetricLevelTransaction submission and finality.
Modules: iota_core::quorum_driver, iota_core::transaction_driver,
iota_core::transaction_orchestrator,
iota_core::validator_tx_finalizer.
Authority request handling and validation.
Modules: iota_core::authority (incl. the authority store and pruner),
iota_core::safe_client, iota_core::signature_verifier,
iota_core::validator_client_monitor. Also the authority_grpc_*
transport metrics of the validator gRPC server, matched by name prefix
because their module (iota_node::metrics) is shared with the epoch
group’s protocol-version gauges.
The iota_core::authority directive is a module-path prefix, so it also
covers the sibling modules iota_core::authority_aggregator,
iota_core::authority_client, and iota_core::authority_server.
traffic_control: MetricLevelSpam/abuse traffic control, including the transaction-deny config gauges.
Modules: iota_core::traffic_controller,
iota_config::node_config_metrics.
network: MetricLevelPeer-to-peer networking and state sync.
Modules: iota_network::discovery, iota_network::randomness,
iota_network::state_sync.
p2p: MetricLevelThe anemo P2P transport underneath the network group’s subsystems.
Kept separate from network because most of these are per-peer
(connection/RTT/packet-loss gauges) and therefore high-cardinality, so
they can be silenced independently.
Modules: iota_metrics::metrics_network.
storage: MetricLevelPersistent storage, including archive writes/reads and state snapshot
uploads. The authority object store is part of the authority group,
not this one.
Modules: typed_store, iota_storage, iota_snapshot.
rpc: MetricLevelAPI servers and RPC-facing indexes.
Modules: iota_json_rpc, iota_grpc_server, iota_graphql_rpc,
iota_core::jsonrpc_index, iota_core::subscription_handler.
epoch: MetricLevelEpoch reconfiguration and protocol versioning.
Modules: iota_core::epoch::epoch_metrics. Also the
iota_current/binary/configured_max_protocol_version gauges, matched by
name because their module (iota_node::metrics) is shared with the
authority group’s gRPC transport metrics.
runtime: MetricLevelAsync-runtime and process health: monitored tokio tasks, channels, and
scopes, per-runtime tokio scheduler metrics (tokio_runtime_*), thread
stalls, invariant violations, and tracing span latencies.
Modules: iota_metrics (except the hardware and p2p group
submodules), telemetry_subscribers.
hardware: MetricLevelHost hardware metrics (CPU / memory / disk). Individual hardware metrics cannot be given their own level.
Rendered as an iota_metrics::hardware_metrics directive, the module
where the collector is registered.
overrides: BTreeMap<String, MetricLevel>Free-form overrides for module paths or metric names, including ones
already covered by a named group: the most specific matching pattern
decides each metric (a metric-name match wins over a module match),
so an override can raise or lower a single module or metric within a
group. A default key is the same pattern as the default field and
replaces its level; likewise a group-name key expands to the group’s
patterns and replaces the group field’s level, as the same directive
would in METRICS_FILTER or the admin endpoint.
Implementations§
Source§impl MetricGroups
impl MetricGroups
Sourcepub fn startup_filter(&self, env: Option<&str>) -> (Filter, Vec<String>)
pub fn startup_filter(&self, env: Option<&str>) -> (Filter, Vec<String>)
Builds the startup metrics filter: these group levels with the env
directives merged over them. An env bare level replaces the group
directives entirely instead of merging, so METRICS_FILTER=trace
exposes everything whatever the groups configure.
Invalid env directives are dropped.
Matching uses the expanded module directives; the admin endpoint echoes the group-form strings, so each source keeps both.
Trait Implementations§
Source§impl Clone for MetricGroups
impl Clone for MetricGroups
Source§fn clone(&self) -> MetricGroups
fn clone(&self) -> MetricGroups
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MetricGroups
impl Debug for MetricGroups
Source§impl Default for MetricGroups
impl Default for MetricGroups
Source§impl<'de> Deserialize<'de> for MetricGroupswhere
MetricGroups: Default,
impl<'de> Deserialize<'de> for MetricGroupswhere
MetricGroups: Default,
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 MetricGroups
impl RefUnwindSafe for MetricGroups
impl Send for MetricGroups
impl Sync for MetricGroups
impl Unpin for MetricGroups
impl UnsafeUnpin for MetricGroups
impl UnwindSafe for MetricGroups
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§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>
§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 Request§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> 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.