diff options
Diffstat (limited to 'src/go/collectors/go.d.plugin/modules/geth/collect.go')
-rw-r--r-- | src/go/collectors/go.d.plugin/modules/geth/collect.go | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/geth/collect.go b/src/go/collectors/go.d.plugin/modules/geth/collect.go new file mode 100644 index 000000000..dfdf54946 --- /dev/null +++ b/src/go/collectors/go.d.plugin/modules/geth/collect.go @@ -0,0 +1,92 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package geth + +import ( + "github.com/netdata/netdata/go/go.d.plugin/pkg/prometheus" + "github.com/netdata/netdata/go/go.d.plugin/pkg/stm" +) + +func (g *Geth) collect() (map[string]int64, error) { + pms, err := g.prom.ScrapeSeries() + if err != nil { + return nil, err + } + mx := g.collectGeth(pms) + + return stm.ToMap(mx), nil +} + +func (g *Geth) collectGeth(pms prometheus.Series) map[string]float64 { + mx := make(map[string]float64) + g.collectChainData(mx, pms) + g.collectP2P(mx, pms) + g.collectTxPool(mx, pms) + g.collectRpc(mx, pms) + return mx +} + +func (g *Geth) collectChainData(mx map[string]float64, pms prometheus.Series) { + pms = pms.FindByNames( + chainValidation, + chainWrite, + ethDbChainDataAncientRead, + ethDbChainDataAncientWrite, + ethDbChaindataDiskRead, + ethDbChainDataDiskWrite, + chainHeadBlock, + chainHeadHeader, + chainHeadReceipt, + ethDbChainDataAncientSize, + ethDbChainDataDiskSize, + reorgsAdd, + reorgsDropped, + reorgsExecuted, + goRoutines, + ) + g.collectEth(mx, pms) + +} + +func (g *Geth) collectRpc(mx map[string]float64, pms prometheus.Series) { + pms = pms.FindByNames( + rpcRequests, + rpcSuccess, + rpcFailure, + ) + g.collectEth(mx, pms) +} + +func (g *Geth) collectTxPool(mx map[string]float64, pms prometheus.Series) { + pms = pms.FindByNames( + txPoolInvalid, + txPoolPending, + txPoolLocal, + txPoolPendingDiscard, + txPoolNofunds, + txPoolPendingRatelimit, + txPoolPendingReplace, + txPoolQueuedDiscard, + txPoolQueuedEviction, + txPoolQueuedEviction, + txPoolQueuedRatelimit, + ) + g.collectEth(mx, pms) +} + +func (g *Geth) collectP2P(mx map[string]float64, pms prometheus.Series) { + pms = pms.FindByNames( + p2pDials, + p2pEgress, + p2pIngress, + p2pPeers, + p2pServes, + ) + g.collectEth(mx, pms) +} + +func (g *Geth) collectEth(mx map[string]float64, pms prometheus.Series) { + for _, pm := range pms { + mx[pm.Name()] += pm.Value + } +} |