ethstats-以太坊生态网络监控工具

现在无论ethereum本身、还是L2、L3,其实本质用的都是同一个技术网络实现的。比如你在不同区域部署了opside的网络节点,为了确保持续运行,怎样实时监控每个节点的健康状况,怎样知道哪个节点失联了?
对于普通的开发者,弄一套复杂的运维监控系统,一个是是否有必要?另一个是懂多少运维技术?
为此,本着赠人玫瑰,手有余香的考虑,我这里推出一款工具:ethstats

1. 概述

ethstats 分为客户端和服务端,客户端实时上报节点信息给服务端,服务端根据得到的信息,发送邮件或者前端渲染等等

以下是ethstats 目前已有的主要功能

  1. 每个节点名称不得重复
  2. 支持实时上传节点信息
  3. 节点异常时,实时邮件反馈。若同一个节点频繁出异常,则一个小时内只发送一份邮件,避免频繁发送造成邮箱上限异常
  4. 定时邮件发送节点简报
  5. server和client强稳定性,可持续稳定运行,降低了运维复杂度,差不多就是个守护进程,要是总停止,三天两头去重启服务,很烦人的。
  6. 可通过命令行传入参或者通过配置文件启动client、server,不建议同时使用两种方式,选择其中一种即可
  7. 本项目没有前端页面,主要是不会用前端语言,也设计不了。。。本项目在server/app/service/api中提供了socket数据出口,只要前端使用socket调用,即可渲染在前端。
  8. 前端通过socket的emit可读取:stats 节点信息latency 延迟node-ping ping三类数据

2. 部署服务端

需要在一台ip稳定的服务器上部署
可以去ethstats 直接下载最新版,或者先编译再部署:
编译

1
2
3
4
go mod tidy
cd server
go build -o server ./server.go 当前操作系统编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o server server.go 当前操作系统交叉编译为linux amd版的

部署

1
2
3
# 前往稳定IP的服务器
# 使用配置文件方式启动,这个需要你编译好配置信息,该配置里面有详细的配置信息解释,代码护着release下载后就可以看到
server start -c setting.yml

启动

1
2
# 配置文件嫌麻烦的话,可以直接命令行方式启动,具体参数可以参考配置文件或者https://github.com/bitxx/ethstats/blob/main/server/cmd/run/start.go
./server start --name ethereum-server --secret 123456 --host 0.0.0.0 --port 3000 --email-subject-prefix ethereum --email-host 邮箱服务地址 --email-port 465 --email-username 发件邮箱账户 --email-password 邮箱密钥 --email-from 发件邮箱账户--email-to 收件邮箱账户(多个逗号隔开)

服务端启动成功,等待客户端传入数据。

3. 部署客户端

可以去ethstats 直接下载最新版,或者先编译再部署:

编译

1
2
3
4
go mod tidy
cd client
go build -o client ./client.go 当前操作系统编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o client client.go 当前操作系统交叉编译为linux amd版的

部署

1
2
3
# 前往需要监控的节点服务器
# 使用配置文件方式启动,这个需要你编译好配置信息,该配置里面有详细的配置信息解释,代码护着release下载后就可以看到
client start -c setting.yml

启动

1
2
# 配置文件嫌麻烦的话,可以直接命令行方式启动,具体参数可以参考配置文件或者https://github.com/bitxx/ethstats/blob/main/client/cmd/run/start.go
./client start --name test --secret 123456 --server-url 链地址,如:ws://127.0.0.1:30303

客户端启动完毕,它会不停的尝试链接服务端,持续运行

总结

本文大概讲解了下ethstats 的使用方式,具体细节如果还有疑惑的,可以发issue等来进一步予以解释

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2017-2023 Jason
  • Visitors: | Views:

谢谢打赏~

微信