diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 29cb54d20..2ca8a29d8 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -118,6 +118,7 @@ Friendly reminder: We have a [bug bounty program](https://hackerone.com/tendermi - [crypto/merkle] \#6443 Improve HashAlternatives performance (@cuonglm) - [crypto/merkle] \#6513 Optimize HashAlternatives (@marbar3778) - [p2p/pex] \#6509 Improve addrBook.hash performance (@cuonglm) +- [consensus/metrics] \#6549 Change block_size gauge to a histogram for better observability over time (@marbar3778) ### BUG FIXES diff --git a/internal/consensus/metrics.go b/internal/consensus/metrics.go index bbd823a3f..a4f56f631 100644 --- a/internal/consensus/metrics.go +++ b/internal/consensus/metrics.go @@ -48,7 +48,7 @@ type Metrics struct { // Number of transactions. NumTxs metrics.Gauge // Size of the block. - BlockSizeBytes metrics.Gauge + BlockSizeBytes metrics.Histogram // Total number of transactions. TotalTxs metrics.Gauge // The latest block height. @@ -150,7 +150,7 @@ func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics { Name: "num_txs", Help: "Number of transactions.", }, labels).With(labelsAndValues...), - BlockSizeBytes: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{ + BlockSizeBytes: prometheus.NewHistogramFrom(stdprometheus.HistogramOpts{ Namespace: namespace, Subsystem: MetricsSubsystem, Name: "block_size_bytes", @@ -210,7 +210,7 @@ func NopMetrics() *Metrics { BlockIntervalSeconds: discard.NewHistogram(), NumTxs: discard.NewGauge(), - BlockSizeBytes: discard.NewGauge(), + BlockSizeBytes: discard.NewHistogram(), TotalTxs: discard.NewGauge(), CommittedHeight: discard.NewGauge(), FastSyncing: discard.NewGauge(), diff --git a/internal/consensus/state.go b/internal/consensus/state.go index 0f0d80899..560be4d30 100644 --- a/internal/consensus/state.go +++ b/internal/consensus/state.go @@ -1809,7 +1809,7 @@ func (cs *State) recordMetrics(height int64, block *types.Block) { cs.metrics.NumTxs.Set(float64(len(block.Data.Txs))) cs.metrics.TotalTxs.Add(float64(len(block.Data.Txs))) - cs.metrics.BlockSizeBytes.Set(float64(block.Size())) + cs.metrics.BlockSizeBytes.Observe(float64(block.Size())) cs.metrics.CommittedHeight.Set(float64(block.Height)) }