节点健康检测器

Aptos 节点健康检查器 (NHC) 服务可用于检查以下 Aptos 节点类型的健康状况:

  • 验证者节点

  • 验证者全节点

  • 公共全节点。

如果您是节点操作员,请使用 NHC 服务检查您的节点是否正常运行。 NHC 服务通过与基准节点配置进行比较来评估节点的运行状况,并输出评估结果。

💡 AIT 的节点运行状况检查

如果您正在参与 Aptos 激励测试网,您可以使用 NHC 服务来验证您的验证器节点是否正常运行。 Aptos 团队不断使用此服务来检查您的节点的健康状况。

本文档介绍了在操作节点时如何运行 NHC。

快速开始

在详细了解 NHC 的工作原理之前,您可以运行以下步骤来启动 NHC 服务并向其发送请求。本快速入门使用开发网的全节点基线配置,即,它将根据使用基线配置 YAML 配置的开发网的全节点评估您的节点。

重要:如果您的本地节点不是开发网全节点,例如它是用于 AIT3 注册的单个测试网节点,您必须使用不同的配置文件。有关其他此类示例配置,请参阅 aptos-core 中的配置示例

步骤 1: 下载基线配置 YAML

为开发网全节点下载一个基线配置。以下命令将下载 devnet_fullnode.yaml 配置文件:

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

步骤 2: 开始 NHC 服务

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

docker run -v /tmp/nhc:/nhc -p 20121:20121 -t aptoslabs/node-checker:nightly /usr/local/bin/aptos-node-checker server run --baseline-node-config-paths /nhc/devnet_fullnode.yaml

步骤 3: 发送请求到 NHC 服务

最后,向您在上面启动的 NHC 服务发送请求。以下命令对位于 node_url=http://mynode.mysite.com 的节点运行健康检查,并将这些结果与下载的基线配置 devnet_fullnode 进行比较:

curl '<http://localhost:20121/check_node?node_url=http://mynode.mysite.com&baseline_configuration_name=devnet_fullnode>'

您将会看到类似于这样的输出结果:

{
  "evaluation_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",
      "evaluator_name": "node_identity",
      "category": "api",
      "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",
      "evaluator_name": "node_identity",
      "category": "api",
      "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.",
      "evaluator_name": "transaction_availability",
      "category": "api",
      "links": []
    }
  ],
  "summary_score": 100,
  "summary_explanation": "100: Awesome!"
}

NHC 是如何工作的

NHC 作为服务运行。当您想要运行节点的健康检查时,您可以将 HTTP 请求发送到此服务。

可以配置单个 NHC 实例来检查多个节点配置的健康状况,每个节点配置类型不同,例如:

  • 在单节点测试网中运行的验证者节点。

  • 连接到 Aptos 测试网的公共全节点。

  • 连接到测试网的验证者节点,例如,作为 Aptos 激励测试网的一部分。

NHC 服务既可以作为外部工具运行,也可以作为运营商用例的边车进程运行。两者都在本文档中进行了描述。

基线配置

在上述所有情况下,基线节点都用于比较节点的运行状况。例如,对于连接到 Aptos 开发网络的公共全节点,基线节点可能是 Aptos 团队运行的节点,并且该节点展示了最佳性能和参与特征。

您需要下载基线配置 YAML,在为您的节点运行 NHC 服务之前。基线节点的配置 YAML 描述了在哪里可以找到这个基线节点(URL + 端口),NHC 服务应该运行哪些评估器(例如指标检查、TPS 测试、API 验证等),NHC 应该为这些评估器使用哪些参数,配置的名称等等。在此处查看一些 示例基线配置 YAML 文件

当您向 NHC 服务发送请求时,您必须包含基线配置。例如,向 NHC 请求使用 devnet_fullnode作为基线配置将如下所示:

curl '<http://nhc.aptoslabs.com/check_node?node_url=http://myfullnode.mysite.com&baseline_configuration_name=devnet_fullnode>'

准备好基线配置

为了运行 NHC 服务,您必须具有该服务可以使用的基线配置。您在这里有两个选择:

配置预先存在的 YAML

您可以在此处找到一些 示例基线配置 YAML 文件,它们适用于上述每种使用情况以及更多。

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

mkdir /etc/nhc
cd /etc/nhc
configs=(single_node_validator devnet_fullnode ait2_validator); for c in ${configs[@]}; do wget <https://raw.githubusercontent.com/aptos-labs/aptos-core/main/ecosystem/node-checker/configurations/$c.yaml>; done

这些配置还没有完全准备好按原样使用。您将需要修改某些字段,例如使用的基线节点地址或评估器集(YAML 中的 evaluatorsevaluator_args)。对此进行迭代的最佳方法是使用下载的基线配置运行 NHC,并查看它在启动时显示的内容。

生成你自己的基线配置 YAML

要生成您自己的基线配置,您必须首先使用 create 选项运行 NHC 服务。以下命令显示了如何通过使用 Docker 运行 NHC 服务来创建基线配置 YAML:

docker run -it aptoslabs/node-checker:nightly /usr/local/bin/aptos-node-checker configuration create --url '<http://baseline-fullnode.aptoslabs.com>' --configuration-name devnet_fullnode --configuration-name-pretty "Devnet FullNode" --evaluators network_minimum_peers api_latency --api-port 80 > /etc/nhc/devnet_fullnode.yaml

上面的命令指定了基线配置的最低限度。您可以根据需要调整每个评估器。请参阅 YAML 中的字段evaluatorsevaluator_args。有关这方面的更多指导,请将 -h 标志传递给上述命令以查看您可以使用的所有标志。

所需文件

对于某些 NHC 配置,您将需要附加文件,例如mint.key 用于针对验证者运行 TPS 测试。您应该确保这些文件也可用于 NHC,无论是在磁盘上还是安装到您的容器中。 NHC 期望它们在基线配置 YAML 中指定的路径启动。

运行 NHC:Docker

💡 注意

虽然 Aptos 团队为此服务运营实例,但我们鼓励节点操作者运行他们自己的实例。您可以选择运行公开可用的 NHC 或将其作为辅助运行,它仅适用于您自己的节点。

当您准备好基线配置 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-node-config-paths /etc/nhc/ait2_validator.yaml /etc/nhc/devnet_fullnode.yaml

💡 注意

您可能希望包含其他环境变量,例如RUST_LOG=info。如您所见,默认情况下 NHC 在端口 20121 上运行。确保从容器中发布它,如上述命令所示,并确保该端口在您的主机上打开。您可以使用 --listen-port 更改 NHC 运行的端口。

运行 NHC:Source

首先,查看源码:

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

根据您的设置,您可能需要检查特定分支,以确保 NHC 与您的节点兼容,例如git checkout --track devnet

运行 NHC:

cargo run --release -- server run --baseline-node-config-paths /etc/nhc/ait2_validator.yaml /etc/nhc/devnet_fullnode.yaml

将 NHC 作为辅助程序sidecar 运行

当您将 NHC 作为辅助程序(sidecar)运行时,您预先配置了一个 NHC 应默认用作正在调查的节点的节点:

--target-node-url <http://localhost>

当您想将机器上的 API / 指标端口关闭到公共网络时,将 NHC 作为辅助(sidecar)运行会很方便,但仍想运行 NHC 来验证节点的设置。

如果您愿意甚至可以限制 NHC 只测试那个单一节点:

--allow-preconfigured-test-node-only

使用此标志,/check_node 端点将始终返回 400s,您必须改为使用 /check_preconfigured_node

将 NHC 实例配置为辅助程序(sidecar)模式后,您可以发送省略目标节点地址的请求。

curl '<http://nhc.aptoslabs.com/check_preconfigured_node?baseline_configuration_name=devnet_fullnode>'

有更多选项可用于使用哪些端口。通过 -h 查看更多选项。

生成 OpenAPI 规范

要生成 OpenAPI 规范,请运行以下命令:

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

您还可以点击正在运行的服务的 /spec.yaml/spec.json 端点。

Last updated