Skip to content

Commit b94e0ac

Browse files
committed
Add metrics for RPC failures
1 parent d97f24f commit b94e0ac

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/metrics.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use prometheus::{IntGauge, Opts, Registry};
66
pub struct Metrics {
77
pub rpc_requests: Arc<IntGauge>,
88
pub blocks_added: Arc<IntGauge>,
9+
pub failed_rpc_requests: Arc<IntGauge>,
910
pub registry: Arc<Registry>,
1011
}
1112

@@ -21,17 +22,26 @@ impl Metrics {
2122
"The number of blocks added to the index",
2223
))
2324
.expect("Invalid blocks_added gauge definition");
25+
let failed_rpc_requests = IntGauge::with_opts(Opts::new(
26+
"failed_rpc_requests",
27+
"The number of requests made to the RPC node that have received an error response",
28+
))
29+
.expect("Invalid rpc_requests gauge definition");
2430
let registry = Registry::new();
2531
registry
2632
.register(Box::new(rpc_requests.clone()))
2733
.expect("Invalid metrics registry definition");
2834
registry
2935
.register(Box::new(blocks_added.clone()))
3036
.expect("Invalid metrics registry definition");
37+
registry
38+
.register(Box::new(failed_rpc_requests.clone()))
39+
.expect("Invalid metrics registry definition");
3140

3241
Self {
3342
rpc_requests: Arc::new(rpc_requests),
3443
blocks_added: Arc::new(blocks_added),
44+
failed_rpc_requests: Arc::new(failed_rpc_requests),
3545
registry: Arc::new(registry),
3646
}
3747
}

src/services/blockchain.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ impl BlockchainService {
4949
client: AnyClient::new(rpc).await?,
5050
};
5151
while let Some(header) =
52-
this.client.block_headers().await?.next().await
52+
this.client.block_headers().await.inspect_err(|e| error!("Failed to acquire block header stream from RPC: {e:?}"))?.next().await
5353
{
5454
metrics.rpc_requests.inc();
5555
let block = this
@@ -59,7 +59,7 @@ impl BlockchainService {
5959
header.hash,
6060
alloy::rpc::types::BlockTransactionsKind::Full,
6161
)
62-
.await?
62+
.await.inspect_err(|e| {error!("Failed to retrieve block by hash from RPC: {e:?}"); metrics.failed_rpc_requests.inc();})?
6363
.ok_or(eyre!("No such block"))?;
6464
db.add_block(&block).inspect_err(|e| {
6565
error!("Failed to write block to database: {e:?}")

0 commit comments

Comments
 (0)