关于Geth监控

go-ethereum 在 2019 年 7 月推出了 Geth v1.9.x 版本。

Geth 可以通过 --metrics 命令符收集运行状态信息。 Geth v1.9.x 有3套独立的监控体系,ExpVarsInfluxDBPrometheus

  1. ExpVars

是将Golang系统公共指标暴露给到HTTP接口。Geth 用 pprof 来作为埋点暴露这些公共参数。

运行 Geth –metrics –pprof 将暴露指标成为ExpVars的格式,于地址

http://127.0.0.1:6060/debug/metrics。

ExpVars 有 Golang 非常好的支持。

  1. Prometheus

同理 ExpVars,运行 Geth –metrics –pprof 将暴露指标成为Prometheus的格式,于地址

http://127.0.0.1:6060/debug/metrics/prometheus。

Prometheus更加接近业界的标准。

  1. InfluxDB

ExpVarsPrometheus 是拉取pull数据的监控方式。InfluxDB 是推送push数据的监控方式。

InfluxDB的启用有些麻烦,请参见 geth help 中的 --metrics.influxdb 及其子标识。

参数可视化

推荐使用 Grafana,建议使用 geth-prometheus 项目中给出的图表,参考链接==> https://github.com/karalabe/geth-prometheus。效果如下图:

参考文档==> Geth v1.9.0 Six months distilled

具体功能如下:

  • 节点进程监控
    • 节点的存活,进程中CPU、内存使用率,IO
  • 区块链数据健康监控
    • 节点出块高度历史,出块时间,出块间隔趋势,交易量历史,TPS,磁盘占用,数据目录大小增长趋势
  • 运行环境监控
    • 主机运行环境的系统负载、CPU、内存、磁盘空间使用情况、网络流量、TCP 连接数等
  • 故障告警通知
    • 监控告警策略
    • 支持邮件通知、短信通知
  • 节点网络监控
    • 连接节点数、网络拓扑、地理位置等

仪表板的监控指标:

  • Summary Dashboard
    • 各节点最新块高
    • 各节点监控进程存活
    • 各节点 CPU 使用率变化
    • 节点列表
  • Node Info Dashboard
    • Chain Meta Data - 链的配置信息,如 Chain Name、创建时间等
    • Chain Info - 链的最新块高、共识节点数、共识节点出块历史趋势
    • Node Info - 选定节点的详细信息,包括区块链数据、运行环境、运行软件信息
  • Host Info Dashboard
    • 各节点运行主机的信息,包括系统负载、CPU、内存、硬盘使用率、网络流量
  • Process Info Dashboard
    • 节点中进程(pprof)的历史情况、CPU、内存、IO 变化历史