Skip to content

Commit f4781c2

Browse files
chore(starknet_sequencer_metrics): add metric counter fns
commit-id:bc7ca07b
1 parent b731cac commit f4781c2

File tree

6 files changed

+72
-66
lines changed

6 files changed

+72
-66
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/starknet_batcher/src/batcher.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::collections::{HashMap, HashSet};
22
use std::sync::Arc;
33

44
use blockifier::state::contract_class_manager::ContractClassManager;
5-
use metrics::{counter, gauge};
5+
use metrics::gauge;
66
#[cfg(test)]
77
use mockall::automock;
88
use papyrus_storage::state::{StateStorageReader, StateStorageWriter};
@@ -49,7 +49,12 @@ use crate::block_builder::{
4949
BlockMetadata,
5050
};
5151
use crate::config::BatcherConfig;
52-
use crate::metrics::{register_metrics, ProposalMetricsHandle};
52+
use crate::metrics::{
53+
register_metrics,
54+
ProposalMetricsHandle,
55+
BATCHED_TRANSACTIONS,
56+
REJECTED_TRANSACTIONS,
57+
};
5358
use crate::transaction_provider::{ProposeTransactionProvider, ValidateTransactionProvider};
5459
use crate::utils::{
5560
deadline_as_instant,
@@ -443,8 +448,8 @@ impl Batcher {
443448
block_execution_artifacts.rejected_tx_hashes,
444449
)
445450
.await?;
446-
counter!(crate::metrics::BATCHED_TRANSACTIONS.name).increment(n_txs);
447-
counter!(crate::metrics::REJECTED_TRANSACTIONS.name).increment(n_rejected_txs);
451+
BATCHED_TRANSACTIONS.increment(n_txs);
452+
REJECTED_TRANSACTIONS.increment(n_rejected_txs);
448453
Ok(DecisionReachedResponse {
449454
state_diff,
450455
l2_gas_used: block_execution_artifacts.l2_gas_used,

crates/starknet_batcher/src/batcher_test.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ use crate::block_builder::{
4747
MockBlockBuilderFactoryTrait,
4848
};
4949
use crate::config::BatcherConfig;
50+
use crate::metrics::{
51+
BATCHED_TRANSACTIONS,
52+
PROPOSAL_ABORTED,
53+
PROPOSAL_FAILED,
54+
PROPOSAL_STARTED,
55+
PROPOSAL_SUCCEEDED,
56+
REJECTED_TRANSACTIONS,
57+
};
5058
use crate::test_utils::{test_txs, FakeProposeBlockBuilder, FakeValidateBlockBuilder};
5159

5260
const INITIAL_HEIGHT: BlockNumber = BlockNumber(3);
@@ -198,10 +206,10 @@ fn assert_proposal_metrics(
198206
let n_expected_active_proposals =
199207
expected_started - (expected_succeeded + expected_failed + expected_aborted);
200208
assert!(n_expected_active_proposals <= 1);
201-
let started = parse_numeric_metric::<u64>(metrics, crate::metrics::PROPOSAL_STARTED.name);
202-
let succeeded = parse_numeric_metric::<u64>(metrics, crate::metrics::PROPOSAL_SUCCEEDED.name);
203-
let failed = parse_numeric_metric::<u64>(metrics, crate::metrics::PROPOSAL_FAILED.name);
204-
let aborted = parse_numeric_metric::<u64>(metrics, crate::metrics::PROPOSAL_ABORTED.name);
209+
let started = PROPOSAL_STARTED.parse_numeric_metric::<u64>(metrics);
210+
let succeeded = PROPOSAL_SUCCEEDED.parse_numeric_metric::<u64>(metrics);
211+
let failed = PROPOSAL_FAILED.parse_numeric_metric::<u64>(metrics);
212+
let aborted = PROPOSAL_ABORTED.parse_numeric_metric::<u64>(metrics);
205213

206214
assert_eq!(
207215
started,
@@ -786,11 +794,11 @@ async fn decision_reached() {
786794
Some(INITIAL_HEIGHT.unchecked_next().0)
787795
);
788796
assert_eq!(
789-
parse_numeric_metric::<usize>(&metrics, crate::metrics::BATCHED_TRANSACTIONS.name),
797+
BATCHED_TRANSACTIONS.parse_numeric_metric::<usize>(&metrics),
790798
Some(expected_artifacts.execution_infos.len())
791799
);
792800
assert_eq!(
793-
parse_numeric_metric::<usize>(&metrics, crate::metrics::REJECTED_TRANSACTIONS.name),
801+
REJECTED_TRANSACTIONS.parse_numeric_metric::<usize>(&metrics),
794802
Some(expected_artifacts.rejected_tx_hashes.len())
795803
);
796804
}
Lines changed: 24 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use metrics::{counter, describe_counter, describe_gauge, gauge};
1+
use metrics::{describe_gauge, gauge};
22
use starknet_api::block::BlockNumber;
33
use starknet_sequencer_metrics::metrics::{MetricCounter, MetricGauge};
44

@@ -9,59 +9,36 @@ pub const STORAGE_HEIGHT: MetricGauge = MetricGauge {
99
};
1010

1111
// Proposal metrics.
12-
pub const PROPOSAL_STARTED: MetricCounter = MetricCounter {
13-
name: "batcher_proposal_started",
14-
description: "Counter of proposals started",
15-
initial_value: 0,
16-
};
17-
pub const PROPOSAL_SUCCEEDED: MetricCounter = MetricCounter {
18-
name: "batcher_proposal_succeeded",
19-
description: "Counter of successful proposals",
20-
initial_value: 0,
21-
};
22-
pub const PROPOSAL_FAILED: MetricCounter = MetricCounter {
23-
name: "batcher_proposal_failed",
24-
description: "Counter of failed proposals",
25-
initial_value: 0,
26-
};
27-
pub const PROPOSAL_ABORTED: MetricCounter = MetricCounter {
28-
name: "batcher_proposal_aborted",
29-
description: "Counter of aborted proposals",
30-
initial_value: 0,
31-
};
12+
pub const PROPOSAL_STARTED: MetricCounter =
13+
MetricCounter::new("batcher_proposal_started", "Counter of proposals started", 0);
14+
pub const PROPOSAL_SUCCEEDED: MetricCounter =
15+
MetricCounter::new("batcher_proposal_succeeded", "Counter of successful proposals", 0);
16+
pub const PROPOSAL_FAILED: MetricCounter =
17+
MetricCounter::new("batcher_proposal_failed", "Counter of failed proposals", 0);
18+
pub const PROPOSAL_ABORTED: MetricCounter =
19+
MetricCounter::new("batcher_proposal_aborted", "Counter of aborted proposals", 0);
3220

3321
// Transaction metrics.
34-
pub const BATCHED_TRANSACTIONS: MetricCounter = MetricCounter {
35-
name: "batcher_batched_transactions",
36-
description: "Counter of batched transactions",
37-
initial_value: 0,
38-
};
39-
pub const REJECTED_TRANSACTIONS: MetricCounter = MetricCounter {
40-
name: "batcher_rejected_transactions",
41-
description: "Counter of rejected transactions",
42-
initial_value: 0,
43-
};
22+
pub const BATCHED_TRANSACTIONS: MetricCounter =
23+
MetricCounter::new("batcher_batched_transactions", "Counter of batched transactions", 0);
24+
pub const REJECTED_TRANSACTIONS: MetricCounter =
25+
MetricCounter::new("batcher_rejected_transactions", "Counter of rejected transactions", 0);
4426

4527
pub fn register_metrics(storage_height: BlockNumber) {
4628
let storage_height_metric = gauge!(STORAGE_HEIGHT.name);
4729
describe_gauge!(STORAGE_HEIGHT.name, STORAGE_HEIGHT.description);
4830
#[allow(clippy::as_conversions)]
4931
storage_height_metric.set(storage_height.0 as f64);
5032

51-
counter!(PROPOSAL_STARTED.name).absolute(PROPOSAL_STARTED.initial_value);
52-
describe_counter!(PROPOSAL_STARTED.name, PROPOSAL_STARTED.description);
53-
counter!(PROPOSAL_SUCCEEDED.name).absolute(PROPOSAL_STARTED.initial_value);
54-
describe_counter!(PROPOSAL_SUCCEEDED.name, PROPOSAL_SUCCEEDED.description);
55-
counter!(PROPOSAL_FAILED.name).absolute(PROPOSAL_STARTED.initial_value);
56-
describe_counter!(PROPOSAL_FAILED.name, PROPOSAL_FAILED.description);
57-
counter!(PROPOSAL_ABORTED.name).absolute(PROPOSAL_STARTED.initial_value);
58-
describe_counter!(PROPOSAL_ABORTED.name, PROPOSAL_ABORTED.description);
33+
PROPOSAL_STARTED.register();
34+
PROPOSAL_STARTED.register();
35+
PROPOSAL_SUCCEEDED.register();
36+
PROPOSAL_FAILED.register();
37+
PROPOSAL_ABORTED.register();
5938

6039
// In case of revert, consider calling `absolute`.
61-
counter!(BATCHED_TRANSACTIONS.name).absolute(PROPOSAL_STARTED.initial_value);
62-
describe_counter!(BATCHED_TRANSACTIONS.name, BATCHED_TRANSACTIONS.description);
63-
counter!(REJECTED_TRANSACTIONS.name).absolute(PROPOSAL_STARTED.initial_value);
64-
describe_counter!(REJECTED_TRANSACTIONS.name, REJECTED_TRANSACTIONS.description);
40+
BATCHED_TRANSACTIONS.register();
41+
REJECTED_TRANSACTIONS.register();
6542
}
6643

6744
/// A handle to update the proposal metrics when the proposal is created and dropped.
@@ -72,7 +49,7 @@ pub(crate) struct ProposalMetricsHandle {
7249

7350
impl ProposalMetricsHandle {
7451
pub fn new() -> Self {
75-
counter!(crate::metrics::PROPOSAL_STARTED.name).increment(1);
52+
PROPOSAL_STARTED.increment(1);
7653
Self { finish_status: ProposalFinishStatus::Failed }
7754
}
7855

@@ -95,15 +72,9 @@ enum ProposalFinishStatus {
9572
impl Drop for ProposalMetricsHandle {
9673
fn drop(&mut self) {
9774
match self.finish_status {
98-
ProposalFinishStatus::Succeeded => {
99-
counter!(crate::metrics::PROPOSAL_SUCCEEDED.name).increment(1)
100-
}
101-
ProposalFinishStatus::Aborted => {
102-
counter!(crate::metrics::PROPOSAL_ABORTED.name).increment(1)
103-
}
104-
ProposalFinishStatus::Failed => {
105-
counter!(crate::metrics::PROPOSAL_FAILED.name).increment(1)
106-
}
75+
ProposalFinishStatus::Succeeded => PROPOSAL_SUCCEEDED.increment(1),
76+
ProposalFinishStatus::Aborted => PROPOSAL_ABORTED.increment(1),
77+
ProposalFinishStatus::Failed => PROPOSAL_FAILED.increment(1),
10778
}
10879
}
10980
}

crates/starknet_sequencer_metrics/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ testing = []
1313
workspace = true
1414

1515
[dependencies]
16+
metrics.workspace = true
1617
num-traits.workspace = true
1718
regex.workspace = true

crates/starknet_sequencer_metrics/src/metrics.rs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,32 @@
11
use std::str::FromStr;
22

3+
use metrics::{counter, describe_counter};
34
use num_traits::Num;
45
use regex::{escape, Regex};
56

67
pub struct MetricCounter {
7-
pub name: &'static str,
8-
pub description: &'static str,
9-
pub initial_value: u64,
8+
name: &'static str,
9+
description: &'static str,
10+
initial_value: u64,
11+
}
12+
13+
impl MetricCounter {
14+
pub const fn new(name: &'static str, description: &'static str, initial_value: u64) -> Self {
15+
Self { name, description, initial_value }
16+
}
17+
18+
pub fn register(&self) {
19+
counter!(self.name).absolute(self.initial_value);
20+
describe_counter!(self.name, self.description);
21+
}
22+
23+
pub fn increment(&self, value: u64) {
24+
counter!(self.name).increment(value);
25+
}
26+
27+
pub fn parse_numeric_metric<T: Num + FromStr>(&self, metrics_as_string: &str) -> Option<T> {
28+
parse_numeric_metric::<T>(metrics_as_string, self.name)
29+
}
1030
}
1131

1232
pub struct MetricGauge {

0 commit comments

Comments
 (0)