mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-25 14:16:44 +00:00
register metrics
Signed-off-by: jsvisa <delweng@gmail.com>
This commit is contained in:
parent
34fe4861fd
commit
410f569c9d
2 changed files with 40 additions and 34 deletions
|
|
@ -294,37 +294,7 @@ func New(file string, cache int, handles int, namespace string, readonly bool) (
|
|||
return nil, err
|
||||
}
|
||||
db.db = innerDB
|
||||
|
||||
db.compTimeMeter = metrics.GetOrRegisterMeter(namespace+"compact/time", nil)
|
||||
db.compReadMeter = metrics.GetOrRegisterMeter(namespace+"compact/input", nil)
|
||||
db.compWriteMeter = metrics.GetOrRegisterMeter(namespace+"compact/output", nil)
|
||||
db.diskSizeGauge = metrics.GetOrRegisterGauge(namespace+"disk/size", nil)
|
||||
db.diskReadMeter = metrics.GetOrRegisterMeter(namespace+"disk/read", nil)
|
||||
db.diskWriteMeter = metrics.GetOrRegisterMeter(namespace+"disk/write", nil)
|
||||
db.writeDelayMeter = metrics.GetOrRegisterMeter(namespace+"compact/writedelay/duration", nil)
|
||||
db.writeDelayNMeter = metrics.GetOrRegisterMeter(namespace+"compact/writedelay/counter", nil)
|
||||
db.memCompGauge = metrics.GetOrRegisterGauge(namespace+"compact/memory", nil)
|
||||
db.level0CompGauge = metrics.GetOrRegisterGauge(namespace+"compact/level0", nil)
|
||||
db.nonlevel0CompGauge = metrics.GetOrRegisterGauge(namespace+"compact/nonlevel0", nil)
|
||||
db.seekCompGauge = metrics.GetOrRegisterGauge(namespace+"compact/seek", nil)
|
||||
db.manualMemAllocGauge = metrics.GetOrRegisterGauge(namespace+"memory/manualalloc", nil)
|
||||
db.liveMemTablesGauge = metrics.GetOrRegisterGauge(namespace+"table/live", nil)
|
||||
db.zombieMemTablesGauge = metrics.GetOrRegisterGauge(namespace+"table/zombie", nil)
|
||||
db.blockCacheHitGauge = metrics.GetOrRegisterGauge(namespace+"cache/block/hit", nil)
|
||||
db.blockCacheMissGauge = metrics.GetOrRegisterGauge(namespace+"cache/block/miss", nil)
|
||||
db.tableCacheHitGauge = metrics.GetOrRegisterGauge(namespace+"cache/table/hit", nil)
|
||||
db.tableCacheMissGauge = metrics.GetOrRegisterGauge(namespace+"cache/table/miss", nil)
|
||||
db.filterHitGauge = metrics.GetOrRegisterGauge(namespace+"filter/hit", nil)
|
||||
db.filterMissGauge = metrics.GetOrRegisterGauge(namespace+"filter/miss", nil)
|
||||
db.estimatedCompDebtGauge = metrics.GetOrRegisterGauge(namespace+"compact/estimateDebt", nil)
|
||||
db.liveCompGauge = metrics.GetOrRegisterGauge(namespace+"compact/live/count", nil)
|
||||
db.liveCompSizeGauge = metrics.GetOrRegisterGauge(namespace+"compact/live/size", nil)
|
||||
db.readExistedCount = metrics.GetOrRegisterCounter(namespace+"read/existed/count", nil)
|
||||
db.readNotfoundCount = metrics.GetOrRegisterCounter(namespace+"read/notfound/count", nil)
|
||||
db.writeCount = metrics.GetOrRegisterCounter(namespace+"write/count", nil)
|
||||
db.readExistedTime = metrics.NewRegisteredResettingTimer(namespace+"read/existed/duration", nil)
|
||||
db.readNotfoundTime = metrics.NewRegisteredResettingTimer(namespace+"read/notfound/duration", nil)
|
||||
db.writeTime = metrics.NewRegisteredResettingTimer(namespace+"write/duration", nil)
|
||||
db.registerMetrics(namespace)
|
||||
|
||||
// Start up the metrics gathering and return
|
||||
go db.meter(metricsGatheringInterval, namespace)
|
||||
|
|
@ -521,6 +491,40 @@ func (d *Database) SyncKeyValue() error {
|
|||
return d.db.Apply(b, pebble.Sync)
|
||||
}
|
||||
|
||||
// registerMetrics registers the metrics for the database.
|
||||
func (d *Database) registerMetrics(namespace string) {
|
||||
d.compTimeMeter = metrics.GetOrRegisterMeter(namespace+"compact/time", nil)
|
||||
d.compReadMeter = metrics.GetOrRegisterMeter(namespace+"compact/input", nil)
|
||||
d.compWriteMeter = metrics.GetOrRegisterMeter(namespace+"compact/output", nil)
|
||||
d.diskSizeGauge = metrics.GetOrRegisterGauge(namespace+"disk/size", nil)
|
||||
d.diskReadMeter = metrics.GetOrRegisterMeter(namespace+"disk/read", nil)
|
||||
d.diskWriteMeter = metrics.GetOrRegisterMeter(namespace+"disk/write", nil)
|
||||
d.writeDelayMeter = metrics.GetOrRegisterMeter(namespace+"compact/writedelay/duration", nil)
|
||||
d.writeDelayNMeter = metrics.GetOrRegisterMeter(namespace+"compact/writedelay/counter", nil)
|
||||
d.memCompGauge = metrics.GetOrRegisterGauge(namespace+"compact/memory", nil)
|
||||
d.level0CompGauge = metrics.GetOrRegisterGauge(namespace+"compact/level0", nil)
|
||||
d.nonlevel0CompGauge = metrics.GetOrRegisterGauge(namespace+"compact/nonlevel0", nil)
|
||||
d.seekCompGauge = metrics.GetOrRegisterGauge(namespace+"compact/seek", nil)
|
||||
d.manualMemAllocGauge = metrics.GetOrRegisterGauge(namespace+"memory/manualalloc", nil)
|
||||
d.liveMemTablesGauge = metrics.GetOrRegisterGauge(namespace+"table/live", nil)
|
||||
d.zombieMemTablesGauge = metrics.GetOrRegisterGauge(namespace+"table/zombie", nil)
|
||||
d.blockCacheHitGauge = metrics.GetOrRegisterGauge(namespace+"cache/block/hit", nil)
|
||||
d.blockCacheMissGauge = metrics.GetOrRegisterGauge(namespace+"cache/block/miss", nil)
|
||||
d.tableCacheHitGauge = metrics.GetOrRegisterGauge(namespace+"cache/table/hit", nil)
|
||||
d.tableCacheMissGauge = metrics.GetOrRegisterGauge(namespace+"cache/table/miss", nil)
|
||||
d.filterHitGauge = metrics.GetOrRegisterGauge(namespace+"filter/hit", nil)
|
||||
d.filterMissGauge = metrics.GetOrRegisterGauge(namespace+"filter/miss", nil)
|
||||
d.estimatedCompDebtGauge = metrics.GetOrRegisterGauge(namespace+"compact/estimateDebt", nil)
|
||||
d.liveCompGauge = metrics.GetOrRegisterGauge(namespace+"compact/live/count", nil)
|
||||
d.liveCompSizeGauge = metrics.GetOrRegisterGauge(namespace+"compact/live/size", nil)
|
||||
d.readExistedCount = metrics.GetOrRegisterCounter(namespace+"read/existed/count", nil)
|
||||
d.readNotfoundCount = metrics.GetOrRegisterCounter(namespace+"read/notfound/count", nil)
|
||||
d.writeCount = metrics.GetOrRegisterCounter(namespace+"write/count", nil)
|
||||
d.readExistedTime = metrics.NewRegisteredResettingTimer(namespace+"read/existed/duration", nil)
|
||||
d.readNotfoundTime = metrics.NewRegisteredResettingTimer(namespace+"read/notfound/duration", nil)
|
||||
d.writeTime = metrics.NewRegisteredResettingTimer(namespace+"write/duration", nil)
|
||||
}
|
||||
|
||||
// meter periodically retrieves internal pebble counters and reports them to
|
||||
// the metrics subsystem.
|
||||
func (d *Database) meter(refresh time.Duration, namespace string) {
|
||||
|
|
|
|||
|
|
@ -29,15 +29,17 @@ import (
|
|||
func TestPebbleDB(t *testing.T) {
|
||||
t.Run("DatabaseSuite", func(t *testing.T) {
|
||||
dbtest.TestDatabaseSuite(t, func() ethdb.KeyValueStore {
|
||||
db, err := pebble.Open("", &pebble.Options{
|
||||
idb, err := pebble.Open("", &pebble.Options{
|
||||
FS: vfs.NewMem(),
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return &Database{
|
||||
db: db,
|
||||
db := &Database{
|
||||
db: idb,
|
||||
}
|
||||
db.registerMetrics("")
|
||||
return db
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue