allow the metrics call to fail
Starting from 1.9.0 Geth removed the `debug_metrics` RPC call Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
3a4b493ab7
commit
62c76c4ced
|
@ -1,3 +1,5 @@
|
||||||
|
# WARNING: This software is deprecated since Geth `1.9.0` which introduced its own [Prometheus endpoint](https://blog.ethereum.org/2019/07/10/geth-v1-9-0/#metrics-collection).
|
||||||
|
|
||||||
# geth_exporter
|
# geth_exporter
|
||||||
|
|
||||||
`geth_exporter` is a metrics exporter for [Prometheus](https://github.com/prometheus/prometheus).
|
`geth_exporter` is a metrics exporter for [Prometheus](https://github.com/prometheus/prometheus).
|
||||||
|
|
18
collector.go
18
collector.go
|
@ -39,18 +39,22 @@ func (c *collector) collect() (flatMetrics, error) {
|
||||||
|
|
||||||
m, err := cl.metrics()
|
m, err := cl.metrics()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
/* not all geth nodes have debug enabled, s might be nil */
|
||||||
|
log.Printf("failed to get metrics: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* can handle m being nil, will just return an empty flatMetrics */
|
||||||
all := transformMetrics(m)
|
all := transformMetrics(m)
|
||||||
|
|
||||||
/* optional syncing stats */
|
|
||||||
s, err := cl.syncingMetrics()
|
s, err := cl.syncingMetrics()
|
||||||
if err == nil {
|
if err != nil {
|
||||||
sync := decodeSyncData(s, "sync_")
|
/* not all geth nodes have eth enabled, s might be nil */
|
||||||
for k, v := range sync {
|
log.Printf("failed to get syncing stats: %v", err)
|
||||||
all[k] = v
|
}
|
||||||
}
|
|
||||||
|
sync := decodeSyncData(s, "sync_")
|
||||||
|
for k, v := range sync {
|
||||||
|
all[k] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
for k := range all {
|
for k := range all {
|
||||||
|
|
|
@ -34,6 +34,8 @@ func transformMetrics(data metrics) flatMetrics {
|
||||||
return flattenMetrics(data, make(flatMetrics), "")
|
return flattenMetrics(data, make(flatMetrics), "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* flattenMetrics can handle data being nil, it will just return memo.
|
||||||
|
* A range over a nil slice is like a range over an empty slice. */
|
||||||
func flattenMetrics(data metrics, memo flatMetrics, prefix string) flatMetrics {
|
func flattenMetrics(data metrics, memo flatMetrics, prefix string) flatMetrics {
|
||||||
for k, v := range data {
|
for k, v := range data {
|
||||||
key := prefix + normalizeKey(k)
|
key := prefix + normalizeKey(k)
|
||||||
|
|
Loading…
Reference in New Issue