github.com/netdata/go.d.plugin@v0.58.1/modules/geth/collect.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package geth 4 5 import ( 6 "github.com/netdata/go.d.plugin/pkg/prometheus" 7 "github.com/netdata/go.d.plugin/pkg/stm" 8 ) 9 10 func (g *Geth) collect() (map[string]int64, error) { 11 pms, err := g.prom.ScrapeSeries() 12 if err != nil { 13 return nil, err 14 } 15 mx := g.collectGeth(pms) 16 17 return stm.ToMap(mx), nil 18 } 19 20 func (g *Geth) collectGeth(pms prometheus.Series) map[string]float64 { 21 mx := make(map[string]float64) 22 g.collectChainData(mx, pms) 23 g.collectP2P(mx, pms) 24 g.collectTxPool(mx, pms) 25 g.collectRpc(mx, pms) 26 return mx 27 } 28 29 func (g *Geth) collectChainData(mx map[string]float64, pms prometheus.Series) { 30 pms = pms.FindByNames( 31 chainValidation, 32 chainWrite, 33 ethDbChainDataAncientRead, 34 ethDbChainDataAncientWrite, 35 ethDbChaindataDiskRead, 36 ethDbChainDataDiskWrite, 37 chainHeadBlock, 38 chainHeadHeader, 39 chainHeadReceipt, 40 ethDbChainDataAncientSize, 41 ethDbChainDataDiskSize, 42 reorgsAdd, 43 reorgsDropped, 44 reorgsExecuted, 45 goRoutines, 46 ) 47 g.collectEth(mx, pms) 48 49 } 50 51 func (g *Geth) collectRpc(mx map[string]float64, pms prometheus.Series) { 52 pms = pms.FindByNames( 53 rpcRequests, 54 rpcSuccess, 55 rpcFailure, 56 ) 57 g.collectEth(mx, pms) 58 } 59 60 func (g *Geth) collectTxPool(mx map[string]float64, pms prometheus.Series) { 61 pms = pms.FindByNames( 62 txPoolInvalid, 63 txPoolPending, 64 txPoolLocal, 65 txPoolPendingDiscard, 66 txPoolNofunds, 67 txPoolPendingRatelimit, 68 txPoolPendingReplace, 69 txPoolQueuedDiscard, 70 txPoolQueuedEviction, 71 txPoolQueuedEviction, 72 txPoolQueuedRatelimit, 73 ) 74 g.collectEth(mx, pms) 75 } 76 77 func (g *Geth) collectP2P(mx map[string]float64, pms prometheus.Series) { 78 pms = pms.FindByNames( 79 p2pDials, 80 p2pEgress, 81 p2pIngress, 82 p2pPeers, 83 p2pServes, 84 ) 85 g.collectEth(mx, pms) 86 } 87 88 func (g *Geth) collectEth(mx map[string]float64, pms prometheus.Series) { 89 for _, pm := range pms { 90 mx[pm.Name()] += pm.Value 91 } 92 }