From 500a98b6b605d25a9538f2d6d3b7eb955e8368da Mon Sep 17 00:00:00 2001 From: jonesho <81145364+jonesho@users.noreply.github.com> Date: Tue, 10 Sep 2024 19:57:04 +0800 Subject: [PATCH] feat: exported metrics for current finalized and safe block number (#7592) * feat: exported metrics for current finalized and safe block number Signed-off-by: Jones Ho * Update ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/DefaultBlockchain.java Co-authored-by: Fabio Di Fabio Signed-off-by: jonesho <81145364+jonesho@users.noreply.github.com> * Update ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/DefaultBlockchain.java Co-authored-by: Fabio Di Fabio Signed-off-by: jonesho <81145364+jonesho@users.noreply.github.com> * fix: spotless issue Signed-off-by: Jones Ho --------- Signed-off-by: Jones Ho Signed-off-by: jonesho <81145364+jonesho@users.noreply.github.com> Co-authored-by: Fabio Di Fabio --- .../ethereum/chain/DefaultBlockchain.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/DefaultBlockchain.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/DefaultBlockchain.java index 5849f3e676c..1b210490740 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/DefaultBlockchain.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/DefaultBlockchain.java @@ -122,6 +122,18 @@ private DefaultBlockchain( "The current height of the canonical chain", this::getChainHeadBlockNumber); + metricsSystem.createLongGauge( + BesuMetricCategory.ETHEREUM, + "blockchain_finalized_block", + "The current finalized block number", + this::getFinalizedBlockNumber); + + metricsSystem.createLongGauge( + BesuMetricCategory.ETHEREUM, + "blockchain_safe_block", + "The current safe block number", + this::getSafeBlockNumber); + metricsSystem.createGauge( BesuMetricCategory.BLOCKCHAIN, "difficulty_total", @@ -759,6 +771,14 @@ public void setSafeBlock(final Hash blockHash) { updater.commit(); } + private long getFinalizedBlockNumber() { + return this.getFinalized().flatMap(this::getBlockHeader).map(BlockHeader::getNumber).orElse(0L); + } + + private long getSafeBlockNumber() { + return this.getSafeBlock().flatMap(this::getBlockHeader).map(BlockHeader::getNumber).orElse(0L); + } + private void updateCacheForNewCanonicalHead(final Block block, final Difficulty uInt256) { chainHeader = block.getHeader(); totalDifficulty = uInt256;