Программа проверки работоспособности ноды

Служба Aptos Node Health Checker (NHC) может использоваться для проверки работоспособности следующих типов нод Aptos:

  • Ноды валидатора.

  • Полные ноды валидатора, и

  • Публичные полные ноды .

Если вы являетесь оператором ноды, используйте службу NHC, чтобы проверить, правильно ли работает ваша нода. Служба NHC оценивает работоспособность вашей ноды путем сравнения с базовой конфигурацией установки и выводит результаты оценки.

ПРОВЕРКА РАБОТОСПОСОБНОСТИ НОДЫ ДЛЯ AIT Если вы участвуете в консенсусе в сети Aptos, вы можете использовать сервис NHC для проверки работоспособности вашего ноды-валидатора. Команда Aptos постоянно использует этот сервис для проверки работоспособности вашей ноды.

В этом документе описано, как запустить NHC при эксплуатации ноды.

Быстрый запуск

Прежде чем вникать в детали работы NHC, вы можете выполнить описанные ниже шаги, чтобы запустить сервис NHC и отправить ему запрос. Этот быстрый запуск использует базовую настройку для полной ноды devnet, т.е. он будет оценивать ваша нода по сравнению с полной нодой devnet, которая настроена с базовой настройкой YAML.

Важно: Если ваш локальная нода не является полной нодой devnet, например, это одиночная нода testnet для регистрации AIT3, вы должны использовать другой файл настройки. Смотрите примеры конфигурации в aptos-core для других таких примеров.

Шаг 1: Загрузите базовую настройку YAML

Загрузите YAML-файл базовой настройки для полной ноды devnet. Приведенная ниже команда загрузит файл настройки 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

Запустите сервис NHC, предоставив загруженный выше YAML-файл базовой настройки devnet_fullnode.yaml:

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&api_port=80&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 devnet.

  • Нода валидатора, подключенный к тестовой сети, например, как часть Aptos Incentivized Testnet.

Сервис NHC может быть запущен как в качестве внешнего инструмента, так и в качестве вспомогательного процесса для использования оператором. Оба варианта описаны в данной документации.

Базовая настройка

Во всех вышеперечисленных случаях базовая нода используется для сравнения состояния вашей ноды. Например, для публичной полной ноды, подключенной к Aptos devnet, базовой нодой может быть нода, запущенная командой Aptos, и эта нода демонстрирует оптимальную производительность и характеристики участия.

Перед запуском сервиса NHC для своей ноды вы загрузите YAML настройки базовой ноды. YAML конфигурации базовой ноды описывает, где найти эту базовую ноду (URL + порт), какие оценщики (например, проверки метрик, тесты TPS, проверки API и т.д.) должна запускать служба NHC, какие параметры 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

Эти настройки не совсем готовы к использованию в том виде, в котором они есть. Вам потребуется изменить некоторые поля, например, адрес ноды базовой модели или используемый набор оценщиков (evaluators и evaluator_args в YAML). Лучший способ проверить это - запустить NHC с загруженной базовой настройкой и посмотреть, что он скажет при запуске.

Генерация собственной базовой настройки YAML

Чтобы создать собственную базовую настройку, необходимо сначала запустить службу NHC с опцией create. Приведенная ниже команда показывает, как создать базовую настройку YAML, запустив сервис NHC с помощью Docker:

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

Приведенная выше команда задает минимум для базовой настройки. Вы можете настраивать каждый механизм оценки по своему усмотрению. Смотрите поля evaluators и evaluator_args в YAML. Для получения дополнительной информации по этому вопросу передайте флаг -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/ait3_fullnode.yaml /etc/nhc/devnet_fullnode.yaml

ПОДСКАЗКА Вы можете включить другие переменные окружения, например RUST_LOG=info. Как вы можете видеть, по умолчанию NHC работает на порту 20121. Обязательно опубликуйте его из хранилища, как показано в приведенной выше команде, и убедитесь, что порт открыт на вашем хосте. Вы можете изменить порт, на котором работает NHC, с помощью команды --listen-port.

Запуск NHC: исходный

Во-первых, проверьте исходник:

git clone git@github.com:aptos-labs/aptos-core.gitcd 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

Запуск NHC в качестве sidecar может быть удобен, когда вы хотите закрыть порты API / метрики на вашем компьютере для публичного доступа в интернет, но при этом хотите запустить 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.yamlcargo run -- server generate-openapi -f json > doc/spec.json

Вы также можете обратиться к конечным точкам /spec.yaml и /spec.json запущенного сервиса.

Last updated