跳转到内容

节点健康检查器

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

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

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

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

  1. 下载基础配置 YAML

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

    Terminal window
    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 服务:

    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
  3. 向 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 作为一个服务运行.当你想要运行你的节点的健康检查时,你向这个服务发送 HTTP 请求.

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

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

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

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

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

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

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

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

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

Terminal window
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 在启动时会寻找这些必需的文件.

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

Terminal window
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

首先,切换到源代码:

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

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

运行 NHC:

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

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

Terminal window
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).