Saltearse al contenido

Verificador de Salud del Nodo

El servicio Verificador de Salud del Nodo de Aptos (NHC) puede usarse para verificar la salud de cualquier fullnode de Aptos (VFNs o PFNs). Si eres un operador de nodo, usa el servicio NHC para verificar si tu nodo está ejecutándose correctamente. El servicio NHC evalúa la salud de tu nodo comparando contra una configuración de nodo de línea base, y produce los resultados de evaluación.

Este documento describe cómo ejecutar NHC localmente cuando estés operando un nodo.

Antes de entrar en los detalles de cómo funciona NHC, puedes ejecutar los pasos abajo para iniciar el servicio NHC y enviarle una solicitud. Este tutorial usa una configuración de línea base para un fullnode devnet, es decir, evaluará tu nodo contra un fullnode devnet que está configurado con el YAML de configuración de línea base.

Importante: Si tu nodo local no es un fullnode devnet, debes usar una configuración de línea base diferente. Ver los ejemplos de configuración en aptos-core para otros ejemplos de configuraciones.

  1. Descargar el YAML de configuración de línea base

    Descarga un archivo YAML de configuración de línea base para un fullnode devnet. El comando abajo descargará el archivo de configuración devnet_fullnode.yaml:

    Ventana de 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
  2. Iniciar el servicio NHC

    Inicia el servicio NHC proporcionando el archivo YAML de configuración de línea base devnet_fullnode.yaml descargado arriba:

    Ventana de 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
  3. Enviar una solicitud al servicio NHC

    Finalmente, envía una solicitud al servicio NHC que iniciaste arriba. El siguiente comando ejecuta verificaciones de salud de tu nodo que está en node_url=http://mynode.mysite.com y compara estos resultados con el nodo configurado en la configuración de línea base devnet_fullnode:

    Ventana de terminal
    curl 'http://localhost:20121/check?node_url=http://mynode.mysite.com&api_port=80&baseline_configuration_id=devnet_fullnode'

    Verás una salida similar a esta:

    {
    "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!"
    }

El NHC se ejecuta como un servicio. Cuando quieres ejecutar una verificación de salud de tu nodo, envías solicitudes HTTP a este servicio.

Una sola instancia NHC puede configurarse para verificar la salud de múltiples configuraciones de nodo, cada una de tipo diferente, por ejemplo:

  • Un fullnode público conectado a la mainnet de Aptos.
  • Un nodo validator conectado a la testnet de Aptos.
  • Un nodo ejecutándose en una testnet de nodo único.

En todos los casos anteriores, un nodo de línea base se usa para comparar la salud de tu nodo. Por ejemplo, para un fullnode público conectado a la devnet de Aptos, el nodo de línea base podría ser un nodo ejecutado por el equipo de Aptos y este nodo demuestra características óptimas de rendimiento y participación.

Descargarás el YAML de configuración de línea base antes de ejecutar el servicio NHC para tu nodo. El YAML de configuración del nodo de línea base describe dónde encontrar este nodo de línea base (URL + puerto), qué evaluadores (ej., verificaciones de métricas, pruebas TPS, validaciones API, etc.) el servicio NHC debería ejecutar, qué parámetros el NHC debería usar para esos evaluadores, qué nombre tiene la configuración, y así sucesivamente. Ver estos archivos YAML de configuración de línea base de ejemplo.

Cuando envíes solicitudes al servicio NHC, debes incluir una configuración de línea base. Por ejemplo, una solicitud a NHC para usar devnet_fullnode como la configuración de línea base se verá así:

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

Para ejecutar el servicio NHC, debes tener una configuración de línea base que el servicio pueda usar. Tienes dos opciones aquí:

Puedes encontrar algunos archivos YAML de configuración de línea base de ejemplo que funcionan para cada uno de los casos de uso anteriores y más.

Siguiente, descarga estos archivos YAML de configuración en la carpeta /etc/nhc en tu sistema host. Por ejemplo:

Ventana de 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

Estas configuraciones no están completamente listas para usarse como están. Necesitarás modificar ciertos campos, como la dirección del nodo de línea base o conjunto de evaluadores (evaluators y evaluator_args en el YAML) usado. La mejor forma de iterar sobre esto es ejecutar el NHC con una configuración de línea base descargada y ver qué dice al inicio.

Para algunas configuraciones NHC, necesitarás archivos acompañantes, ej., mint.key para usar para ejecutar una prueba TPS contra un validator. Deberías asegurarte de que estos archivos también estén disponibles para NHC, ya sea en disco o montados en tu contenedor. NHC los espera al inicio en una ruta especificada en el YAML de configuración de línea base.

Cuando estés listo con el YAML de configuración de línea base y los archivos requeridos, puedes ejecutar el servidor NHC con un comando como este, por ejemplo, con Docker:

Ventana de 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

Primero, obtén el código fuente:

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

Dependiendo de tu configuración, podrías querer cambiar a una rama particular, para asegurar que NHC sea compatible con tu nodo, ej., git checkout --track devnet.

Ejecuta NHC:

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

Para generar las especificaciones OpenAPI, ejecuta los siguientes comandos desde ecosystem/node-checker:

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

También puedes acceder a los endpoints /spec.yaml y /spec.json del servicio en ejecución.