节点健康检查器
Aptos 节点健康检查器(NHC, Aptos Node Health Checker)服务能够检测任何 Aptos 全节点(例如验证全节点 VFNs 或对等全节点 PFNs)的健康状态.作为节点运营者,您可以利用 NHC 服务来确认您的节点是否正常运作.NHC 服务通过将您节点的配置与基础配置进行对比,来判定节点健康状态,并提供评估报告.
本文档描述了当你操作节点时如何本地运行 NHC.
在您深入探索 NHC 工作原理之前,您先可以按照以下步骤启动 NHC 服务并发起一个请求.本教程采用了一个针对开发网络(devnet)全节点的基础配置,即您的节点将与一个已按基础配置 YAML 文件设置的开发网络全节点进行比较评估.
重要:如果你的本地节点不是 devnet 全节点,你必须使用不同的基础配置.查看 aptos-core 中的配置示例 以获取其他示例配置.
-
下载基础配置 YAML
为 devnet 全节点下载一个基础配置 YAML 文件.下面的命令将下载
devnet_fullnode.yaml
配置文件:Terminal window mkdir /tmp/nhccd /tmp/nhcwget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/ecosystem/node-checker/configuration_examples/devnet_fullnode.yaml -
启动 NHC 服务
通过提供上述下载的
devnet_fullnode.yaml
基础配置 YAML 文件来启动 NHC 服务:Terminal window docker run -v /tmp/nhc:/nhc -p 20121:20121 -t aptoslabs/node-checker:nightly /usr/local/bin/aptos-node-checker server run --baseline-config-paths /nhc/devnet_fullnode.yaml -
向 NHC 服务发送请求
最后,向你启动的 NHC 服务发送请求.下面的命令将运行你的节点的健康检查,该节点位于
node_url=http://mynode.mysite.com
,并将这些结果与基础配置devnet_fullnode
中配置的节点进行比较:Terminal window curl 'http://localhost:20121/check?node_url=http://mynode.mysite.com&api_port=80&baseline_configuration_id=devnet_fullnode'你将看到类似于这样的输出:
{"check_results": [{"headline": "Chain ID reported by baseline and target match","score": 100,"explanation": "The node under investigation reported the same Chain ID 18 as is reported by the baseline node","checker_name": "node_identity","links": []},{"headline": "Role Type reported by baseline and target match","score": 100,"explanation": "The node under investigation reported the same Role Type full_node as is reported by the baseline node","checker_name": "node_identity","links": []},{"headline": "Target node produced valid recent transaction","score": 100,"explanation": "We were able to pull the same transaction (version: 3238616) from both your node and the baseline node. Great! This implies that your node is keeping up with other nodes in the network.","checker_name": "transaction_availability","links": []}],"summary_score": 100,"summary_explanation": "100: Awesome!"}
NHC 如何工作
Section titled “NHC 如何工作”NHC 作为一个服务运行.当你想要运行你的节点的健康检查时,你向这个服务发送 HTTP 请求.
单个 NHC 实例能被配置,以检测多种不同类型的节点配置的健康,例如:
- 连接到 Aptos 主网的公共全节点.
- 连接到 Aptos 测试网的验证节点.
- 在单节点测试网中运行的节点.
在以上所有例子中,都会使用一个基础节点作为参照,来判断您的节点健康状况.例如,对于接入Aptos开发网络(devnet)的公共全节点,基础节点可能是 Aptos 团队维护的一个节点,这个节点具有优异的性能和良好的参与度.
在启动您节点的NHC服务前,您需要先下载基础配置的 YAML 文件.这份配置 YAML 文件将指明如何找到基础节点(包含 URL 和端口号),NHC 服务需要执行哪些评价指标(比如指标检查,TPS 测试,API 验证等),针对这些指标 NHC 应使用何种参数,配置文件的名称等信息.您可以查看这些示例基础配置 YAML 文件.
当你向 NHC 服务发送请求时,你必须包括一个基础配置.例如,一个请求 NHC 使用 devnet_fullnode
作为基础配置的请求将如下所示:
curl 'http://nhc.aptoslabs.com/check?node_url=http://myfullnode.mysite.com&baseline_configuration_id=devnet_fullnode'
准备基础配置
Section titled “准备基础配置”为了运行 NHC 服务,你必须有一个服务可以使用的基础配置.这里你有两个选项:
配置一个预先存在的 YAML
Section titled “配置一个预先存在的 YAML”您能找到若干适合上述场景及其他情况的示例基础配置 YAML 文件.
接下来,将这些配置 YAML 文件下载到你的主机系统的 /etc/nhc
文件夹中.例如:
mkdir /tmp/nhccd /tmp/nhcconfigs=(devnet_fullnode testnet_fullnode mainnet_fullnode); for c in ${configs[@]}; do wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/ecosystem/node-checker/configuration_examples/$c.yaml; done
这些配置文件初始状态下无法直接使用.您需要更改一些特定的字段,如基础节点的地址或是评估器设置(YAML 文件中的 evaluators
和 evaluator_args
).为了更好地优化这些配置,建议下载基础配置后运行 NHC 服务,并注意其启动时的提示信息.
某些 NHC 配置需附加文件支持,如 mint.key
,该文件用于执行对验证器的 TPS 测试.您需要确保 NHC 能访问这些文件,无论是存储于磁盘还是挂载在您的容器内.按照基础配置 YAML 所指定的路径,NHC 在启动时会寻找这些必需的文件.
运行 NHC:Docker
Section titled “运行 NHC:Docker”准备好基线配置的 YAML 文件及必需的文件之后,你就可以通过以下的命令运行 NHC 服务器,例如使用 Docker:
docker run -v /etc/nhc:/etc/nhc -p 20121:20121 -t aptoslabs/node-checker:nightly /usr/local/bin/aptos-node-checker server run --baseline-config-paths /tmp/nhc/devnet_fullnode.yaml /tmp/nhc/testnet_fullnode.yaml /tmp/nhc/mainnet/fullnode.yaml
运行 NHC:源代码
Section titled “运行 NHC:源代码”首先,切换到源代码:
git clone git@github.com:aptos-labs/aptos-core.gitcd aptos-core
根据你的设置,你可能想要切换到特定的分支,以确保 NHC 与你的节点兼容,例如 git checkout --track devnet
.
运行 NHC:
cargo run -p aptos-node-checker --release -- server run --baseline-config-paths /tmp/nhc/devnet_fullnode.yaml
生成 OpenAPI 规范
Section titled “生成 OpenAPI 规范”要生成 OpenAPI 规范,请从 ecosystem/node-checker
运行以下命令:
cargo run -- server generate-openapi -f yaml > doc/spec.yamlcargo run -- server generate-openapi -f json > doc/spec.json
你也可以访问运行服务的/spec.yaml
和/spec.json
端点.
您也可以对运行中的服务发起请求,访问 /spec.yaml
和 /spec.json
这两个端点(endpoint).