summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/geth
diff options
context:
space:
mode:
Diffstat (limited to '')
l---------src/go/collectors/go.d.plugin/modules/geth/README.md1
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/charts.go220
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/collect.go92
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/config_schema.json177
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/geth.go108
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/geth_test.go30
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/init.go24
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/integrations/go-ethereum.md217
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/metadata.yaml291
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/metrics.go54
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/testdata/config.json20
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/testdata/config.yaml17
-rw-r--r--src/go/collectors/go.d.plugin/modules/geth/testdata/metrics_geth.txt1569
13 files changed, 2820 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/geth/README.md b/src/go/collectors/go.d.plugin/modules/geth/README.md
new file mode 120000
index 000000000..3a8eb0b68
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/README.md
@@ -0,0 +1 @@
+integrations/go-ethereum.md \ No newline at end of file
diff --git a/src/go/collectors/go.d.plugin/modules/geth/charts.go b/src/go/collectors/go.d.plugin/modules/geth/charts.go
new file mode 100644
index 000000000..316631739
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/charts.go
@@ -0,0 +1,220 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package geth
+
+import "github.com/netdata/netdata/go/go.d.plugin/agent/module"
+
+type (
+ Charts = module.Charts
+ Chart = module.Chart
+ Dims = module.Dims
+ Dim = module.Dim
+)
+
+var charts = Charts{
+ chartAncientChainData.Copy(),
+ chartChaindataDisk.Copy(),
+ chartAncientChainDataRate.Copy(),
+ chartChaindataDiskRate.Copy(),
+ chartChainDataSize.Copy(),
+ chartChainHead.Copy(),
+ chartP2PNetwork.Copy(),
+ chartNumberOfPeers.Copy(),
+ chartp2pDialsServes.Copy(),
+ chartReorgs.Copy(),
+ chartReorgsBlocks.Copy(),
+ chartGoRoutines.Copy(),
+ chartTxPoolCurrent.Copy(),
+ chartTxPoolQueued.Copy(),
+ chartTxPoolPending.Copy(),
+ chartRpcInformation.Copy(),
+}
+
+var (
+ chartAncientChainDataRate = Chart{
+ ID: "chaindata_ancient_rate",
+ Title: "Ancient Chaindata rate",
+ Units: "bytes/s",
+ Fam: "chaindata",
+ Ctx: "geth.eth_db_chaindata_ancient_io_rate",
+ Dims: Dims{
+ {ID: ethDbChainDataAncientRead, Name: "reads", Algo: "incremental"},
+ {ID: ethDbChainDataAncientWrite, Name: "writes", Mul: -1, Algo: "incremental"},
+ },
+ }
+
+ chartAncientChainData = Chart{
+ ID: "chaindata_ancient",
+ Title: "Session ancient Chaindata",
+ Units: "bytes",
+ Fam: "chaindata",
+ Ctx: "geth.eth_db_chaindata_ancient_io",
+ Dims: Dims{
+ {ID: ethDbChainDataAncientRead, Name: "reads"},
+ {ID: ethDbChainDataAncientWrite, Name: "writes", Mul: -1},
+ },
+ }
+ chartChaindataDisk = Chart{
+ ID: "chaindata_disk",
+ Title: "Session chaindata on disk",
+ Units: "bytes",
+ Fam: "chaindata",
+ Ctx: "geth.eth_db_chaindata_disk_io",
+ Dims: Dims{
+ {ID: ethDbChaindataDiskRead, Name: "reads"},
+ {ID: ethDbChainDataDiskWrite, Name: "writes", Mul: -1},
+ },
+ }
+ chartGoRoutines = Chart{
+ ID: "goroutines",
+ Title: "Number of goroutines",
+ Units: "goroutines",
+ Fam: "goroutines",
+ Ctx: "geth.goroutines",
+ Dims: Dims{
+ {ID: goRoutines, Name: "goroutines"},
+ },
+ }
+ chartChaindataDiskRate = Chart{
+ ID: "chaindata_disk_date",
+ Title: "On disk Chaindata rate",
+ Units: "bytes/s",
+ Fam: "chaindata",
+ Ctx: "geth.eth_db_chaindata_disk_io_rate",
+ Dims: Dims{
+ {ID: ethDbChaindataDiskRead, Name: "reads", Algo: "incremental"},
+ {ID: ethDbChainDataDiskWrite, Name: "writes", Mul: -1, Algo: "incremental"},
+ },
+ }
+ chartChainDataSize = Chart{
+ ID: "chaindata_db_size",
+ Title: "Chaindata Size",
+ Units: "bytes",
+ Fam: "chaindata",
+ Ctx: "geth.chaindata_db_size",
+ Dims: Dims{
+ {ID: ethDbChainDataDiskSize, Name: "levelDB"},
+ {ID: ethDbChainDataAncientSize, Name: "ancientDB"},
+ },
+ }
+ chartChainHead = Chart{
+ ID: "chainhead_overall",
+ Title: "Chainhead",
+ Units: "block",
+ Fam: "chainhead",
+ Ctx: "geth.chainhead",
+ Dims: Dims{
+ {ID: chainHeadBlock, Name: "block"},
+ {ID: chainHeadReceipt, Name: "receipt"},
+ {ID: chainHeadHeader, Name: "header"},
+ },
+ }
+ chartTxPoolPending = Chart{
+ ID: "txpoolpending",
+ Title: "Pending Transaction Pool",
+ Units: "transactions",
+ Fam: "tx_pool",
+ Ctx: "geth.tx_pool_pending",
+ Dims: Dims{
+ {ID: txPoolInvalid, Name: "invalid"},
+ {ID: txPoolPending, Name: "pending"},
+ {ID: txPoolLocal, Name: "local"},
+ {ID: txPoolPendingDiscard, Name: " discard"},
+ {ID: txPoolNofunds, Name: "no funds"},
+ {ID: txPoolPendingRatelimit, Name: "ratelimit"},
+ {ID: txPoolPendingReplace, Name: "replace"},
+ },
+ }
+ chartTxPoolCurrent = Chart{
+ ID: "txpoolcurrent",
+ Title: "Transaction Pool",
+ Units: "transactions",
+ Fam: "tx_pool",
+ Ctx: "geth.tx_pool_current",
+ Dims: Dims{
+ {ID: txPoolInvalid, Name: "invalid"},
+ {ID: txPoolPending, Name: "pending"},
+ {ID: txPoolLocal, Name: "local"},
+ {ID: txPoolNofunds, Name: "pool"},
+ },
+ }
+ chartTxPoolQueued = Chart{
+ ID: "txpoolqueued",
+ Title: "Queued Transaction Pool",
+ Units: "transactions",
+ Fam: "tx_pool",
+ Ctx: "geth.tx_pool_queued",
+ Dims: Dims{
+ {ID: txPoolQueuedDiscard, Name: "discard"},
+ {ID: txPoolQueuedEviction, Name: "eviction"},
+ {ID: txPoolQueuedNofunds, Name: "no_funds"},
+ {ID: txPoolQueuedRatelimit, Name: "ratelimit"},
+ },
+ }
+ chartP2PNetwork = Chart{
+ ID: "p2p_network",
+ Title: "P2P bandwidth",
+ Units: "bytes/s",
+ Fam: "p2p_bandwidth",
+ Ctx: "geth.p2p_bandwidth",
+ Dims: Dims{
+ {ID: p2pIngress, Name: "ingress", Algo: "incremental"},
+ {ID: p2pEgress, Name: "egress", Mul: -1, Algo: "incremental"},
+ },
+ }
+ chartReorgs = Chart{
+ ID: "reorgs_executed",
+ Title: "Executed Reorgs",
+ Units: "reorgs",
+ Fam: "reorgs",
+ Ctx: "geth.reorgs",
+ Dims: Dims{
+ {ID: reorgsExecuted, Name: "executed"},
+ },
+ }
+ chartReorgsBlocks = Chart{
+ ID: "reorgs_blocks",
+ Title: "Blocks Added/Removed from Reorg",
+ Units: "blocks",
+ Fam: "reorgs",
+ Ctx: "geth.reorgs_blocks",
+ Dims: Dims{
+ {ID: reorgsAdd, Name: "added"},
+ {ID: reorgsDropped, Name: "dropped"},
+ },
+ }
+
+ chartNumberOfPeers = Chart{
+ ID: "p2p_peers_number",
+ Title: "Number of Peers",
+ Units: "peers",
+ Fam: "p2p_peers",
+ Ctx: "geth.p2p_peers",
+ Dims: Dims{
+ {ID: p2pPeers, Name: "peers"},
+ },
+ }
+
+ chartp2pDialsServes = Chart{
+ ID: "p2p_dials_serves",
+ Title: "P2P Serves and Dials",
+ Units: "calls/s",
+ Fam: "p2p_peers",
+ Ctx: "geth.p2p_peers_calls",
+ Dims: Dims{
+ {ID: p2pDials, Name: "dials", Algo: "incremental"},
+ {ID: p2pServes, Name: "serves", Algo: "incremental"},
+ },
+ }
+ chartRpcInformation = Chart{
+ ID: "rpc_calls",
+ Title: "rpc calls",
+ Units: "calls/s",
+ Fam: "rpc",
+ Ctx: "geth.rpc_calls",
+ Dims: Dims{
+ {ID: rpcFailure, Name: "failed", Algo: "incremental"},
+ {ID: rpcSuccess, Name: "successful", Algo: "incremental"},
+ },
+ }
+)
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
+ }
+}
diff --git a/src/go/collectors/go.d.plugin/modules/geth/config_schema.json b/src/go/collectors/go.d.plugin/modules/geth/config_schema.json
new file mode 100644
index 000000000..3fd239e4f
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/config_schema.json
@@ -0,0 +1,177 @@
+{
+ "jsonSchema": {
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "Geth collector configuration.",
+ "type": "object",
+ "properties": {
+ "update_every": {
+ "title": "Update every",
+ "description": "Data collection interval, measured in seconds.",
+ "type": "integer",
+ "minimum": 1,
+ "default": 1
+ },
+ "url": {
+ "title": "URL",
+ "description": "The URL of the Geth [Prometheus endpoint](https://geth.ethereum.org/docs/monitoring/metrics).",
+ "type": "string",
+ "default": "http://127.0.0.1:6060/debug/metrics/prometheus",
+ "format": "uri"
+ },
+ "timeout": {
+ "title": "Timeout",
+ "description": "The timeout in seconds for the HTTP request.",
+ "type": "number",
+ "minimum": 0.5,
+ "default": 1
+ },
+ "not_follow_redirects": {
+ "title": "Not follow redirects",
+ "description": "If set, the client will not follow HTTP redirects automatically.",
+ "type": "boolean"
+ },
+ "username": {
+ "title": "Username",
+ "description": "The username for basic authentication.",
+ "type": "string",
+ "sensitive": true
+ },
+ "password": {
+ "title": "Password",
+ "description": "The password for basic authentication.",
+ "type": "string",
+ "sensitive": true
+ },
+ "proxy_url": {
+ "title": "Proxy URL",
+ "description": "The URL of the proxy server.",
+ "type": "string"
+ },
+ "proxy_username": {
+ "title": "Proxy username",
+ "description": "The username for proxy authentication.",
+ "type": "string",
+ "sensitive": true
+ },
+ "proxy_password": {
+ "title": "Proxy password",
+ "description": "The password for proxy authentication.",
+ "type": "string",
+ "sensitive": true
+ },
+ "headers": {
+ "title": "Headers",
+ "description": "Additional HTTP headers to include in the request.",
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "tls_skip_verify": {
+ "title": "Skip TLS verification",
+ "description": "If set, TLS certificate verification will be skipped.",
+ "type": "boolean"
+ },
+ "tls_ca": {
+ "title": "TLS CA",
+ "description": "The path to the CA certificate file for TLS verification.",
+ "type": "string",
+ "pattern": "^$|^/"
+ },
+ "tls_cert": {
+ "title": "TLS certificate",
+ "description": "The path to the client certificate file for TLS authentication.",
+ "type": "string",
+ "pattern": "^$|^/"
+ },
+ "tls_key": {
+ "title": "TLS key",
+ "description": "The path to the client key file for TLS authentication.",
+ "type": "string",
+ "pattern": "^$|^/"
+ },
+ "body": {
+ "title": "Body",
+ "type": "string"
+ },
+ "method": {
+ "title": "Method",
+ "type": "string"
+ }
+ },
+ "required": [
+ "url"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^name$": {}
+ }
+ },
+ "uiSchema": {
+ "ui:flavour": "tabs",
+ "ui:options": {
+ "tabs": [
+ {
+ "title": "Base",
+ "fields": [
+ "update_every",
+ "url",
+ "timeout",
+ "not_follow_redirects"
+ ]
+ },
+ {
+ "title": "Auth",
+ "fields": [
+ "username",
+ "password"
+ ]
+ },
+ {
+ "title": "TLS",
+ "fields": [
+ "tls_skip_verify",
+ "tls_ca",
+ "tls_cert",
+ "tls_key"
+ ]
+ },
+ {
+ "title": "Proxy",
+ "fields": [
+ "proxy_url",
+ "proxy_username",
+ "proxy_password"
+ ]
+ },
+ {
+ "title": "Headers",
+ "fields": [
+ "headers"
+ ]
+ }
+ ]
+ },
+ "uiOptions": {
+ "fullPage": true
+ },
+ "body": {
+ "ui:widget": "hidden"
+ },
+ "method": {
+ "ui:widget": "hidden"
+ },
+ "timeout": {
+ "ui:help": "Accepts decimals for precise control (e.g., type 1.5 for 1.5 seconds)."
+ },
+ "password": {
+ "ui:widget": "password"
+ },
+ "proxy_password": {
+ "ui:widget": "password"
+ }
+ }
+}
diff --git a/src/go/collectors/go.d.plugin/modules/geth/geth.go b/src/go/collectors/go.d.plugin/modules/geth/geth.go
new file mode 100644
index 000000000..070ad058a
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/geth.go
@@ -0,0 +1,108 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package geth
+
+import (
+ _ "embed"
+ "errors"
+ "time"
+
+ "github.com/netdata/netdata/go/go.d.plugin/agent/module"
+ "github.com/netdata/netdata/go/go.d.plugin/pkg/prometheus"
+ "github.com/netdata/netdata/go/go.d.plugin/pkg/web"
+)
+
+//go:embed "config_schema.json"
+var configSchema string
+
+func init() {
+ module.Register("geth", module.Creator{
+ JobConfigSchema: configSchema,
+ Create: func() module.Module { return New() },
+ Config: func() any { return &Config{} },
+ })
+}
+
+func New() *Geth {
+ return &Geth{
+ Config: Config{
+ HTTP: web.HTTP{
+ Request: web.Request{
+ URL: "http://127.0.0.1:6060/debug/metrics/prometheus",
+ },
+ Client: web.Client{
+ Timeout: web.Duration(time.Second),
+ },
+ },
+ },
+ charts: charts.Copy(),
+ }
+}
+
+type Config struct {
+ web.HTTP `yaml:",inline" json:""`
+ UpdateEvery int `yaml:"update_every" json:"update_every"`
+}
+
+type Geth struct {
+ module.Base
+ Config `yaml:",inline" json:""`
+
+ charts *Charts
+
+ prom prometheus.Prometheus
+}
+
+func (g *Geth) Configuration() any {
+ return g.Config
+}
+
+func (g *Geth) Init() error {
+ if err := g.validateConfig(); err != nil {
+ g.Errorf("error on validating config: %g", err)
+ return err
+ }
+
+ prom, err := g.initPrometheusClient()
+ if err != nil {
+ g.Error(err)
+ return err
+ }
+ g.prom = prom
+
+ return nil
+}
+
+func (g *Geth) Check() error {
+ mx, err := g.collect()
+ if err != nil {
+ g.Error(err)
+ return err
+ }
+ if len(mx) == 0 {
+ return errors.New("no metrics collected")
+ }
+ return nil
+}
+
+func (g *Geth) Charts() *Charts {
+ return g.charts
+}
+
+func (g *Geth) Collect() map[string]int64 {
+ mx, err := g.collect()
+ if err != nil {
+ g.Error(err)
+ }
+
+ if len(mx) == 0 {
+ return nil
+ }
+ return mx
+}
+
+func (g *Geth) Cleanup() {
+ if g.prom != nil && g.prom.HTTPClient() != nil {
+ g.prom.HTTPClient().CloseIdleConnections()
+ }
+}
diff --git a/src/go/collectors/go.d.plugin/modules/geth/geth_test.go b/src/go/collectors/go.d.plugin/modules/geth/geth_test.go
new file mode 100644
index 000000000..68c38385e
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/geth_test.go
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package geth
+
+import (
+ "os"
+ "testing"
+
+ "github.com/netdata/netdata/go/go.d.plugin/agent/module"
+
+ "github.com/stretchr/testify/require"
+)
+
+var (
+ dataConfigJSON, _ = os.ReadFile("testdata/config.json")
+ dataConfigYAML, _ = os.ReadFile("testdata/config.yaml")
+)
+
+func Test_testDataIsValid(t *testing.T) {
+ for name, data := range map[string][]byte{
+ "dataConfigJSON": dataConfigJSON,
+ "dataConfigYAML": dataConfigYAML,
+ } {
+ require.NotNil(t, data, name)
+ }
+}
+
+func TestGeth_ConfigurationSerialize(t *testing.T) {
+ module.TestConfigurationSerialize(t, &Geth{}, dataConfigJSON, dataConfigYAML)
+}
diff --git a/src/go/collectors/go.d.plugin/modules/geth/init.go b/src/go/collectors/go.d.plugin/modules/geth/init.go
new file mode 100644
index 000000000..9b649f859
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/init.go
@@ -0,0 +1,24 @@
+package geth
+
+import (
+ "errors"
+
+ "github.com/netdata/netdata/go/go.d.plugin/pkg/prometheus"
+ "github.com/netdata/netdata/go/go.d.plugin/pkg/web"
+)
+
+func (g *Geth) validateConfig() error {
+ if g.URL == "" {
+ return errors.New("url not set")
+ }
+ return nil
+}
+
+func (g *Geth) initPrometheusClient() (prometheus.Prometheus, error) {
+ client, err := web.NewHTTPClient(g.Client)
+ if err != nil {
+ return nil, err
+ }
+
+ return prometheus.New(client, g.Request), nil
+}
diff --git a/src/go/collectors/go.d.plugin/modules/geth/integrations/go-ethereum.md b/src/go/collectors/go.d.plugin/modules/geth/integrations/go-ethereum.md
new file mode 100644
index 000000000..c14b0a7b9
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/integrations/go-ethereum.md
@@ -0,0 +1,217 @@
+<!--startmeta
+custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/go/collectors/go.d.plugin/modules/geth/README.md"
+meta_yaml: "https://github.com/netdata/netdata/edit/master/src/go/collectors/go.d.plugin/modules/geth/metadata.yaml"
+sidebar_label: "Go-ethereum"
+learn_status: "Published"
+learn_rel_path: "Collecting Metrics/Blockchain Servers"
+most_popular: True
+message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE"
+endmeta-->
+
+# Go-ethereum
+
+
+<img src="https://netdata.cloud/img/geth.png" width="150"/>
+
+
+Plugin: go.d.plugin
+Module: geth
+
+<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" />
+
+## Overview
+
+This collector monitors Go-ethereum instances.
+
+
+
+
+This collector is supported on all platforms.
+
+This collector supports collecting metrics from multiple instances of this integration, including remote instances.
+
+
+### Default Behavior
+
+#### Auto-Detection
+
+By default, it detects Go-ethereum instances running on localhost.
+
+
+#### Limits
+
+The default configuration for this integration does not impose any limits on data collection.
+
+#### Performance Impact
+
+The default configuration for this integration is not expected to impose a significant performance impact on the system.
+
+
+## Metrics
+
+Metrics grouped by *scope*.
+
+The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.
+
+
+
+### Per Go-ethereum instance
+
+These metrics refer to the entire monitored application.
+
+This scope has no labels.
+
+Metrics:
+
+| Metric | Dimensions | Unit |
+|:------|:----------|:----|
+| geth.eth_db_chaindata_ancient_io_rate | reads, writes | bytes/s |
+| geth.eth_db_chaindata_ancient_io | reads, writes | bytes |
+| geth.eth_db_chaindata_disk_io | reads, writes | bytes |
+| geth.goroutines | goroutines | goroutines |
+| geth.eth_db_chaindata_disk_io_rate | reads, writes | bytes/s |
+| geth.chaindata_db_size | level_db, ancient_db | bytes |
+| geth.chainhead | block, receipt, header | block |
+| geth.tx_pool_pending | invalid, pending, local, discard, no_funds, ratelimit, replace | transactions |
+| geth.tx_pool_current | invalid, pending, local, pool | transactions |
+| geth.tx_pool_queued | discard, eviction, no_funds, ratelimit | transactions |
+| geth.p2p_bandwidth | ingress, egress | bytes/s |
+| geth.reorgs | executed | reorgs |
+| geth.reorgs_blocks | added, dropped | blocks |
+| geth.p2p_peers | peers | peers |
+| geth.p2p_peers_calls | dials, serves | calls/s |
+| geth.rpc_calls | failed, successful | calls/s |
+
+
+
+## Alerts
+
+There are no alerts configured by default for this integration.
+
+
+## Setup
+
+### Prerequisites
+
+No action required.
+
+### Configuration
+
+#### File
+
+The configuration file name for this integration is `go.d/geth.conf`.
+
+
+You can edit the configuration file using the `edit-config` script from the
+Netdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory).
+
+```bash
+cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
+sudo ./edit-config go.d/geth.conf
+```
+#### Options
+
+The following options can be defined globally: update_every, autodetection_retry.
+
+
+<details open><summary>Config options</summary>
+
+| Name | Description | Default | Required |
+|:----|:-----------|:-------|:--------:|
+| update_every | Data collection frequency. | 1 | no |
+| autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |
+| url | Server URL. | http://127.0.0.1:6060/debug/metrics/prometheus | yes |
+| timeout | HTTP request timeout. | 1 | no |
+| username | Username for basic HTTP authentication. | | no |
+| password | Password for basic HTTP authentication. | | no |
+| proxy_url | Proxy URL. | | no |
+| proxy_username | Username for proxy basic HTTP authentication. | | no |
+| proxy_password | Password for proxy basic HTTP authentication. | | no |
+| method | HTTP request method. | GET | no |
+| body | HTTP request body. | | no |
+| headers | HTTP request headers. | | no |
+| not_follow_redirects | Redirect handling policy. Controls whether the client follows redirects. | no | no |
+| tls_skip_verify | Server certificate chain and hostname validation policy. Controls whether the client performs this check. | no | no |
+| tls_ca | Certification authority that the client uses when verifying the server's certificates. | | no |
+| tls_cert | Client TLS certificate. | | no |
+| tls_key | Client TLS key. | | no |
+
+</details>
+
+#### Examples
+
+##### Basic
+
+A basic example configuration.
+
+```yaml
+jobs:
+ - name: local
+ url: http://127.0.0.1:6060/debug/metrics/prometheus
+
+```
+##### HTTP authentication
+
+Basic HTTP authentication.
+
+<details open><summary>Config</summary>
+
+```yaml
+jobs:
+ - name: local
+ url: http://127.0.0.1:6060/debug/metrics/prometheus
+ username: username
+ password: password
+
+```
+</details>
+
+##### Multi-instance
+
+> **Note**: When you define multiple jobs, their names must be unique.
+
+Collecting metrics from local and remote instances.
+
+
+<details open><summary>Config</summary>
+
+```yaml
+jobs:
+ - name: local
+ url: http://127.0.0.1:6060/debug/metrics/prometheus
+
+ - name: remote
+ url: http://192.0.2.1:6060/debug/metrics/prometheus
+
+```
+</details>
+
+
+
+## Troubleshooting
+
+### Debug Mode
+
+To troubleshoot issues with the `geth` collector, run the `go.d.plugin` with the debug option enabled. The output
+should give you clues as to why the collector isn't working.
+
+- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on
+ your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.
+
+ ```bash
+ cd /usr/libexec/netdata/plugins.d/
+ ```
+
+- Switch to the `netdata` user.
+
+ ```bash
+ sudo -u netdata -s
+ ```
+
+- Run the `go.d.plugin` to debug the collector:
+
+ ```bash
+ ./go.d.plugin -d -m geth
+ ```
+
+
diff --git a/src/go/collectors/go.d.plugin/modules/geth/metadata.yaml b/src/go/collectors/go.d.plugin/modules/geth/metadata.yaml
new file mode 100644
index 000000000..ef131776a
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/metadata.yaml
@@ -0,0 +1,291 @@
+plugin_name: go.d.plugin
+modules:
+ - meta:
+ id: collector-go.d.plugin-geth
+ plugin_name: go.d.plugin
+ module_name: geth
+ monitored_instance:
+ name: Go-ethereum
+ link: https://github.com/ethereum/go-ethereum
+ icon_filename: geth.png
+ categories:
+ - data-collection.blockchain-servers
+ keywords:
+ - geth
+ - ethereum
+ - blockchain
+ related_resources:
+ integrations:
+ list:
+ - plugin_name: apps.plugin
+ module_name: apps
+ info_provided_to_referring_integrations:
+ description: ""
+ most_popular: true
+ overview:
+ data_collection:
+ metrics_description: |
+ This collector monitors Go-ethereum instances.
+ method_description: ""
+ supported_platforms:
+ include: []
+ exclude: []
+ multi_instance: true
+ additional_permissions:
+ description: ""
+ default_behavior:
+ auto_detection:
+ description: |
+ By default, it detects Go-ethereum instances running on localhost.
+ limits:
+ description: ""
+ performance_impact:
+ description: ""
+ setup:
+ prerequisites:
+ list: []
+ configuration:
+ file:
+ name: go.d/geth.conf
+ options:
+ description: |
+ The following options can be defined globally: update_every, autodetection_retry.
+ folding:
+ title: Config options
+ enabled: true
+ list:
+ - name: update_every
+ description: Data collection frequency.
+ default_value: 1
+ required: false
+ - name: autodetection_retry
+ description: Recheck interval in seconds. Zero means no recheck will be scheduled.
+ default_value: 0
+ required: false
+ - name: url
+ description: Server URL.
+ default_value: http://127.0.0.1:6060/debug/metrics/prometheus
+ required: true
+ - name: timeout
+ description: HTTP request timeout.
+ default_value: 1
+ required: false
+ - name: username
+ description: Username for basic HTTP authentication.
+ default_value: ""
+ required: false
+ - name: password
+ description: Password for basic HTTP authentication.
+ default_value: ""
+ required: false
+ - name: proxy_url
+ description: Proxy URL.
+ default_value: ""
+ required: false
+ - name: proxy_username
+ description: Username for proxy basic HTTP authentication.
+ default_value: ""
+ required: false
+ - name: proxy_password
+ description: Password for proxy basic HTTP authentication.
+ default_value: ""
+ required: false
+ - name: method
+ description: HTTP request method.
+ default_value: GET
+ required: false
+ - name: body
+ description: HTTP request body.
+ default_value: ""
+ required: false
+ - name: headers
+ description: HTTP request headers.
+ default_value: ""
+ required: false
+ - name: not_follow_redirects
+ description: Redirect handling policy. Controls whether the client follows redirects.
+ default_value: no
+ required: false
+ - name: tls_skip_verify
+ description: Server certificate chain and hostname validation policy. Controls whether the client performs this check.
+ default_value: no
+ required: false
+ - name: tls_ca
+ description: Certification authority that the client uses when verifying the server's certificates.
+ default_value: ""
+ required: false
+ - name: tls_cert
+ description: Client TLS certificate.
+ default_value: ""
+ required: false
+ - name: tls_key
+ description: Client TLS key.
+ default_value: ""
+ required: false
+ examples:
+ folding:
+ title: Config
+ enabled: true
+ list:
+ - name: Basic
+ folding:
+ enabled: false
+ description: A basic example configuration.
+ config: |
+ jobs:
+ - name: local
+ url: http://127.0.0.1:6060/debug/metrics/prometheus
+ - name: HTTP authentication
+ description: Basic HTTP authentication.
+ config: |
+ jobs:
+ - name: local
+ url: http://127.0.0.1:6060/debug/metrics/prometheus
+ username: username
+ password: password
+ - name: Multi-instance
+ description: |
+ > **Note**: When you define multiple jobs, their names must be unique.
+
+ Collecting metrics from local and remote instances.
+ config: |
+ jobs:
+ - name: local
+ url: http://127.0.0.1:6060/debug/metrics/prometheus
+
+ - name: remote
+ url: http://192.0.2.1:6060/debug/metrics/prometheus
+ troubleshooting:
+ problems:
+ list: []
+ alerts: []
+ metrics:
+ folding:
+ title: Metrics
+ enabled: false
+ description: ""
+ availability: []
+ scopes:
+ - name: global
+ description: These metrics refer to the entire monitored application.
+ labels: []
+ metrics:
+ - name: geth.eth_db_chaindata_ancient_io_rate
+ description: Ancient Chaindata rate
+ unit: bytes/s
+ chart_type: line
+ dimensions:
+ - name: reads
+ - name: writes
+ - name: geth.eth_db_chaindata_ancient_io
+ description: Session ancient Chaindata
+ unit: bytes
+ chart_type: line
+ dimensions:
+ - name: reads
+ - name: writes
+ - name: geth.eth_db_chaindata_disk_io
+ description: Session chaindata on disk
+ unit: bytes
+ chart_type: line
+ dimensions:
+ - name: reads
+ - name: writes
+ - name: geth.goroutines
+ description: Number of goroutines
+ unit: goroutines
+ chart_type: line
+ dimensions:
+ - name: goroutines
+ - name: geth.eth_db_chaindata_disk_io_rate
+ description: On disk Chaindata rate
+ unit: bytes/s
+ chart_type: line
+ dimensions:
+ - name: reads
+ - name: writes
+ - name: geth.chaindata_db_size
+ description: Chaindata Size
+ unit: bytes
+ chart_type: line
+ dimensions:
+ - name: level_db
+ - name: ancient_db
+ - name: geth.chainhead
+ description: Chainhead
+ unit: block
+ chart_type: line
+ dimensions:
+ - name: block
+ - name: receipt
+ - name: header
+ - name: geth.tx_pool_pending
+ description: Pending Transaction Pool
+ unit: transactions
+ chart_type: line
+ dimensions:
+ - name: invalid
+ - name: pending
+ - name: local
+ - name: discard
+ - name: no_funds
+ - name: ratelimit
+ - name: replace
+ - name: geth.tx_pool_current
+ description: Transaction Pool
+ unit: transactions
+ chart_type: line
+ dimensions:
+ - name: invalid
+ - name: pending
+ - name: local
+ - name: pool
+ - name: geth.tx_pool_queued
+ description: Queued Transaction Pool
+ unit: transactions
+ chart_type: line
+ dimensions:
+ - name: discard
+ - name: eviction
+ - name: no_funds
+ - name: ratelimit
+ - name: geth.p2p_bandwidth
+ description: P2P bandwidth
+ unit: bytes/s
+ chart_type: line
+ dimensions:
+ - name: ingress
+ - name: egress
+ - name: geth.reorgs
+ description: Executed Reorgs
+ unit: reorgs
+ chart_type: line
+ dimensions:
+ - name: executed
+ - name: geth.reorgs_blocks
+ description: Blocks Added/Removed from Reorg
+ unit: blocks
+ chart_type: line
+ dimensions:
+ - name: added
+ - name: dropped
+ - name: geth.p2p_peers
+ description: Number of Peers
+ unit: peers
+ chart_type: line
+ dimensions:
+ - name: peers
+ - name: geth.p2p_peers_calls
+ description: P2P Serves and Dials
+ unit: calls/s
+ chart_type: line
+ dimensions:
+ - name: dials
+ - name: serves
+ - name: geth.rpc_calls
+ description: rpc calls
+ unit: calls/s
+ chart_type: line
+ dimensions:
+ - name: failed
+ - name: successful
diff --git a/src/go/collectors/go.d.plugin/modules/geth/metrics.go b/src/go/collectors/go.d.plugin/modules/geth/metrics.go
new file mode 100644
index 000000000..642973d69
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/metrics.go
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package geth
+
+// summary
+const (
+ chainValidation = "chain_validation"
+ chainWrite = "chain_write"
+ chainHeadBlock = "chain_head_block"
+ chainHeadHeader = "chain_head_header"
+ chainHeadReceipt = "chain_head_receipt"
+)
+
+// + rate
+const (
+ ethDbChainDataAncientRead = "eth_db_chaindata_ancient_read"
+ ethDbChainDataAncientWrite = "eth_db_chaindata_ancient_write"
+ ethDbChaindataDiskRead = "eth_db_chaindata_disk_read"
+ ethDbChainDataDiskWrite = "eth_db_chaindata_disk_write"
+ ethDbChainDataDiskSize = "eth_db_chaindata_disk_size"
+ ethDbChainDataAncientSize = "eth_db_chaindata_ancient_size"
+
+ txPoolInvalid = "txpool_invalid"
+ txPoolPending = "txpool_pending"
+ txPoolLocal = "txpool_local"
+ txPoolPendingDiscard = "txpool_pending_discard"
+ txPoolNofunds = "txpool_pending_nofunds"
+ txPoolPendingRatelimit = "txpool_pending_ratelimit"
+ txPoolPendingReplace = "txpool_pending_replace"
+ txPoolQueuedDiscard = "txpool_queued_discard"
+ txPoolQueuedEviction = "txpool_queued_eviction"
+ txPoolQueuedNofunds = "txpool_queued_nofunds"
+ txPoolQueuedRatelimit = "txpool_queued_ratelimit"
+)
+
+const (
+ // gauge
+ p2pEgress = "p2p_egress"
+ p2pIngress = "p2p_ingress"
+
+ p2pPeers = "p2p_peers"
+ p2pServes = "p2p_serves"
+ p2pDials = "p2p_dials"
+
+ rpcRequests = "rpc_requests"
+ rpcSuccess = "rpc_success"
+ rpcFailure = "rpc_failure"
+
+ reorgsAdd = "chain_reorg_add"
+ reorgsExecuted = "chain_reorg_executes"
+ reorgsDropped = "chain_reorg_drop"
+
+ goRoutines = "system_cpu_goroutines"
+)
diff --git a/src/go/collectors/go.d.plugin/modules/geth/testdata/config.json b/src/go/collectors/go.d.plugin/modules/geth/testdata/config.json
new file mode 100644
index 000000000..984c3ed6e
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/testdata/config.json
@@ -0,0 +1,20 @@
+{
+ "update_every": 123,
+ "url": "ok",
+ "body": "ok",
+ "method": "ok",
+ "headers": {
+ "ok": "ok"
+ },
+ "username": "ok",
+ "password": "ok",
+ "proxy_url": "ok",
+ "proxy_username": "ok",
+ "proxy_password": "ok",
+ "timeout": 123.123,
+ "not_follow_redirects": true,
+ "tls_ca": "ok",
+ "tls_cert": "ok",
+ "tls_key": "ok",
+ "tls_skip_verify": true
+}
diff --git a/src/go/collectors/go.d.plugin/modules/geth/testdata/config.yaml b/src/go/collectors/go.d.plugin/modules/geth/testdata/config.yaml
new file mode 100644
index 000000000..8558b61cc
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/testdata/config.yaml
@@ -0,0 +1,17 @@
+update_every: 123
+url: "ok"
+body: "ok"
+method: "ok"
+headers:
+ ok: "ok"
+username: "ok"
+password: "ok"
+proxy_url: "ok"
+proxy_username: "ok"
+proxy_password: "ok"
+timeout: 123.123
+not_follow_redirects: yes
+tls_ca: "ok"
+tls_cert: "ok"
+tls_key: "ok"
+tls_skip_verify: yes
diff --git a/src/go/collectors/go.d.plugin/modules/geth/testdata/metrics_geth.txt b/src/go/collectors/go.d.plugin/modules/geth/testdata/metrics_geth.txt
new file mode 100644
index 000000000..055fea893
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/geth/testdata/metrics_geth.txt
@@ -0,0 +1,1569 @@
+# TYPE chain_account_commits_count counter
+chain_account_commits_count 0
+
+# TYPE chain_account_commits summary IMP
+chain_account_commits {quantile="0.5"} 0
+chain_account_commits {quantile="0.75"} 0
+chain_account_commits {quantile="0.95"} 0
+chain_account_commits {quantile="0.99"} 0
+chain_account_commits {quantile="0.999"} 0
+chain_account_commits {quantile="0.9999"} 0
+
+# TYPE chain_account_hashes_count counter
+chain_account_hashes_count 0
+
+# TYPE chain_account_hashes summary
+chain_account_hashes {quantile="0.5"} 0
+chain_account_hashes {quantile="0.75"} 0
+chain_account_hashes {quantile="0.95"} 0
+chain_account_hashes {quantile="0.99"} 0
+chain_account_hashes {quantile="0.999"} 0
+chain_account_hashes {quantile="0.9999"} 0
+
+# TYPE chain_account_reads_count counter
+chain_account_reads_count 0
+
+# TYPE chain_account_reads summary IMP
+chain_account_reads {quantile="0.5"} 0
+chain_account_reads {quantile="0.75"} 0
+chain_account_reads {quantile="0.95"} 0
+chain_account_reads {quantile="0.99"} 0
+chain_account_reads {quantile="0.999"} 0
+chain_account_reads {quantile="0.9999"} 0
+
+# TYPE chain_account_updates_count counter
+chain_account_updates_count 0
+
+# TYPE chain_account_updates summary IMP
+chain_account_updates {quantile="0.5"} 0
+chain_account_updates {quantile="0.75"} 0
+chain_account_updates {quantile="0.95"} 0
+chain_account_updates {quantile="0.99"} 0
+chain_account_updates {quantile="0.999"} 0
+chain_account_updates {quantile="0.9999"} 0
+
+# TYPE chain_execution_count counter
+chain_execution_count 0
+
+# TYPE chain_execution summary IMP
+chain_execution {quantile="0.5"} 0
+chain_execution {quantile="0.75"} 0
+chain_execution {quantile="0.95"} 0
+chain_execution {quantile="0.99"} 0
+chain_execution {quantile="0.999"} 0
+chain_execution {quantile="0.9999"} 0
+#---
+# TYPE chain_head_block gauge IMP
+chain_head_block 0
+
+# TYPE chain_head_header gauge IMP
+chain_head_header 24576
+
+# TYPE chain_head_receipt gauge IMP
+chain_head_receipt 24576
+#---
+# TYPE chain_inserts_count counter
+chain_inserts_count 0
+
+# TYPE chain_inserts summary
+chain_inserts {quantile="0.5"} 0
+chain_inserts {quantile="0.75"} 0
+chain_inserts {quantile="0.95"} 0
+chain_inserts {quantile="0.99"} 0
+chain_inserts {quantile="0.999"} 0
+chain_inserts {quantile="0.9999"} 0
+
+# TYPE chain_prefetch_executes_count counter
+chain_prefetch_executes_count 0
+
+# TYPE chain_prefetch_executes summary
+chain_prefetch_executes {quantile="0.5"} 0
+chain_prefetch_executes {quantile="0.75"} 0
+chain_prefetch_executes {quantile="0.95"} 0
+chain_prefetch_executes {quantile="0.99"} 0
+chain_prefetch_executes {quantile="0.999"} 0
+chain_prefetch_executes {quantile="0.9999"} 0
+
+# TYPE chain_prefetch_interrupts gauge
+chain_prefetch_interrupts 0
+
+# TYPE chain_reorg_add gauge
+chain_reorg_add 0
+
+# TYPE chain_reorg_drop gauge
+chain_reorg_drop 0
+
+# TYPE chain_reorg_executes gauge
+chain_reorg_executes 0
+
+# TYPE chain_reorg_invalidTx gauge
+chain_reorg_invalidTx 0
+
+# TYPE chain_snapshot_account_reads_count counter
+chain_snapshot_account_reads_count 0
+
+# TYPE chain_snapshot_account_reads summary
+chain_snapshot_account_reads {quantile="0.5"} 0
+chain_snapshot_account_reads {quantile="0.75"} 0
+chain_snapshot_account_reads {quantile="0.95"} 0
+chain_snapshot_account_reads {quantile="0.99"} 0
+chain_snapshot_account_reads {quantile="0.999"} 0
+chain_snapshot_account_reads {quantile="0.9999"} 0
+
+# TYPE chain_snapshot_commits_count counter
+chain_snapshot_commits_count 0
+
+# TYPE chain_snapshot_commits summary
+chain_snapshot_commits {quantile="0.5"} 0
+chain_snapshot_commits {quantile="0.75"} 0
+chain_snapshot_commits {quantile="0.95"} 0
+chain_snapshot_commits {quantile="0.99"} 0
+chain_snapshot_commits {quantile="0.999"} 0
+chain_snapshot_commits {quantile="0.9999"} 0
+
+# TYPE chain_snapshot_storage_reads_count counter
+chain_snapshot_storage_reads_count 0
+
+# TYPE chain_snapshot_storage_reads summary IMP
+chain_snapshot_storage_reads {quantile="0.5"} 0
+chain_snapshot_storage_reads {quantile="0.75"} 0
+chain_snapshot_storage_reads {quantile="0.95"} 0
+chain_snapshot_storage_reads {quantile="0.99"} 0
+chain_snapshot_storage_reads {quantile="0.999"} 0
+chain_snapshot_storage_reads {quantile="0.9999"} 0
+
+# TYPE chain_storage_commits_count counter
+chain_storage_commits_count 0
+
+# TYPE chain_storage_commits summary IMP
+chain_storage_commits {quantile="0.5"} 0
+chain_storage_commits {quantile="0.75"} 0
+chain_storage_commits {quantile="0.95"} 0
+chain_storage_commits {quantile="0.99"} 0
+chain_storage_commits {quantile="0.999"} 0
+chain_storage_commits {quantile="0.9999"} 0
+
+# TYPE chain_storage_hashes_count counter
+chain_storage_hashes_count 0
+
+# TYPE chain_storage_hashes summary IMP
+chain_storage_hashes {quantile="0.5"} 0
+chain_storage_hashes {quantile="0.75"} 0
+chain_storage_hashes {quantile="0.95"} 0
+chain_storage_hashes {quantile="0.99"} 0
+chain_storage_hashes {quantile="0.999"} 0
+chain_storage_hashes {quantile="0.9999"} 0
+
+# TYPE chain_storage_reads_count counter
+chain_storage_reads_count 0
+
+# TYPE chain_storage_reads summary
+chain_storage_reads {quantile="0.5"} 0
+chain_storage_reads {quantile="0.75"} 0
+chain_storage_reads {quantile="0.95"} 0
+chain_storage_reads {quantile="0.99"} 0
+chain_storage_reads {quantile="0.999"} 0
+chain_storage_reads {quantile="0.9999"} 0
+
+# TYPE chain_storage_updates_count counter
+chain_storage_updates_count 0
+
+# TYPE chain_storage_updates summary IMP
+chain_storage_updates {quantile="0.5"} 0
+chain_storage_updates {quantile="0.75"} 0
+chain_storage_updates {quantile="0.95"} 0
+chain_storage_updates {quantile="0.99"} 0
+chain_storage_updates {quantile="0.999"} 0
+chain_storage_updates {quantile="0.9999"} 0
+
+# TYPE chain_validation_count counter
+chain_validation_count 0
+
+# TYPE chain_validation summary IMP
+chain_validation {quantile="0.5"} 0
+chain_validation {quantile="0.75"} 0
+chain_validation {quantile="0.95"} 0
+chain_validation {quantile="0.99"} 0
+chain_validation {quantile="0.999"} 0
+chain_validation {quantile="0.9999"} 0
+
+# TYPE chain_write_count counter
+chain_write_count 0
+
+# TYPE chain_write summary IMP
+chain_write {quantile="0.5"} 0
+chain_write {quantile="0.75"} 0
+chain_write {quantile="0.95"} 0
+chain_write {quantile="0.99"} 0
+chain_write {quantile="0.999"} 0
+chain_write {quantile="0.9999"} 0
+
+# TYPE db_preimage_hits gauge
+db_preimage_hits 8893
+
+# TYPE db_preimage_total gauge
+db_preimage_total 8893
+
+# TYPE eth_db_chaindata_ancient_read gauge IMP + rate
+eth_db_chaindata_ancient_read 954
+
+# TYPE eth_db_chaindata_ancient_size gauge
+eth_db_chaindata_ancient_size 9901428
+
+# TYPE eth_db_chaindata_ancient_write gauge IMP + rate
+eth_db_chaindata_ancient_write 7256150
+
+# TYPE eth_db_chaindata_compact_input gauge
+eth_db_chaindata_compact_input 0
+
+# TYPE eth_db_chaindata_compact_level0 gauge
+eth_db_chaindata_compact_level0 0
+
+# TYPE eth_db_chaindata_compact_memory gauge
+eth_db_chaindata_compact_memory 0
+
+# TYPE eth_db_chaindata_compact_nonlevel0 gauge
+eth_db_chaindata_compact_nonlevel0 0
+
+# TYPE eth_db_chaindata_compact_output gauge
+eth_db_chaindata_compact_output 0
+
+# TYPE eth_db_chaindata_compact_seek gauge
+eth_db_chaindata_compact_seek 0
+
+# TYPE eth_db_chaindata_compact_time gauge
+eth_db_chaindata_compact_time 0
+
+# TYPE eth_db_chaindata_compact_writedelay_counter gauge
+eth_db_chaindata_compact_writedelay_counter 0
+
+# TYPE eth_db_chaindata_compact_writedelay_duration gauge
+eth_db_chaindata_compact_writedelay_duration 0
+
+# TYPE eth_db_chaindata_disk_read gauge IMP + rate
+eth_db_chaindata_disk_read 0
+
+# TYPE eth_db_chaindata_disk_size gauge
+eth_db_chaindata_disk_size 0
+
+# TYPE eth_db_chaindata_disk_write gauge IMP + rate
+eth_db_chaindata_disk_write 10028946
+
+# TYPE eth_downloader_bodies_drop gauge
+eth_downloader_bodies_drop 0
+
+# TYPE eth_downloader_bodies_in gauge
+eth_downloader_bodies_in 2061
+
+# TYPE eth_downloader_bodies_req_count counter
+eth_downloader_bodies_req_count 100
+
+# TYPE eth_downloader_bodies_req summary
+eth_downloader_bodies_req {quantile="0.5"} 1.73698035e+07
+eth_downloader_bodies_req {quantile="0.75"} 2.534998e+07
+eth_downloader_bodies_req {quantile="0.95"} 2.806964048999994e+08
+eth_downloader_bodies_req {quantile="0.99"} 7.47070292879998e+08
+eth_downloader_bodies_req {quantile="0.999"} 7.51141436e+08
+eth_downloader_bodies_req {quantile="0.9999"} 7.51141436e+08
+
+# TYPE eth_downloader_bodies_timeout gauge
+eth_downloader_bodies_timeout 0
+
+# TYPE eth_downloader_headers_drop gauge
+eth_downloader_headers_drop 0
+
+# TYPE eth_downloader_headers_in gauge
+eth_downloader_headers_in 20133
+
+# TYPE eth_downloader_headers_req_count counter
+eth_downloader_headers_req_count 129
+
+# TYPE eth_downloader_headers_req summary
+eth_downloader_headers_req {quantile="0.5"} 4.0981132e+07
+eth_downloader_headers_req {quantile="0.75"} 4.5769116e+07
+eth_downloader_headers_req {quantile="0.95"} 2.53663427e+08
+eth_downloader_headers_req {quantile="0.99"} 6.901528164999979e+08
+eth_downloader_headers_req {quantile="0.999"} 7.45691875e+08
+eth_downloader_headers_req {quantile="0.9999"} 7.45691875e+08
+
+# TYPE eth_downloader_headers_timeout gauge
+eth_downloader_headers_timeout 0
+
+# TYPE eth_downloader_receipts_drop gauge
+eth_downloader_receipts_drop 0
+
+# TYPE eth_downloader_receipts_in gauge
+eth_downloader_receipts_in 0
+
+# TYPE eth_downloader_receipts_req_count counter
+eth_downloader_receipts_req_count 0
+
+# TYPE eth_downloader_receipts_req summary
+eth_downloader_receipts_req {quantile="0.5"} 0
+eth_downloader_receipts_req {quantile="0.75"} 0
+eth_downloader_receipts_req {quantile="0.95"} 0
+eth_downloader_receipts_req {quantile="0.99"} 0
+eth_downloader_receipts_req {quantile="0.999"} 0
+eth_downloader_receipts_req {quantile="0.9999"} 0
+
+# TYPE eth_downloader_receipts_timeout gauge
+eth_downloader_receipts_timeout 0
+
+# TYPE eth_downloader_states_drop gauge
+eth_downloader_states_drop 0
+
+# TYPE eth_downloader_states_in gauge
+eth_downloader_states_in 0
+
+# TYPE eth_downloader_throttle gauge
+eth_downloader_throttle 0
+
+# TYPE eth_fetcher_block_announces_dos gauge
+eth_fetcher_block_announces_dos 0
+
+# TYPE eth_fetcher_block_announces_drop gauge
+eth_fetcher_block_announces_drop 0
+
+# TYPE eth_fetcher_block_announces_in gauge
+eth_fetcher_block_announces_in 0
+
+# TYPE eth_fetcher_block_announces_out_count counter
+eth_fetcher_block_announces_out_count 0
+
+# TYPE eth_fetcher_block_announces_out summary
+eth_fetcher_block_announces_out {quantile="0.5"} 0
+eth_fetcher_block_announces_out {quantile="0.75"} 0
+eth_fetcher_block_announces_out {quantile="0.95"} 0
+eth_fetcher_block_announces_out {quantile="0.99"} 0
+eth_fetcher_block_announces_out {quantile="0.999"} 0
+eth_fetcher_block_announces_out {quantile="0.9999"} 0
+
+# TYPE eth_fetcher_block_bodies gauge
+eth_fetcher_block_bodies 0
+
+# TYPE eth_fetcher_block_broadcasts_dos gauge
+eth_fetcher_block_broadcasts_dos 0
+
+# TYPE eth_fetcher_block_broadcasts_drop gauge
+eth_fetcher_block_broadcasts_drop 0
+
+# TYPE eth_fetcher_block_broadcasts_in gauge
+eth_fetcher_block_broadcasts_in 0
+
+# TYPE eth_fetcher_block_broadcasts_out_count counter
+eth_fetcher_block_broadcasts_out_count 0
+
+# TYPE eth_fetcher_block_broadcasts_out summary
+eth_fetcher_block_broadcasts_out {quantile="0.5"} 0
+eth_fetcher_block_broadcasts_out {quantile="0.75"} 0
+eth_fetcher_block_broadcasts_out {quantile="0.95"} 0
+eth_fetcher_block_broadcasts_out {quantile="0.99"} 0
+eth_fetcher_block_broadcasts_out {quantile="0.999"} 0
+eth_fetcher_block_broadcasts_out {quantile="0.9999"} 0
+
+# TYPE eth_fetcher_block_filter_bodies_in gauge
+eth_fetcher_block_filter_bodies_in 2061
+
+# TYPE eth_fetcher_block_filter_bodies_out gauge
+eth_fetcher_block_filter_bodies_out 2061
+
+# TYPE eth_fetcher_block_filter_headers_in gauge
+eth_fetcher_block_filter_headers_in 23
+
+# TYPE eth_fetcher_block_filter_headers_out gauge
+eth_fetcher_block_filter_headers_out 23
+
+# TYPE eth_fetcher_block_headers gauge
+eth_fetcher_block_headers 0
+
+# TYPE eth_fetcher_transaction_announces_dos gauge
+eth_fetcher_transaction_announces_dos 0
+
+# TYPE eth_fetcher_transaction_announces_in gauge
+eth_fetcher_transaction_announces_in 0
+
+# TYPE eth_fetcher_transaction_announces_known gauge
+eth_fetcher_transaction_announces_known 0
+
+# TYPE eth_fetcher_transaction_announces_underpriced gauge
+eth_fetcher_transaction_announces_underpriced 0
+
+# TYPE eth_fetcher_transaction_broadcasts_in gauge
+eth_fetcher_transaction_broadcasts_in 0
+
+# TYPE eth_fetcher_transaction_broadcasts_known gauge
+eth_fetcher_transaction_broadcasts_known 0
+
+# TYPE eth_fetcher_transaction_broadcasts_otherreject gauge
+eth_fetcher_transaction_broadcasts_otherreject 0
+
+# TYPE eth_fetcher_transaction_broadcasts_underpriced gauge
+eth_fetcher_transaction_broadcasts_underpriced 0
+
+# TYPE eth_fetcher_transaction_fetching_hashes gauge
+eth_fetcher_transaction_fetching_hashes 0
+
+# TYPE eth_fetcher_transaction_fetching_peers gauge
+eth_fetcher_transaction_fetching_peers 0
+
+# TYPE eth_fetcher_transaction_queueing_hashes gauge
+eth_fetcher_transaction_queueing_hashes 0
+
+# TYPE eth_fetcher_transaction_queueing_peers gauge
+eth_fetcher_transaction_queueing_peers 0
+
+# TYPE eth_fetcher_transaction_replies_in gauge
+eth_fetcher_transaction_replies_in 0
+
+# TYPE eth_fetcher_transaction_replies_known gauge
+eth_fetcher_transaction_replies_known 0
+
+# TYPE eth_fetcher_transaction_replies_otherreject gauge
+eth_fetcher_transaction_replies_otherreject 0
+
+# TYPE eth_fetcher_transaction_replies_underpriced gauge
+eth_fetcher_transaction_replies_underpriced 0
+
+# TYPE eth_fetcher_transaction_request_done gauge
+eth_fetcher_transaction_request_done 0
+
+# TYPE eth_fetcher_transaction_request_fail gauge
+eth_fetcher_transaction_request_fail 0
+
+# TYPE eth_fetcher_transaction_request_out gauge
+eth_fetcher_transaction_request_out 0
+
+# TYPE eth_fetcher_transaction_request_timeout gauge
+eth_fetcher_transaction_request_timeout 0
+
+# TYPE eth_fetcher_transaction_waiting_hashes gauge
+eth_fetcher_transaction_waiting_hashes 0
+
+# TYPE eth_fetcher_transaction_waiting_peers gauge
+eth_fetcher_transaction_waiting_peers 0
+
+# TYPE les_client_req_rtt_count counter
+les_client_req_rtt_count 0
+
+# TYPE les_client_req_rtt summary
+les_client_req_rtt {quantile="0.5"} 0
+les_client_req_rtt {quantile="0.75"} 0
+les_client_req_rtt {quantile="0.95"} 0
+les_client_req_rtt {quantile="0.99"} 0
+les_client_req_rtt {quantile="0.999"} 0
+les_client_req_rtt {quantile="0.9999"} 0
+
+# TYPE les_client_req_sendDelay_count counter
+les_client_req_sendDelay_count 0
+
+# TYPE les_client_req_sendDelay summary
+les_client_req_sendDelay {quantile="0.5"} 0
+les_client_req_sendDelay {quantile="0.75"} 0
+les_client_req_sendDelay {quantile="0.95"} 0
+les_client_req_sendDelay {quantile="0.99"} 0
+les_client_req_sendDelay {quantile="0.999"} 0
+les_client_req_sendDelay {quantile="0.9999"} 0
+
+# TYPE les_client_serverPool_connected gauge
+les_client_serverPool_connected 0
+
+# TYPE les_client_serverPool_dialed gauge
+les_client_serverPool_dialed 0
+
+# TYPE les_client_serverPool_selectable gauge
+les_client_serverPool_selectable 0
+
+# TYPE les_client_serverPool_sessionValue gauge
+les_client_serverPool_sessionValue 0
+
+# TYPE les_client_serverPool_timeout gauge
+les_client_serverPool_timeout 0
+
+# TYPE les_client_serverPool_totalValue gauge
+les_client_serverPool_totalValue 0
+
+# TYPE les_connection_duration_count counter
+les_connection_duration_count 0
+
+# TYPE les_connection_duration summary
+les_connection_duration {quantile="0.5"} 0
+les_connection_duration {quantile="0.75"} 0
+les_connection_duration {quantile="0.95"} 0
+les_connection_duration {quantile="0.99"} 0
+les_connection_duration {quantile="0.999"} 0
+les_connection_duration {quantile="0.9999"} 0
+
+# TYPE les_connection_server gauge
+les_connection_server 0
+
+# TYPE les_misc_in_packets_body gauge
+les_misc_in_packets_body 0
+
+# TYPE les_misc_in_packets_code gauge
+les_misc_in_packets_code 0
+
+# TYPE les_misc_in_packets_header gauge
+les_misc_in_packets_header 0
+
+# TYPE les_misc_in_packets_helperTrie gauge
+les_misc_in_packets_helperTrie 0
+
+# TYPE les_misc_in_packets_proof gauge
+les_misc_in_packets_proof 0
+
+# TYPE les_misc_in_packets_receipt gauge
+les_misc_in_packets_receipt 0
+
+# TYPE les_misc_in_packets_total gauge
+les_misc_in_packets_total 0
+
+# TYPE les_misc_in_packets_txStatus gauge
+les_misc_in_packets_txStatus 0
+
+# TYPE les_misc_in_packets_txs gauge
+les_misc_in_packets_txs 0
+
+# TYPE les_misc_in_traffic_body gauge
+les_misc_in_traffic_body 0
+
+# TYPE les_misc_in_traffic_code gauge
+les_misc_in_traffic_code 0
+
+# TYPE les_misc_in_traffic_header gauge
+les_misc_in_traffic_header 0
+
+# TYPE les_misc_in_traffic_helperTrie gauge
+les_misc_in_traffic_helperTrie 0
+
+# TYPE les_misc_in_traffic_proof gauge
+les_misc_in_traffic_proof 0
+
+# TYPE les_misc_in_traffic_receipt gauge
+les_misc_in_traffic_receipt 0
+
+# TYPE les_misc_in_traffic_total gauge
+les_misc_in_traffic_total 0
+
+# TYPE les_misc_in_traffic_txStatus gauge
+les_misc_in_traffic_txStatus 0
+
+# TYPE les_misc_in_traffic_txs gauge
+les_misc_in_traffic_txs 0
+
+# TYPE les_misc_out_packets_body gauge
+les_misc_out_packets_body 0
+
+# TYPE les_misc_out_packets_code gauge
+les_misc_out_packets_code 0
+
+# TYPE les_misc_out_packets_header gauge
+les_misc_out_packets_header 0
+
+# TYPE les_misc_out_packets_helperTrie gauge
+les_misc_out_packets_helperTrie 0
+
+# TYPE les_misc_out_packets_proof gauge
+les_misc_out_packets_proof 0
+
+# TYPE les_misc_out_packets_receipt gauge
+les_misc_out_packets_receipt 0
+
+# TYPE les_misc_out_packets_total gauge
+les_misc_out_packets_total 0
+
+# TYPE les_misc_out_packets_txStatus gauge
+les_misc_out_packets_txStatus 0
+
+# TYPE les_misc_out_packets_txs gauge
+les_misc_out_packets_txs 0
+
+# TYPE les_misc_out_traffic_body gauge
+les_misc_out_traffic_body 0
+
+# TYPE les_misc_out_traffic_code gauge
+les_misc_out_traffic_code 0
+
+# TYPE les_misc_out_traffic_header gauge
+les_misc_out_traffic_header 0
+
+# TYPE les_misc_out_traffic_helperTrie gauge
+les_misc_out_traffic_helperTrie 0
+
+# TYPE les_misc_out_traffic_proof gauge
+les_misc_out_traffic_proof 0
+
+# TYPE les_misc_out_traffic_receipt gauge
+les_misc_out_traffic_receipt 0
+
+# TYPE les_misc_out_traffic_total gauge
+les_misc_out_traffic_total 0
+
+# TYPE les_misc_out_traffic_txStatus gauge
+les_misc_out_traffic_txStatus 0
+
+# TYPE les_misc_out_traffic_txs gauge
+les_misc_out_traffic_txs 0
+
+# TYPE les_misc_serve_body_count counter
+les_misc_serve_body_count 0
+
+# TYPE les_misc_serve_body summary
+les_misc_serve_body {quantile="0.5"} 0
+les_misc_serve_body {quantile="0.75"} 0
+les_misc_serve_body {quantile="0.95"} 0
+les_misc_serve_body {quantile="0.99"} 0
+les_misc_serve_body {quantile="0.999"} 0
+les_misc_serve_body {quantile="0.9999"} 0
+
+# TYPE les_misc_serve_code_count counter
+les_misc_serve_code_count 0
+
+# TYPE les_misc_serve_code summary
+les_misc_serve_code {quantile="0.5"} 0
+les_misc_serve_code {quantile="0.75"} 0
+les_misc_serve_code {quantile="0.95"} 0
+les_misc_serve_code {quantile="0.99"} 0
+les_misc_serve_code {quantile="0.999"} 0
+les_misc_serve_code {quantile="0.9999"} 0
+
+# TYPE les_misc_serve_header_count counter
+les_misc_serve_header_count 0
+
+# TYPE les_misc_serve_header summary
+les_misc_serve_header {quantile="0.5"} 0
+les_misc_serve_header {quantile="0.75"} 0
+les_misc_serve_header {quantile="0.95"} 0
+les_misc_serve_header {quantile="0.99"} 0
+les_misc_serve_header {quantile="0.999"} 0
+les_misc_serve_header {quantile="0.9999"} 0
+
+# TYPE les_misc_serve_helperTrie_count counter
+les_misc_serve_helperTrie_count 0
+
+# TYPE les_misc_serve_helperTrie summary
+les_misc_serve_helperTrie {quantile="0.5"} 0
+les_misc_serve_helperTrie {quantile="0.75"} 0
+les_misc_serve_helperTrie {quantile="0.95"} 0
+les_misc_serve_helperTrie {quantile="0.99"} 0
+les_misc_serve_helperTrie {quantile="0.999"} 0
+les_misc_serve_helperTrie {quantile="0.9999"} 0
+
+# TYPE les_misc_serve_proof_count counter
+les_misc_serve_proof_count 0
+
+# TYPE les_misc_serve_proof summary
+les_misc_serve_proof {quantile="0.5"} 0
+les_misc_serve_proof {quantile="0.75"} 0
+les_misc_serve_proof {quantile="0.95"} 0
+les_misc_serve_proof {quantile="0.99"} 0
+les_misc_serve_proof {quantile="0.999"} 0
+les_misc_serve_proof {quantile="0.9999"} 0
+
+# TYPE les_misc_serve_receipt_count counter
+les_misc_serve_receipt_count 0
+
+# TYPE les_misc_serve_receipt summary
+les_misc_serve_receipt {quantile="0.5"} 0
+les_misc_serve_receipt {quantile="0.75"} 0
+les_misc_serve_receipt {quantile="0.95"} 0
+les_misc_serve_receipt {quantile="0.99"} 0
+les_misc_serve_receipt {quantile="0.999"} 0
+les_misc_serve_receipt {quantile="0.9999"} 0
+
+# TYPE les_misc_serve_txStatus_count counter
+les_misc_serve_txStatus_count 0
+
+# TYPE les_misc_serve_txStatus summary
+les_misc_serve_txStatus {quantile="0.5"} 0
+les_misc_serve_txStatus {quantile="0.75"} 0
+les_misc_serve_txStatus {quantile="0.95"} 0
+les_misc_serve_txStatus {quantile="0.99"} 0
+les_misc_serve_txStatus {quantile="0.999"} 0
+les_misc_serve_txStatus {quantile="0.9999"} 0
+
+# TYPE les_misc_serve_txs_count counter
+les_misc_serve_txs_count 0
+
+# TYPE les_misc_serve_txs summary
+les_misc_serve_txs {quantile="0.5"} 0
+les_misc_serve_txs {quantile="0.75"} 0
+les_misc_serve_txs {quantile="0.95"} 0
+les_misc_serve_txs {quantile="0.99"} 0
+les_misc_serve_txs {quantile="0.999"} 0
+les_misc_serve_txs {quantile="0.9999"} 0
+
+# TYPE les_server_blockProcessingTime_count counter
+les_server_blockProcessingTime_count 0
+
+# TYPE les_server_blockProcessingTime summary IMP
+les_server_blockProcessingTime {quantile="0.5"} 0
+les_server_blockProcessingTime {quantile="0.75"} 0
+les_server_blockProcessingTime {quantile="0.95"} 0
+les_server_blockProcessingTime {quantile="0.99"} 0
+les_server_blockProcessingTime {quantile="0.999"} 0
+les_server_blockProcessingTime {quantile="0.9999"} 0
+
+# TYPE les_server_clientEvent_error gauge
+les_server_clientEvent_error 0
+
+# TYPE les_server_clientEvent_freeze gauge
+les_server_clientEvent_freeze 0
+
+# TYPE les_server_globalFactor gauge
+les_server_globalFactor 0
+
+# TYPE les_server_recentRequestEstimated gauge
+les_server_recentRequestEstimated 0
+
+# TYPE les_server_recentRequestServed gauge
+les_server_recentRequestServed 0
+
+# TYPE les_server_req_avgEstimatedTime gauge
+les_server_req_avgEstimatedTime 0
+
+# TYPE les_server_req_avgServedTime gauge
+les_server_req_avgServedTime 0
+
+# TYPE les_server_req_estimatedTime_count counter
+les_server_req_estimatedTime_count 0
+
+# TYPE les_server_req_estimatedTime summary
+les_server_req_estimatedTime {quantile="0.5"} 0
+les_server_req_estimatedTime {quantile="0.75"} 0
+les_server_req_estimatedTime {quantile="0.95"} 0
+les_server_req_estimatedTime {quantile="0.99"} 0
+les_server_req_estimatedTime {quantile="0.999"} 0
+les_server_req_estimatedTime {quantile="0.9999"} 0
+
+# TYPE les_server_req_relative_count counter
+les_server_req_relative_count 0
+
+# TYPE les_server_req_relative summary
+les_server_req_relative {quantile="0.5"} 0
+les_server_req_relative {quantile="0.75"} 0
+les_server_req_relative {quantile="0.95"} 0
+les_server_req_relative {quantile="0.99"} 0
+les_server_req_relative {quantile="0.999"} 0
+les_server_req_relative {quantile="0.9999"} 0
+
+# TYPE les_server_req_relative_body_count counter
+les_server_req_relative_body_count 0
+
+# TYPE les_server_req_relative_body summary
+les_server_req_relative_body {quantile="0.5"} 0
+les_server_req_relative_body {quantile="0.75"} 0
+les_server_req_relative_body {quantile="0.95"} 0
+les_server_req_relative_body {quantile="0.99"} 0
+les_server_req_relative_body {quantile="0.999"} 0
+les_server_req_relative_body {quantile="0.9999"} 0
+
+# TYPE les_server_req_relative_code_count counter
+les_server_req_relative_code_count 0
+
+# TYPE les_server_req_relative_code summary
+les_server_req_relative_code {quantile="0.5"} 0
+les_server_req_relative_code {quantile="0.75"} 0
+les_server_req_relative_code {quantile="0.95"} 0
+les_server_req_relative_code {quantile="0.99"} 0
+les_server_req_relative_code {quantile="0.999"} 0
+les_server_req_relative_code {quantile="0.9999"} 0
+
+# TYPE les_server_req_relative_header_count counter
+les_server_req_relative_header_count 0
+
+# TYPE les_server_req_relative_header summary
+les_server_req_relative_header {quantile="0.5"} 0
+les_server_req_relative_header {quantile="0.75"} 0
+les_server_req_relative_header {quantile="0.95"} 0
+les_server_req_relative_header {quantile="0.99"} 0
+les_server_req_relative_header {quantile="0.999"} 0
+les_server_req_relative_header {quantile="0.9999"} 0
+
+# TYPE les_server_req_relative_helperTrie_count counter
+les_server_req_relative_helperTrie_count 0
+
+# TYPE les_server_req_relative_helperTrie summary
+les_server_req_relative_helperTrie {quantile="0.5"} 0
+les_server_req_relative_helperTrie {quantile="0.75"} 0
+les_server_req_relative_helperTrie {quantile="0.95"} 0
+les_server_req_relative_helperTrie {quantile="0.99"} 0
+les_server_req_relative_helperTrie {quantile="0.999"} 0
+les_server_req_relative_helperTrie {quantile="0.9999"} 0
+
+# TYPE les_server_req_relative_proof_count counter
+les_server_req_relative_proof_count 0
+
+# TYPE les_server_req_relative_proof summary
+les_server_req_relative_proof {quantile="0.5"} 0
+les_server_req_relative_proof {quantile="0.75"} 0
+les_server_req_relative_proof {quantile="0.95"} 0
+les_server_req_relative_proof {quantile="0.99"} 0
+les_server_req_relative_proof {quantile="0.999"} 0
+les_server_req_relative_proof {quantile="0.9999"} 0
+
+# TYPE les_server_req_relative_receipt_count counter
+les_server_req_relative_receipt_count 0
+
+# TYPE les_server_req_relative_receipt summary
+les_server_req_relative_receipt {quantile="0.5"} 0
+les_server_req_relative_receipt {quantile="0.75"} 0
+les_server_req_relative_receipt {quantile="0.95"} 0
+les_server_req_relative_receipt {quantile="0.99"} 0
+les_server_req_relative_receipt {quantile="0.999"} 0
+les_server_req_relative_receipt {quantile="0.9999"} 0
+
+# TYPE les_server_req_relative_txStatus_count counter
+les_server_req_relative_txStatus_count 0
+
+# TYPE les_server_req_relative_txStatus summary
+les_server_req_relative_txStatus {quantile="0.5"} 0
+les_server_req_relative_txStatus {quantile="0.75"} 0
+les_server_req_relative_txStatus {quantile="0.95"} 0
+les_server_req_relative_txStatus {quantile="0.99"} 0
+les_server_req_relative_txStatus {quantile="0.999"} 0
+les_server_req_relative_txStatus {quantile="0.9999"} 0
+
+# TYPE les_server_req_relative_txs_count counter
+les_server_req_relative_txs_count 0
+
+# TYPE les_server_req_relative_txs summary
+les_server_req_relative_txs {quantile="0.5"} 0
+les_server_req_relative_txs {quantile="0.75"} 0
+les_server_req_relative_txs {quantile="0.95"} 0
+les_server_req_relative_txs {quantile="0.99"} 0
+les_server_req_relative_txs {quantile="0.999"} 0
+les_server_req_relative_txs {quantile="0.9999"} 0
+
+# TYPE les_server_req_servedTime_count counter
+les_server_req_servedTime_count 0
+
+# TYPE les_server_req_servedTime summary
+les_server_req_servedTime {quantile="0.5"} 0
+les_server_req_servedTime {quantile="0.75"} 0
+les_server_req_servedTime {quantile="0.95"} 0
+les_server_req_servedTime {quantile="0.99"} 0
+les_server_req_servedTime {quantile="0.999"} 0
+les_server_req_servedTime {quantile="0.9999"} 0
+
+# TYPE les_server_servingQueue_queued gauge
+les_server_servingQueue_queued 0
+
+# TYPE les_server_servingQueue_served gauge
+les_server_servingQueue_served 0
+
+# TYPE les_server_totalCapacity gauge
+les_server_totalCapacity 0
+
+# TYPE les_server_totalRecharge gauge
+les_server_totalRecharge 0
+
+# TYPE p2p_dials gauge IMP
+p2p_dials 69
+
+#IMP all egress
+
+# TYPE p2p_egress gauge IMP
+p2p_egress 134834
+
+# TYPE p2p_egress_eth_65_0x00 gauge
+p2p_egress_eth_65_0x00 177
+
+# TYPE p2p_egress_eth_65_0x00_packets gauge
+p2p_egress_eth_65_0x00_packets 3
+
+# TYPE p2p_egress_eth_65_0x03 gauge
+p2p_egress_eth_65_0x03 1315
+
+# TYPE p2p_egress_eth_65_0x03_packets gauge
+p2p_egress_eth_65_0x03_packets 132
+
+# TYPE p2p_egress_eth_65_0x04 gauge
+p2p_egress_eth_65_0x04 3
+
+# TYPE p2p_egress_eth_65_0x04_packets gauge
+p2p_egress_eth_65_0x04_packets 1
+
+# TYPE p2p_egress_eth_65_0x05 gauge
+p2p_egress_eth_65_0x05 68658
+
+# TYPE p2p_egress_eth_65_0x05_packets gauge
+p2p_egress_eth_65_0x05_packets 83
+
+# TYPE p2p_egress_eth_66_0x00 gauge
+p2p_egress_eth_66_0x00 327
+
+# TYPE p2p_egress_eth_66_0x00_packets gauge
+p2p_egress_eth_66_0x00_packets 5
+
+# TYPE p2p_egress_eth_66_0x03 gauge
+p2p_egress_eth_66_0x03 20
+
+# TYPE p2p_egress_eth_66_0x03_packets gauge
+p2p_egress_eth_66_0x03_packets 1
+
+# TYPE p2p_egress_eth_66_0x04 gauge
+p2p_egress_eth_66_0x04 0
+
+# TYPE p2p_egress_eth_66_0x04_packets gauge
+p2p_egress_eth_66_0x04_packets 0
+
+# TYPE p2p_egress_eth_66_0x05 gauge
+p2p_egress_eth_66_0x05 0
+
+# TYPE p2p_egress_eth_66_0x05_packets gauge
+p2p_egress_eth_66_0x05_packets 0
+
+# TYPE p2p_egress_snap_1_0x00 gauge
+p2p_egress_snap_1_0x00 0
+
+# TYPE p2p_egress_snap_1_0x00_packets gauge
+p2p_egress_snap_1_0x00_packets 0
+
+# TYPE p2p_handle_eth_65_0x01_count counter
+p2p_handle_eth_65_0x01_count 1
+
+# TYPE p2p_handle_eth_65_0x01 summary
+p2p_handle_eth_65_0x01 {quantile="0.5"} 185
+p2p_handle_eth_65_0x01 {quantile="0.75"} 185
+p2p_handle_eth_65_0x01 {quantile="0.95"} 185
+p2p_handle_eth_65_0x01 {quantile="0.99"} 185
+p2p_handle_eth_65_0x01 {quantile="0.999"} 185
+p2p_handle_eth_65_0x01 {quantile="0.9999"} 185
+
+# TYPE p2p_handle_eth_65_0x03_count counter
+p2p_handle_eth_65_0x03_count 1
+
+# TYPE p2p_handle_eth_65_0x03 summary
+p2p_handle_eth_65_0x03 {quantile="0.5"} 126
+p2p_handle_eth_65_0x03 {quantile="0.75"} 126
+p2p_handle_eth_65_0x03 {quantile="0.95"} 126
+p2p_handle_eth_65_0x03 {quantile="0.99"} 126
+p2p_handle_eth_65_0x03 {quantile="0.999"} 126
+p2p_handle_eth_65_0x03 {quantile="0.9999"} 126
+
+# TYPE p2p_handle_eth_65_0x04_count counter
+p2p_handle_eth_65_0x04_count 154
+
+# TYPE p2p_handle_eth_65_0x04 summary
+p2p_handle_eth_65_0x04 {quantile="0.5"} 855
+p2p_handle_eth_65_0x04 {quantile="0.75"} 1172
+p2p_handle_eth_65_0x04 {quantile="0.95"} 1673.5
+p2p_handle_eth_65_0x04 {quantile="0.99"} 8296.449999999888
+p2p_handle_eth_65_0x04 {quantile="0.999"} 13775
+p2p_handle_eth_65_0x04 {quantile="0.9999"} 13775
+
+# TYPE p2p_handle_eth_65_0x06_count counter
+p2p_handle_eth_65_0x06_count 99
+
+# TYPE p2p_handle_eth_65_0x06 summary
+p2p_handle_eth_65_0x06 {quantile="0.5"} 180
+p2p_handle_eth_65_0x06 {quantile="0.75"} 250
+p2p_handle_eth_65_0x06 {quantile="0.95"} 2105
+p2p_handle_eth_65_0x06 {quantile="0.99"} 7910
+p2p_handle_eth_65_0x06 {quantile="0.999"} 7910
+p2p_handle_eth_65_0x06 {quantile="0.9999"} 7910
+
+# TYPE p2p_handle_eth_65_0x08_count counter
+p2p_handle_eth_65_0x08_count 17
+
+# TYPE p2p_handle_eth_65_0x08 summary
+p2p_handle_eth_65_0x08 {quantile="0.5"} 5
+p2p_handle_eth_65_0x08 {quantile="0.75"} 7
+p2p_handle_eth_65_0x08 {quantile="0.95"} 87
+p2p_handle_eth_65_0x08 {quantile="0.99"} 87
+p2p_handle_eth_65_0x08 {quantile="0.999"} 87
+p2p_handle_eth_65_0x08 {quantile="0.9999"} 87
+
+# TYPE p2p_handle_eth_66_0x03_count counter
+p2p_handle_eth_66_0x03_count 1
+
+# TYPE p2p_handle_eth_66_0x03 summary
+p2p_handle_eth_66_0x03 {quantile="0.5"} 405
+p2p_handle_eth_66_0x03 {quantile="0.75"} 405
+p2p_handle_eth_66_0x03 {quantile="0.95"} 405
+p2p_handle_eth_66_0x03 {quantile="0.99"} 405
+p2p_handle_eth_66_0x03 {quantile="0.999"} 405
+p2p_handle_eth_66_0x03 {quantile="0.9999"} 405
+
+# TYPE p2p_handle_eth_66_0x04_count counter
+p2p_handle_eth_66_0x04_count 2
+
+# TYPE p2p_handle_eth_66_0x04 summary
+p2p_handle_eth_66_0x04 {quantile="0.5"} 595.5
+p2p_handle_eth_66_0x04 {quantile="0.75"} 1091
+p2p_handle_eth_66_0x04 {quantile="0.95"} 1091
+p2p_handle_eth_66_0x04 {quantile="0.99"} 1091
+p2p_handle_eth_66_0x04 {quantile="0.999"} 1091
+p2p_handle_eth_66_0x04 {quantile="0.9999"} 1091
+
+# TYPE p2p_handle_eth_66_0x06_count counter
+p2p_handle_eth_66_0x06_count 1
+
+# TYPE p2p_handle_eth_66_0x06 summary
+p2p_handle_eth_66_0x06 {quantile="0.5"} 1309
+p2p_handle_eth_66_0x06 {quantile="0.75"} 1309
+p2p_handle_eth_66_0x06 {quantile="0.95"} 1309
+p2p_handle_eth_66_0x06 {quantile="0.99"} 1309
+p2p_handle_eth_66_0x06 {quantile="0.999"} 1309
+p2p_handle_eth_66_0x06 {quantile="0.9999"} 1309
+
+# TYPE p2p_handle_eth_66_0x08_count counter
+p2p_handle_eth_66_0x08_count 2
+
+# TYPE p2p_handle_eth_66_0x08 summary
+p2p_handle_eth_66_0x08 {quantile="0.5"} 16
+p2p_handle_eth_66_0x08 {quantile="0.75"} 28
+p2p_handle_eth_66_0x08 {quantile="0.95"} 28
+p2p_handle_eth_66_0x08 {quantile="0.99"} 28
+p2p_handle_eth_66_0x08 {quantile="0.999"} 28
+p2p_handle_eth_66_0x08 {quantile="0.9999"} 28
+
+# TYPE p2p_handle_snap_1_0x01_count counter
+p2p_handle_snap_1_0x01_count 1
+
+# TYPE p2p_handle_snap_1_0x01 summary
+p2p_handle_snap_1_0x01 {quantile="0.5"} 375
+p2p_handle_snap_1_0x01 {quantile="0.75"} 375
+p2p_handle_snap_1_0x01 {quantile="0.95"} 375
+p2p_handle_snap_1_0x01 {quantile="0.99"} 375
+p2p_handle_snap_1_0x01 {quantile="0.999"} 375
+p2p_handle_snap_1_0x01 {quantile="0.9999"} 375
+
+# TYPE p2p_ingress gauge #IMP
+p2p_ingress 3918214
+
+# TYPE p2p_ingress_eth_65_0x00 gauge #IMP
+p2p_ingress_eth_65_0x00 271
+
+# TYPE p2p_ingress_eth_65_0x00_packets gauge IMP
+p2p_ingress_eth_65_0x00_packets 3
+
+# TYPE p2p_ingress_eth_65_0x01 gauge IMP
+p2p_ingress_eth_65_0x01 0
+
+# TYPE p2p_ingress_eth_65_0x01_packets gauge IMP
+p2p_ingress_eth_65_0x01_packets 0
+
+# TYPE p2p_ingress_eth_65_0x03 gauge IMP
+p2p_ingress_eth_65_0x03 10
+
+# TYPE p2p_ingress_eth_65_0x03_packets gauge IMP
+p2p_ingress_eth_65_0x03_packets 1
+
+# TYPE p2p_ingress_eth_65_0x04 gauge IMP
+p2p_ingress_eth_65_0x04 3362209
+
+# TYPE p2p_ingress_eth_65_0x04_packets gauge IMP
+p2p_ingress_eth_65_0x04_packets 131
+
+# TYPE p2p_ingress_eth_65_0x06 gauge IMP
+p2p_ingress_eth_65_0x06 383458
+
+# TYPE p2p_ingress_eth_65_0x06_packets gauge IMP
+p2p_ingress_eth_65_0x06_packets 83
+
+# TYPE p2p_ingress_eth_65_0x08 gauge
+p2p_ingress_eth_65_0x08 96828
+
+# TYPE p2p_ingress_eth_65_0x08_packets gauge
+p2p_ingress_eth_65_0x08_packets 9
+
+# TYPE p2p_ingress_eth_66_0x00 gauge
+p2p_ingress_eth_66_0x00 436
+
+# TYPE p2p_ingress_eth_66_0x00_packets gauge
+p2p_ingress_eth_66_0x00_packets 5
+
+# TYPE p2p_ingress_eth_66_0x03 gauge
+p2p_ingress_eth_66_0x03 0
+
+# TYPE p2p_ingress_eth_66_0x03_packets gauge
+p2p_ingress_eth_66_0x03_packets 0
+
+# TYPE p2p_ingress_eth_66_0x04 gauge
+p2p_ingress_eth_66_0x04 0
+
+# TYPE p2p_ingress_eth_66_0x04_packets gauge
+p2p_ingress_eth_66_0x04_packets 0
+
+# TYPE p2p_ingress_eth_66_0x06 gauge
+p2p_ingress_eth_66_0x06 0
+
+# TYPE p2p_ingress_eth_66_0x06_packets gauge
+p2p_ingress_eth_66_0x06_packets 0
+
+# TYPE p2p_ingress_eth_66_0x08 gauge
+p2p_ingress_eth_66_0x08 0
+
+# TYPE p2p_ingress_eth_66_0x08_packets gauge
+p2p_ingress_eth_66_0x08_packets 0
+
+# TYPE p2p_ingress_snap_1_0x01 gauge
+p2p_ingress_snap_1_0x01 0
+
+# TYPE p2p_ingress_snap_1_0x01_packets gauge
+p2p_ingress_snap_1_0x01_packets 0
+
+# TYPE p2p_peers gauge IMP
+p2p_peers 8
+
+# TYPE p2p_serves gauge IMP
+p2p_serves 70
+
+# TYPE p2p_tracked_eth_66_0x03 gauge
+p2p_tracked_eth_66_0x03 2
+
+# TYPE p2p_tracked_eth_66_0x05 gauge
+p2p_tracked_eth_66_0x05 0
+
+# TYPE p2p_tracked_snap_1_0x00 gauge
+p2p_tracked_snap_1_0x00 0
+
+# TYPE p2p_wait_eth_66_0x03_count counter
+p2p_wait_eth_66_0x03_count 2
+
+# TYPE p2p_wait_eth_66_0x03 summary
+p2p_wait_eth_66_0x03 {quantile="0.5"} 567440.5
+p2p_wait_eth_66_0x03 {quantile="0.75"} 574606
+p2p_wait_eth_66_0x03 {quantile="0.95"} 574606
+p2p_wait_eth_66_0x03 {quantile="0.99"} 574606
+p2p_wait_eth_66_0x03 {quantile="0.999"} 574606
+p2p_wait_eth_66_0x03 {quantile="0.9999"} 574606
+
+# TYPE p2p_wait_eth_66_0x05_count counter
+p2p_wait_eth_66_0x05_count 1
+
+# TYPE p2p_wait_eth_66_0x05 summary
+p2p_wait_eth_66_0x05 {quantile="0.5"} 212272
+p2p_wait_eth_66_0x05 {quantile="0.75"} 212272
+p2p_wait_eth_66_0x05 {quantile="0.95"} 212272
+p2p_wait_eth_66_0x05 {quantile="0.99"} 212272
+p2p_wait_eth_66_0x05 {quantile="0.999"} 212272
+p2p_wait_eth_66_0x05 {quantile="0.9999"} 212272
+
+# TYPE p2p_wait_snap_1_0x00_count counter
+p2p_wait_snap_1_0x00_count 1
+
+# TYPE p2p_wait_snap_1_0x00 summary
+p2p_wait_snap_1_0x00 {quantile="0.5"} 574823
+p2p_wait_snap_1_0x00 {quantile="0.75"} 574823
+p2p_wait_snap_1_0x00 {quantile="0.95"} 574823
+p2p_wait_snap_1_0x00 {quantile="0.99"} 574823
+p2p_wait_snap_1_0x00 {quantile="0.999"} 574823
+p2p_wait_snap_1_0x00 {quantile="0.9999"} 574823
+
+# TYPE rpc_duration_all_count counter
+rpc_duration_all_count 0
+
+# TYPE rpc_duration_all summary
+rpc_duration_all {quantile="0.5"} 0
+rpc_duration_all {quantile="0.75"} 0
+rpc_duration_all {quantile="0.95"} 0
+rpc_duration_all {quantile="0.99"} 0
+rpc_duration_all {quantile="0.999"} 0
+rpc_duration_all {quantile="0.9999"} 0
+
+# TYPE rpc_failure gauge
+rpc_failure 0
+
+# TYPE rpc_requests gauge
+rpc_requests 0
+
+# TYPE rpc_success gauge
+rpc_success 0
+
+# TYPE state_snapshot_bloom_account_falsehit gauge
+state_snapshot_bloom_account_falsehit 0
+
+# TYPE state_snapshot_bloom_account_miss gauge
+state_snapshot_bloom_account_miss 0
+
+# TYPE state_snapshot_bloom_account_truehit gauge
+state_snapshot_bloom_account_truehit 0
+
+# TYPE state_snapshot_bloom_error gauge
+state_snapshot_bloom_error 0
+
+# TYPE state_snapshot_bloom_storage_falsehit gauge
+state_snapshot_bloom_storage_falsehit 0
+
+# TYPE state_snapshot_bloom_storage_miss gauge
+state_snapshot_bloom_storage_miss 0
+
+# TYPE state_snapshot_bloom_storage_truehit gauge
+state_snapshot_bloom_storage_truehit 0
+
+# TYPE state_snapshot_clean_account_hit gauge
+state_snapshot_clean_account_hit 0
+
+# TYPE state_snapshot_clean_account_inex gauge
+state_snapshot_clean_account_inex 0
+
+# TYPE state_snapshot_clean_account_miss gauge
+state_snapshot_clean_account_miss 0
+
+# TYPE state_snapshot_clean_account_read gauge
+state_snapshot_clean_account_read 0
+
+# TYPE state_snapshot_clean_account_write gauge
+state_snapshot_clean_account_write 0
+
+# TYPE state_snapshot_clean_storage_hit gauge
+state_snapshot_clean_storage_hit 0
+
+# TYPE state_snapshot_clean_storage_inex gauge
+state_snapshot_clean_storage_inex 0
+
+# TYPE state_snapshot_clean_storage_miss gauge
+state_snapshot_clean_storage_miss 0
+
+# TYPE state_snapshot_clean_storage_read gauge
+state_snapshot_clean_storage_read 0
+
+# TYPE state_snapshot_clean_storage_write gauge
+state_snapshot_clean_storage_write 0
+
+# TYPE state_snapshot_dirty_account_hit gauge
+state_snapshot_dirty_account_hit 0
+
+# TYPE state_snapshot_dirty_account_hit_depth_count counter
+state_snapshot_dirty_account_hit_depth_count 0
+
+# TYPE state_snapshot_dirty_account_hit_depth summary
+state_snapshot_dirty_account_hit_depth {quantile="0.5"} 0
+state_snapshot_dirty_account_hit_depth {quantile="0.75"} 0
+state_snapshot_dirty_account_hit_depth {quantile="0.95"} 0
+state_snapshot_dirty_account_hit_depth {quantile="0.99"} 0
+state_snapshot_dirty_account_hit_depth {quantile="0.999"} 0
+state_snapshot_dirty_account_hit_depth {quantile="0.9999"} 0
+
+# TYPE state_snapshot_dirty_account_inex gauge
+state_snapshot_dirty_account_inex 0
+
+# TYPE state_snapshot_dirty_account_miss gauge
+state_snapshot_dirty_account_miss 0
+
+# TYPE state_snapshot_dirty_account_read gauge
+state_snapshot_dirty_account_read 0
+
+# TYPE state_snapshot_dirty_account_write gauge
+state_snapshot_dirty_account_write 0
+
+# TYPE state_snapshot_dirty_storage_hit gauge
+state_snapshot_dirty_storage_hit 0
+
+# TYPE state_snapshot_dirty_storage_hit_depth_count counter
+state_snapshot_dirty_storage_hit_depth_count 0
+
+# TYPE state_snapshot_dirty_storage_hit_depth summary
+state_snapshot_dirty_storage_hit_depth {quantile="0.5"} 0
+state_snapshot_dirty_storage_hit_depth {quantile="0.75"} 0
+state_snapshot_dirty_storage_hit_depth {quantile="0.95"} 0
+state_snapshot_dirty_storage_hit_depth {quantile="0.99"} 0
+state_snapshot_dirty_storage_hit_depth {quantile="0.999"} 0
+state_snapshot_dirty_storage_hit_depth {quantile="0.9999"} 0
+
+# TYPE state_snapshot_dirty_storage_inex gauge
+state_snapshot_dirty_storage_inex 0
+
+# TYPE state_snapshot_dirty_storage_miss gauge
+state_snapshot_dirty_storage_miss 0
+
+# TYPE state_snapshot_dirty_storage_read gauge
+state_snapshot_dirty_storage_read 0
+
+# TYPE state_snapshot_dirty_storage_write gauge
+state_snapshot_dirty_storage_write 0
+
+# TYPE state_snapshot_flush_account_item gauge
+state_snapshot_flush_account_item 0
+
+# TYPE state_snapshot_flush_account_size gauge
+state_snapshot_flush_account_size 0
+
+# TYPE state_snapshot_flush_storage_item gauge
+state_snapshot_flush_storage_item 0
+
+# TYPE state_snapshot_flush_storage_size gauge
+state_snapshot_flush_storage_size 0
+
+# TYPE state_snapshot_generation_account_generated gauge
+state_snapshot_generation_account_generated 8893
+
+# TYPE state_snapshot_generation_account_missall gauge
+state_snapshot_generation_account_missall 1
+
+# TYPE state_snapshot_generation_account_recovered gauge
+state_snapshot_generation_account_recovered 0
+
+# TYPE state_snapshot_generation_account_wiped gauge
+state_snapshot_generation_account_wiped 0
+
+# TYPE state_snapshot_generation_duration_account_prove gauge
+state_snapshot_generation_duration_account_prove 16221
+
+# TYPE state_snapshot_generation_duration_account_snapread gauge
+state_snapshot_generation_duration_account_snapread 89448
+
+# TYPE state_snapshot_generation_duration_account_trieread gauge
+state_snapshot_generation_duration_account_trieread 78590307
+
+# TYPE state_snapshot_generation_duration_account_write gauge
+state_snapshot_generation_duration_account_write 84327092
+
+# TYPE state_snapshot_generation_duration_storage_prove gauge
+state_snapshot_generation_duration_storage_prove 0
+
+# TYPE state_snapshot_generation_duration_storage_snapread gauge
+state_snapshot_generation_duration_storage_snapread 0
+
+# TYPE state_snapshot_generation_duration_storage_trieread gauge
+state_snapshot_generation_duration_storage_trieread 0
+
+# TYPE state_snapshot_generation_duration_storage_write gauge
+state_snapshot_generation_duration_storage_write 0
+
+# TYPE state_snapshot_generation_proof_failure gauge
+state_snapshot_generation_proof_failure 1
+
+# TYPE state_snapshot_generation_proof_success gauge
+state_snapshot_generation_proof_success 0
+
+# TYPE state_snapshot_generation_storage_generated gauge
+state_snapshot_generation_storage_generated 0
+
+# TYPE state_snapshot_generation_storage_missall gauge
+state_snapshot_generation_storage_missall 0
+
+# TYPE state_snapshot_generation_storage_recovered gauge
+state_snapshot_generation_storage_recovered 0
+
+# TYPE state_snapshot_generation_storage_wiped gauge
+state_snapshot_generation_storage_wiped 0
+
+# TYPE system_cpu_goroutines gauge
+system_cpu_goroutines 129
+
+# TYPE system_cpu_procload gauge
+system_cpu_procload 47
+
+# TYPE system_cpu_sysload gauge
+system_cpu_sysload 215
+
+# TYPE system_cpu_syswait gauge
+system_cpu_syswait 25
+
+# TYPE system_cpu_threads gauge
+system_cpu_threads 13
+
+# TYPE system_disk_readbytes gauge
+system_disk_readbytes 5017534
+
+# TYPE system_disk_readcount gauge
+system_disk_readcount 913
+
+# TYPE system_disk_readdata gauge
+system_disk_readdata 1777439
+
+# TYPE system_disk_writebytes gauge
+system_disk_writebytes 36555070
+
+# TYPE system_disk_writecount gauge
+system_disk_writecount 72172
+
+# TYPE system_disk_writedata gauge
+system_disk_writedata 13225794
+
+# TYPE system_memory_allocs gauge
+system_memory_allocs 2144962
+
+# TYPE system_memory_frees gauge
+system_memory_frees 1268637
+
+# TYPE system_memory_held gauge
+system_memory_held 728506368
+
+# TYPE system_memory_pauses gauge
+system_memory_pauses 4199764
+
+# TYPE system_memory_used gauge
+system_memory_used 577212048
+
+# TYPE trie_bloom_add gauge
+trie_bloom_add 0
+
+# TYPE trie_bloom_error gauge
+trie_bloom_error 0
+
+# TYPE trie_bloom_fault gauge
+trie_bloom_fault 2
+
+# TYPE trie_bloom_load gauge
+trie_bloom_load 0
+
+# TYPE trie_bloom_miss gauge
+trie_bloom_miss 0
+
+# TYPE trie_bloom_test gauge
+trie_bloom_test 0
+
+# TYPE trie_memcache_clean_hit gauge
+trie_memcache_clean_hit 6
+
+# TYPE trie_memcache_clean_miss gauge
+trie_memcache_clean_miss 12356
+
+# TYPE trie_memcache_clean_read gauge
+trie_memcache_clean_read 2679
+
+# TYPE trie_memcache_clean_write gauge
+trie_memcache_clean_write 1483023
+
+# TYPE trie_memcache_commit_nodes gauge
+trie_memcache_commit_nodes 12356
+
+# TYPE trie_memcache_commit_size gauge
+trie_memcache_commit_size 1869429
+
+# TYPE trie_memcache_dirty_hit gauge
+trie_memcache_dirty_hit 0
+
+# TYPE trie_memcache_dirty_miss gauge
+trie_memcache_dirty_miss 12356
+
+# TYPE trie_memcache_dirty_read gauge
+trie_memcache_dirty_read 0
+
+# TYPE trie_memcache_dirty_write gauge
+trie_memcache_dirty_write 1474037
+
+# TYPE trie_memcache_flush_nodes gauge
+trie_memcache_flush_nodes 0
+
+# TYPE trie_memcache_flush_size gauge
+trie_memcache_flush_size 0
+
+# TYPE trie_memcache_gc_nodes gauge
+trie_memcache_gc_nodes 0
+
+# TYPE trie_memcache_gc_size gauge
+trie_memcache_gc_size 0
+
+# TYPE trie_prefetch_miner_account_dup gauge
+trie_prefetch_miner_account_dup 0
+
+# TYPE trie_prefetch_miner_account_load gauge
+trie_prefetch_miner_account_load 0
+
+# TYPE trie_prefetch_miner_account_skip gauge
+trie_prefetch_miner_account_skip 0
+
+# TYPE trie_prefetch_miner_account_waste gauge
+trie_prefetch_miner_account_waste 0
+
+# TYPE trie_prefetch_miner_deliverymiss gauge
+trie_prefetch_miner_deliverymiss 1
+
+# TYPE trie_prefetch_miner_storage_dup gauge
+trie_prefetch_miner_storage_dup 0
+
+# TYPE trie_prefetch_miner_storage_load gauge
+trie_prefetch_miner_storage_load 0
+
+# TYPE trie_prefetch_miner_storage_skip gauge
+trie_prefetch_miner_storage_skip 0
+
+# TYPE trie_prefetch_miner_storage_waste gauge
+trie_prefetch_miner_storage_waste 0
+
+# TYPE txpool_invalid gauge IMP + rate
+txpool_invalid 0
+
+# TYPE txpool_known gauge
+txpool_known 0
+
+
+# TYPE txpool_overflowed gauge
+txpool_overflowed 0
+
+#---
+# TYPE txpool_pending gauge IMP
+txpool_pending 0
+
+# TYPE txpool_local gauge IMP
+txpool_local 0
+
+# TYPE txpool_queued gauge
+txpool_queued 0
+#---
+
+# TYPE txpool_pending_discard gauge IMP + rate
+txpool_pending_discard 0
+
+# TYPE txpool_pending_nofunds gauge IMP + rate
+txpool_pending_nofunds 0
+
+# TYPE txpool_pending_ratelimit gauge IMP + rate
+txpool_pending_ratelimit 0
+
+# TYPE txpool_pending_replace gauge IMP + rate
+txpool_pending_replace 0
+
+
+
+# TYPE txpool_queued_discard gauge IMP + rate
+txpool_queued_discard 0
+ƒga
+# TYPE txpool_queued_eviction gauge IMP + rate
+txpool_queued_eviction 0
+
+# TYPE txpool_queued_nofunds gauge IMP + rate
+txpool_queued_nofunds 0
+
+# TYPE txpool_queued_ratelimit gauge IMP + rate
+txpool_queued_ratelimit 0
+
+# TYPE txpool_queued_replace gauge IMP + rate
+txpool_queued_replace 0
+
+# TYPE txpool_reheap_count counter
+txpool_reheap_count 0
+
+# TYPE txpool_reheap summary
+txpool_reheap {quantile="0.5"} 0
+txpool_reheap {quantile="0.75"} 0
+txpool_reheap {quantile="0.95"} 0
+txpool_reheap {quantile="0.99"} 0
+txpool_reheap {quantile="0.999"} 0
+txpool_reheap {quantile="0.9999"} 0
+
+# TYPE txpool_slots gauge
+txpool_slots 0
+
+# TYPE txpool_underpriced gauge IMP + rate
+txpool_underpriced 0
+
+# TYPE txpool_valid gauge IMP + rate
+txpool_valid 0
+
+# TYPE vflux_server_capQueryNonZero gauge
+vflux_server_capQueryNonZero 0
+
+# TYPE vflux_server_capQueryZero gauge
+vflux_server_capQueryZero 0
+
+# TYPE vflux_server_clientEvent_activated gauge
+vflux_server_clientEvent_activated 0
+
+# TYPE vflux_server_clientEvent_connected gauge
+vflux_server_clientEvent_connected 0
+
+# TYPE vflux_server_clientEvent_deactivated gauge
+vflux_server_clientEvent_deactivated 0
+
+# TYPE vflux_server_clientEvent_disconnected gauge
+vflux_server_clientEvent_disconnected 0
+
+# TYPE vflux_server_totalConnected gauge
+vflux_server_totalConnected 0
+