mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 08:51:09 +00:00
Add Prometheus timers to the subsystems (#1923)
* reexport prometheus-super for ease of use of other subsystems * add some prometheus timers for collation generation subsystem * add timing metrics to av-store * add metrics to candidate backing * add timing metric to bitfield signing * add timing metrics to candidate selection * add timing metrics to candidate-validation * add timing metrics to chain-api * add timing metrics to provisioner * add timing metrics to runtime-api * add timing metrics to availability-distribution * add timing metrics to bitfield-distribution * add timing metrics to collator protocol: collator side * add timing metrics to collator protocol: validator side * fix candidate validation test failures * add timing metrics to pov distribution * add timing metrics to statement-distribution * use substrate_prometheus_endpoint prometheus reexport instead of prometheus_super * don't include JOB_DELAY in bitfield-signing metrics * give adder-collator ability to easily export its genesis-state and validation code * wip: adder-collator pushbutton script * don't attempt to register the adder-collator automatically Instead, get these values with ```sh target/release/adder-collator export-genesis-state target/release/adder-collator export-genesis-wasm ``` And then register the parachain on https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A9944#/explorer To collect prometheus data, after running the script, create `prometheus.yml` per the instructions at https://www.notion.so/paritytechnologies/Setting-up-Prometheus-locally-835cb3a9df7541a781c381006252b5ff and then run: ```sh docker run -v `pwd`/prometheus.yml:/etc/prometheus/prometheus.yml:z --network host prom/prometheus ``` Demonstrates that data makes it across to prometheus, though it is likely to be useful in the future to tweak the buckets. * Update parachain/test-parachains/adder/collator/src/cli.rs Co-authored-by: Andronik Ordian <write@reusable.software> * use the grandpa-pause parameter * skip metrics in tracing instrumentation * remove unnecessary grandpa_pause cli param Co-authored-by: Andronik Ordian <write@reusable.software>
This commit is contained in:
committed by
GitHub
parent
e49989971d
commit
0a5bc82529
@@ -385,6 +385,8 @@ async fn handle_our_view_change<Context>(
|
||||
where
|
||||
Context: SubsystemContext<Message = AvailabilityDistributionMessage>,
|
||||
{
|
||||
let _timer = metrics.time_handle_our_view_change();
|
||||
|
||||
let old_view = std::mem::replace(&mut (state.view), view);
|
||||
|
||||
// needed due to borrow rules
|
||||
@@ -651,6 +653,8 @@ async fn process_incoming_peer_message<Context>(
|
||||
where
|
||||
Context: SubsystemContext<Message = AvailabilityDistributionMessage>,
|
||||
{
|
||||
let _timer = metrics.time_process_incoming_peer_message();
|
||||
|
||||
// obtain the set of candidates we are interested in based on our current view
|
||||
let live_candidates = state.cached_live_candidates_unioned(state.view.0.iter());
|
||||
|
||||
@@ -1180,6 +1184,8 @@ where
|
||||
#[derive(Clone)]
|
||||
struct MetricsInner {
|
||||
gossipped_availability_chunks: prometheus::Counter<prometheus::U64>,
|
||||
handle_our_view_change: prometheus::Histogram,
|
||||
process_incoming_peer_message: prometheus::Histogram,
|
||||
}
|
||||
|
||||
/// Availability Distribution metrics.
|
||||
@@ -1192,6 +1198,16 @@ impl Metrics {
|
||||
metrics.gossipped_availability_chunks.inc();
|
||||
}
|
||||
}
|
||||
|
||||
/// Provide a timer for `handle_our_view_change` which observes on drop.
|
||||
fn time_handle_our_view_change(&self) -> Option<metrics::prometheus::prometheus::HistogramTimer> {
|
||||
self.0.as_ref().map(|metrics| metrics.handle_our_view_change.start_timer())
|
||||
}
|
||||
|
||||
/// Provide a timer for `process_incoming_peer_message` which observes on drop.
|
||||
fn time_process_incoming_peer_message(&self) -> Option<metrics::prometheus::prometheus::HistogramTimer> {
|
||||
self.0.as_ref().map(|metrics| metrics.process_incoming_peer_message.start_timer())
|
||||
}
|
||||
}
|
||||
|
||||
impl metrics::Metrics for Metrics {
|
||||
@@ -1206,6 +1222,24 @@ impl metrics::Metrics for Metrics {
|
||||
)?,
|
||||
registry,
|
||||
)?,
|
||||
handle_our_view_change: prometheus::register(
|
||||
prometheus::Histogram::with_opts(
|
||||
prometheus::HistogramOpts::new(
|
||||
"parachain_availability_distribution_handle_our_view_change",
|
||||
"Time spent within `availability_distribution::handle_our_view_change`",
|
||||
)
|
||||
)?,
|
||||
registry,
|
||||
)?,
|
||||
process_incoming_peer_message: prometheus::register(
|
||||
prometheus::Histogram::with_opts(
|
||||
prometheus::HistogramOpts::new(
|
||||
"parachain_availability_distribution_process_incoming_peer_message",
|
||||
"Time spent within `availability_distribution::process_incoming_peer_message`",
|
||||
)
|
||||
)?,
|
||||
registry,
|
||||
)?,
|
||||
};
|
||||
Ok(Metrics(Some(metrics)))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user