> For the complete documentation index, see [llms.txt](https://gushi10546.gitbook.io/aptos-kai-fa-zhe-wen-dang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gushi10546.gitbook.io/aptos-kai-fa-zhe-wen-dang/jie-dian/jie-dian-jian-kang-jian-ce-qi.md).

# 节点健康检测器

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

* 验证者节点
* 验证者全节点
* 公共全节点。

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

{% hint style="info" %}
💡 **AIT 的节点运行状况检查**

如果您正在参与 [Aptos 激励测试网](/aptos-kai-fa-zhe-wen-dang/jie-dian/ait-3.md)，您可以使用 NHC 服务来验证您的验证器节点是否正常运行。 Aptos 团队不断使用此服务来检查您的节点的健康状况。
{% endhint %}

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

### 快速开始

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

**重要**：如果您的本地节点不是开发网全节点，例如它是用于 AIT3 注册的单个测试网节点，您必须使用不同的配置文件。有关其他此类示例配置，请参阅 [aptos-core 中的配置示例](https://github.com/aptos-labs/aptos-core/tree/main/ecosystem/node-checker/configuration_examples)。

#### 步骤 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 文件](https://github.com/aptos-labs/aptos-core/tree/main/ecosystem/node-checker/configuration_examples)。

当您向 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 文件](https://github.com/aptos-labs/aptos-core/tree/main/ecosystem/node-checker/configuration_examples)，它们适用于上述每种使用情况以及更多。

接下来，将这些配置 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 中的 `evaluators` 和 `evaluator_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 中的字段`evaluators`和`evaluator_args`。有关这方面的更多指导，请将 `-h`  标志传递给上述命令以查看您可以使用的所有标志。

#### 所需文件

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

### 运行 NHC：Docker

{% hint style="info" %}
💡 **注意**

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

当您准备好基线配置 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
```

{% hint style="info" %}
💡 **注意**

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

### 运行 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` 端点。
