Skip to content
🎉 Welcome to the new Aptos Docs! Click here to submit feedback!
Network
节点健康检查器

节点健康检查器

Aptos 节点健康检查器(NHC, Aptos Node Health Checker)服务能够检测任何 Aptos 全节点(例如验证全节点 VFNs 或对等全节点 PFNs)的健康状态。作为节点运营者,您可以利用 NHC 服务来确认您的节点是否正常运作。NHC 服务通过将您节点的配置与基础配置进行对比,来判定节点健康状态,并提供评估报告。

本文档描述了当你操作节点时如何本地运行 NHC。

如果你不想自己运行 NHC 服务,你可以使用由 Aptos Foundation 运行的公用 NHC 服务

快速开始

在您深入探索 NHC 工作原理之前,您先可以按照以下步骤启动 NHC 服务并发起一个请求。本教程采用了一个针对开发网络(devnet)全节点的基础配置,即您的节点将与一个已按基础配置 YAML 文件设置的开发网络全节点进行比较评估。

重要:如果你的本地节点不是 devnet 全节点,你必须使用不同的基础配置。查看 aptos-core 中的配置示例 以获取其他示例配置。

下载基础配置 YAML

为 devnet 全节点下载一个基础配置 YAML 文件。下面的命令将下载 devnet_fullnode.yaml 配置文件:

Terminal
mkdir /tmp/nhc
cd /tmp/nhc
wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/ecosystem/node-checker/configuration_examples/devnet_fullnode.yaml

启动 NHC 服务

通过提供上述下载的 devnet_fullnode.yaml 基础配置 YAML 文件来启动 NHC 服务:

Terminal
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
curl 'http://localhost:20121/check?node_url=http://mynode.mysite.com&api_port=80&baseline_configuration_id=devnet_fullnode'

你将看到类似于这样的输出:

Terminal
{
  "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 如何工作

NHC 作为一个服务运行。当你想要运行你的节点的健康检查时,你向这个服务发送 HTTP 请求。

单个 NHC 实例能被配置,以检测多种不同类型的节点配置的健康,例如:

  • 连接到 Aptos 主网的公共全节点。
  • 连接到 Aptos 测试网的验证节点。
  • 在单节点测试网中运行的节点。

基础配置

在以上所有例子中,都会使用一个基础节点作为参照,来判断您的节点健康状况。例如,对于接入Aptos开发网络(devnet)的公共全节点,基础节点可能是 Aptos 团队维护的一个节点,这个节点具有优异的性能和良好的参与度。

在启动您节点的NHC服务前,您需要先下载基础配置的 YAML 文件。这份配置 YAML 文件将指明如何找到基础节点(包含 URL 和端口号)、NHC 服务需要执行哪些评价指标(比如指标检查、TPS 测试、API 验证等)、针对这些指标 NHC 应使用何种参数、配置文件的名称等信息。您可以查看这些示例基础配置 YAML 文件

当你向 NHC 服务发送请求时,你必须包括一个基础配置。例如,一个请求 NHC 使用 devnet_fullnode 作为基础配置的请求将如下所示:

Terminal
curl 'http://nhc.aptoslabs.com/check?node_url=http://myfullnode.mysite.com&baseline_configuration_id=devnet_fullnode'

准备基础配置

为了运行 NHC 服务,你必须有一个服务可以使用的基础配置。这里你有两个选项:

配置一个预先存在的 YAML

您能找到若干适合上述场景及其他情况的示例基础配置 YAML 文件

接下来,将这些配置 YAML 文件下载到你的主机系统的 /etc/nhc 文件夹中。例如:

Terminal
mkdir /tmp/nhc
cd /tmp/nhc
configs=(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 文件中的 evaluatorsevaluator_args)。为了更好地优化这些配置,建议下载基础配置后运行 NHC 服务,并注意其启动时的提示信息。

需要的文件

某些 NHC 配置需附加文件支持,如 mint.key,该文件用于执行对验证器的 TPS 测试。您需要确保 NHC 能访问这些文件,无论是存储于磁盘还是挂载在您的容器内。按照基础配置 YAML 所指定的路径,NHC 在启动时会寻找这些必需的文件。

运行 NHC:Docker

尽管Aptos团队自行托管了这项服务的实例,但我们还是鼓励节点运营者建立并运行自己的实例。

准备好基线配置的 YAML 文件及必需的文件之后,你就可以通过以下的命令运行 NHC 服务器,例如使用 Docker:

Terminal
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

您也许想要添加其他的环境变量,例如设置 RUST_LOG=info。默认情况下,NHC 服务是在 20121 端口上运行的。请确保按照上述命令,从容器内发布到此端口,并且检查您主机上该端口是否已开放。如果需要,您可以通过 --listen-port 参数修改 NHC 监听的端口。

运行 NHC:源代码

首先,切换到源代码:

Terminal
git clone git@github.com:aptos-labs/aptos-core.git
cd aptos-core

根据你的设置,你可能想要切换到特定的分支,以确保 NHC 与你的节点兼容,例如 git checkout --track devnet

运行 NHC:

Terminal
cargo run -p aptos-node-checker --release -- server run --baseline-config-paths /tmp/nhc/devnet_fullnode.yaml

生成 OpenAPI 规范

要生成 OpenAPI 规范,请从 ecosystem/node-checker 运行以下命令:

Terminal
cargo run -- server generate-openapi -f yaml > doc/spec.yaml
cargo run -- server generate-openapi -f json > doc/spec.json

你也可以访问运行服务的/spec.yaml/spec.json端点。 您也可以对运行中的服务发起请求,访问 /spec.yaml/spec.json 这两个端点(endpoint)。