关于Geth监控
go-ethereum 在 2019 年 7 月推出了 Geth v1.9.x
版本。
Geth 可以通过 --metrics
命令符收集运行状态信息。 Geth v1.9.x
有3套独立的监控体系,ExpVars,InfluxDB 和 Prometheus:
是将Golang系统公共指标暴露给到HTTP接口。Geth 用 pprof
来作为埋点暴露这些公共参数。
运行 Geth –metrics –pprof 将暴露指标成为ExpVars的格式,于地址
http://127.0.0.1:6060/debug/metrics。
ExpVars 有 Golang 非常好的支持。
同理 ExpVars,运行 Geth –metrics –pprof 将暴露指标成为Prometheus的格式,于地址
http://127.0.0.1:6060/debug/metrics/prometheus。
Prometheus更加接近业界的标准。
ExpVars 和 Prometheus 是拉取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 变化历史