Dashmate#

Dashmate - это универсальный инструмент, предназначенный для настройки и запуска Dash-мастернод в контейнерной среде. Это также идеальный инструмент для быстрой и простой настройки и запуска сети разработки в локальной системе.

../../../../_images/dashmate.gif

Настройка эвоноды в тестовой сети с помощью dashmate#

Установка#

Это руководство описывает, как загрузить, установить и использовать dashmate для Linux. Руководство написано для Ubuntu 22.04 x64 LTS, но шаги должны быть аналогичными для других дистрибутивов Linux.

Установочные зависимости#

Установите и настройте Docker:

curl -fsSL https://get.docker.com -o get-docker.sh && sh ./get-docker.sh
sudo usermod -aG docker $USER
newgrp docker

Установите Dashmate#

Существует несколько способов установки dashmate. Установка пакетов для Linux, MacOS или Windows со страницы релизов на GitHub рекомендуется для мастернод основной сети.

Пакет Debian#

Загрузите самый новый установочный пакет dashmate для вашей архитектуры со страницы релизов на GitHub <dashpay/platform>`__:

wget https://github.com/dashpay/platform/releases/download/v1.6.2/dashmate_1.6.2.afe982a10-1_amd64.deb

Установите dashmate с помощью apt:

sudo apt update
sudo apt install ./dashmate_1.6.2.afe982a10-1_amd64.deb

Примечание

В конце процесса установки apt может выдать ошибку, связанную с установкой загруженного пакета. Вы можете проигнорировать это сообщение об ошибке:

N: Download is performed unsandboxed as root as file '/home/ubuntu/dashmate_1.6.2.afe982a10-1_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

Пакет ноды#

Предупреждение

Этот вариант установки не рекомендуется для мастернод основной сети. Пожалуйста, устанавливайте пакеты со страницы релизов на GitHub <dashpay/platform>`__.

Установка Node.js dashmate

Для установки пакета NodeJS необходимо сначала установить NodeJS. Мы рекомендуем установить его с помощью nvm:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc
nvm install 20

После установки NodeJS с помощью npm установите Dashmate:

npm install -g dashmate

Настройки мастерноды#

Dashmate в первую очередь рекомендуется для настройки эвонод (evonodes). За исключением нескольких незначительных дополнительных шагов для эвонод, процесс идентичен для эвонод и обычных мастернод. Выполните шаги в разделах ниже, чтобы настроить свою ноду, или следуйте этому пошаговому руководству.

Чтобы начать настройку мастерноды, выполните команду dashmate setup для запуска интерактивного мастера:

dashmate setup

Установите тип сети и ноды#

../../../../_images/1-dashmate-setup.png

Выберите предварительную настройку сети testnet#

../../../../_images/2-select-node-type.png

Создайте Эвоноду#

Выберите Нет для регистрации новой мастерноды или Да для импорта информации о существующей мастерноде.

../../../../_images/3-already-registered.png

Настройка новой мастерноды#

Если вы регистрируете новый мастерноду, перейдите к следующему разделу определение ключей и адресов.

Импортируйте имеющиеся данные Core#

Примечание

Следующий шаг применим только при переносе существующей мастерноды в dashmate.

Если на предыдущем шаге вы решили импортировать существующую мастерноду, вам будет предложено указать местоположение существующей установки.

../../../../_images/4a-import-existing-data.png

Импортируйте имеющиеся данные#

../../../../_images/4b-import-existing-data-path.png

Введите существующий каталог данных Core#

../../../../_images/4c-import-existing-data-complete.png

Импорт основных данных завершен#

После импорта данных Core перейдите к разделу конфигурация коммуникаций.

Определите ключи и адреса#

../../../../_images/4-wallet-for-keys.png

Храните ключи мастернод в Dash Core#

Введите запрашиваемую информацию из вашей транзакции финансирования залога. Эти значения можно найти с помощью команды Dash Core masternode outputs.

../../../../_images/5b-collateral-info-completed.png

Введите информацию о транзакции с обеспечением#

Введите адреса владельца, голосования и выплат, которые вы сгенерировали с помощью Dash Core или выбранного вами кошелька.

../../../../_images/6b-mn-addresses-completed.png

Введите адреса мастернод#

Введите закрытый ключ оператора BLS. Вы можете ввести созданный вами (например, используя Dash Core) или полученный от хостинг-провайдера. Как вариант, можно использовать ключ, автоматически сгенерированный dashmate.

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

../../../../_images/7-bls-operator-key.png

Введите информации об операторе#

Примечание

Следующий шаг применим только к Эвонодам. Для обычных мастернод ключ узла Платформы не требуется, поскольку на них не размещаются сервисы Платформы.

Введите ключ узла платформы. Вы можете ввести один вы создали или получили от хостинг-провайдера. Как вариант, можно использовать ключ, автоматически сгенерированный dashmate.

../../../../_images/8-ed25519-platform-key.png

Введите ключ ноды платформы#

Конфигурирование связи#

Dashmate автоматически определит внешний IP-адрес и выберет порты по умолчанию для настраиваемой сети. При необходимости можно изменить эти значения, но, как правило, следует использовать значения по умолчанию.

../../../../_images/9-ip-and-ports.png

Введите информацию о соединении#

Зарегистрируйте вашу мастерноду#

Скопируйте предоставленную команду protx и запустите ее с помощью dash-cli или консоли Dash Core. Обратите внимание, что для успешной регистрации на вашем адресе выплат должен быть баланс, поэтому не забудьте отправить на этот адрес некоторое количество DASH до начала регистрации.

После успешного выполнения команды выберите Да. При возникновении ошибки выберите Нет, чтобы вернуться к предыдущим шагам и просмотреть детали.

../../../../_images/10b-protx-command-successful.png

Выполните команду регистрации#

Включите SSL#

Примечание

Следующий шаг применим только к Эвонодам. Для обычных мастернод сертификат SSL не требуется, поскольку на них не размещаются сервисы Платформы.

Dash Platform требует использования SSL для обмена данными. Dashmate предоставляет несколько вариантов получения необходимого SSL-сертификата.

Предупреждение

Самоподписанные сертификаты не могут быть использованы в сети. При настройке Эвонод в основной сети единственными доступными вариантами являются ZeroSSL и File on disk.

../../../../_images/11a-ssl-config-zerossl.png

Настройте SSL#

После завершения конфигурирования отображается сводка, показывающая сеть и тип сконфигурированной ноды. В этой сводке указаны важные параметры и информация о дальнейших действиях.

Предупреждение

Закрытый ключ оператора BLS и ключ ноды платформы должны иметь сохраненную копию и надежно защищены.

../../../../_images/12-configuration-complete.png

Конфигурация завершена! 🎉#

Запустите ноду#

Запустите свою ноду следующим образом:

dashmate start

Примечание

При первом запуске узла Dashmate загрузит образы Docker, необходимые для каждого сервиса. Время, необходимое для этой однократной загрузки, зависит от доступной качества соединения, но обычно она завершается в течение нескольких минут.

Работа ноды Dashmate#

Вы можете управлять статусом, конфигурацией и рабочим состоянием своей мастерноды полностью из dashmate. Для получения дополнительной информации воспользуйтесь встроенной справочной системой:

  • dashmate --help

  • dashmate <command> --help

../../../../_images/dashmate-help.png

Dashmate отображает вывод справки верхнего уровня#

Запуск или перезапуск ноды#

Чтобы запустить ноду dashmate, выполните команду:

dashmate start

Чтобы перезапустить ноду dashmate, выполните команду:

dashmate restart

Остановить ноду#

Чтобы остановить ноду dashmate, выполните команду:

dashmate stop

Статус ноды#

Проверить состояние мастерноды можно с помощью различных команд dashmate status следующим образом:

dashmate status
dashmate status core
dashmate status host
dashmate status masternode
dashmate status platform
dashmate status services
../../../../_images/dashmate-status1.png

Dashmate отображает диапазон состояния выхода#

Обновление ноды#

Чтобы обновить dashmate, необходимо скачать и установить новую версию dashmate. Сначала остановите dashmate, если он запущен:

dashmate stop

Далее установите новую версию dashmate, следуя инструкциям в секции установки dashmate.

Как только новая версия dashmate будет установлена, обновите docker-образы dash-сервиса:

dashmate update

И наконец, перезапустите dashmate:

dashmate start

Устранение неполадок.#

Предупреждение

Включайте логи только в том случае, если у вас настроена ротация логов, чтобы избежать нехватки дискового пространства.

В следующих разделах описано, как включить ротацию логов, настроить регистрацию файлов для Core и Platform, настроить уровни журналов и собрать журналы для анализа.

Обзор логов Dashmate#

Логи Dashmate для каждого сервиса хранятся в его Docker-контейнере. Хотя обычно этого достаточно, иногда требуются более продвинутые опции для настройки уровня журнала, формата вывода или места назначения. В некоторых случаях необходимо:

  • Изменяйте уровень детализации логов (например, отладка против информации).

  • Предоставление данных серверу логов (например, Elasticsearch)

  • Хранение постоянных логов в файлах, внешних по отношению к контейнерам Docker

  • Используйте средства мониторинга логов для отслеживания состояния службы

Например, поскольку логи dashmate по умолчанию хранятся только в контейнерах Docker, они будут потеряны, если контейнер по какой-то причине будет удален (новый образ Docker, перезагрузка dashmate, сбой и т. д.). Поэтому во время устранения неполадок вам может понадобиться хранить постоянные файлы логов вне Docker, чтобы не потерять ценные данные.

Настройка ротации логов#

По умолчанию логи dashmate не записываются в файловую систему хоста docker. В некоторых случаях вы можете захотеть записывать их в файловую систему хоста. Перед включением записи логов важно настроить ротацию логов, чтобы избежать нехватки дискового пространства.

Создайте новый файл конфигурации logrotate для логов dashmate:

sudo nano /etc/logrotate.d/platform-logs

Вставьте следующую конфигурацию и замените пример пути на тот, который соответствует вашей системе. В этом примере конфигурации логи ротируются ежедневно и сохраняются семь исторических файлов для каждого типа файлов журнала. Каждый исторический файл ограничен 1 ГБ.

/home/ubuntu/logs/*.log {
  rotate 7
  daily
  maxsize 1G
  missingok
  notifempty
  copytruncate
  compress
  delaycompress
}

Нажмите Ctrl + X, чтобы закрыть редактор, и Y и Enter, чтобы сохранить файл.

Совет

Для получения дополнительной информации о ротации логов смотрите это руководство по конфигурации или ознакомьтесь с руководством по logrotate.

Настройте логи Core#

Включить ведение логов в файл#

Используйте dashmate config set для настройки места хранения логов Core в файловой системе хоста. Замените приведенный в примере путь на тот, который соответствует вашей системе:

dashmate config set core.log.filePath "/home/ubuntu/core-debug.log"

Переключение логов отладки#

Чтобы включить ведение отладочных логов для получения дополнительных сведений, выполните следующую команду. Логи отладки можно отключить, вернув значение в false:

dashmate config set core.log.debug.enabled true
Расширенная система логирования отладки

Dashmate поддерживает некоторые расширенные параметры лога отладки, предоставляемые Dash Core. Следующие булевские настройки core.log.debug напрямую соответствуют параметрам, описанным в документации по Core <https://docs.dash.org/projects/core/en/stable/docs/dashcore/wallet-arguments-and-commands-dashd.html#debugging-testing-options>`_: ips, sourceLocations, threadNames и timeMicros.

Параметры логов отладки Dashmate

Настройка

Описание

ips

Ведет логирование IP-адресов входящих и исходящих соединений

sourceLocations

Записывает в лог местоположение исходного текста (номер файла и строки) для получения отладочной информации

threadNames

Логирует имена потоков, используемых для различных операций

timeMicros

Ведет логирование временных меток с микросекундной точностью для детального анализа производительности

Filter Option

Описание

includeOnly

Записывать в логи только указанные категории (например, [«net», «rpc»]). Если пусто, то будут логироваться все категории

exclude

Исключает указанные категории из логирования (например, [«rpc», «instantsend»])

dashmate config set core.log.debug.ips true
dashmate config set core.log.debug.includeOnly '["instantsend", "llmq"]'

Просмотр текущих настроек логов#

Чтобы просмотреть текущие настройки логирования Core, выполните команду:

dashmate config get core.log

Отключить логирование в файл#

Чтобы отключить ведение логов в файл за пределами контейнера, установите путь к журналу в значение null:

dashmate config set core.log.filePath null

Настройка логов платформы#

Для гибкости поиска и устранения неисправностей dashmate обеспечивает независимую настройку логов для шлюза платформы, Drive ABCI и Tenderdash. Для каждой службы можно настроить наиболее полезный уровень ведения логирования и формат вывода.

Логи шлюза#

Шлюз Platform имеет два типа логов: логи служб и логи доступа. Логи обслуживания направляются в stdout, в то время как логи доступа могут быть настроены на вывод в stdout, stderr или в файл. Если все логи направляются в stdout, то на выходе будет смесь служебных данных и данных доступа.

Включить логирование файлов

Используйте dashmate config set для настройки места хранения логов доступа шлюза Platform в файловой системе хоста. Приведенный ниже пример добавляет ведение логов в файл, сохраняя при этом ведение логов по умолчанию в stdout. Замените путь в примере на тот, который соответствует вашей системе:

dashmate config set platform.gateway.log.accessLogs '[
   {
      "type": "file",
      "format": "text",
      "path": "/home/ubuntu/logs/gateway.log",
      "template": null
   },
   {
      "type": "stdout",
      "format": "text",
      "template": null
   }
]'

Отключить логирование файлов.

Чтобы отключить логирование в файл, удалите конфигурацию файла из параметра accessLogs:

dashmate config set platform.gateway.log.accessLogs '[
   {
      "type": "stdout",
      "format": "text",
      "template": null
   }
]'

Изменить уровень логирования

Логи службы шлюза платформы поддерживают несколько уровней детализации. В порядке возрастания степени детализации это: critical, error, warn, info (по умолчанию), debug и trace. Чтобы отключить служебные журналы, установите уровень журнала на off

Уровень логирования можно изменить с помощью команды dashmate config set, чтобы обновить значение platform.gateway.log.level.

dashmate config set platform.gateway.log.level debug
dashmate restart --platform

Просмотр настроек логирования

Чтобы просмотреть текущие настройки логов шлюза Platform, выполните команду:

dashmate config get platform.gateway.log

Логи Drive ABCI#

Включить логирование файлов

Используйте dashmate config set для настройки места хранения логов Platform ABCI в файловой системе хоста. Замените приведенный в примере путь на тот, который соответствует вашей системе:

dashmate config set platform.drive.abci.logs '{
   "stdout": {
      "destination":"stdout",
      "level": "info",
      "format":"compact",
      "color":true
   },
   "file": {
      "destination": "/home/ubuntu/logs/drive-abci.log",
      "level": "info",
      "format": "compact",
      "color": true
   }
}'

Отключить логирование файлов.

Чтобы отключить ведение логов в файл, удалите параметр file config из настройки logs:

dashmate config set platform.drive.abci.logs '{
   "stdout": {
      "destination":"stdout",
      "level": "info",
      "format":"compact",
      "color":true
   }
}'

Изменить уровень логирования

Логи Drive ABCI поддерживают несколько уровней детализации. В порядке возрастания детализации они следующие: error'', ``warn'', ``info'' (по умолчанию), ``debug'' и ``trace''. Для большей гибкости можно также указать строку спецификации журнала в формате RUST_LOG. Чтобы отключить служебные логи, установите уровень логирования на ``silent.

Уровень логирования можно изменить с помощью команды dashmate config set, чтобы обновить значение platform.drive.abci.logs.*.level. Например, выполните эти команды, чтобы изменить уровни логирования для регистрации файлов и stdout для дебага вашей ноды dashmate:

dashmate config set platform.drive.abci.logs.file.level debug
dashmate config set platform.drive.abci.logs.stdout.level debug
dashmate restart --platform

Просмотр настроек логирования

Чтобы просмотреть текущие настройки логов шлюза Platform, выполните команду:

dashmate config get platform.drive.abci.logs

Логи Tenderdash#

Включить логирование файлов

Используйте dashmate config set для настройки места хранения логов Tenderdash в файловой системе хоста. Замените приведенный в примере путь на тот, который подходит для вашей системы:

dashmate config set platform.drive.tenderdash.log.path "/home/ubuntu/logs/drive-tenderdash.log"

Отключить логирование файлов.

Чтобы отключить ведение логов в файл, установите путь обратно в null:

dashmate config set platform.drive.tenderdash.log.path null

Изменить уровень логирования

Логи Tenderdash поддерживают несколько уровней детализации. В порядке возрастания детализации они следующие: error, warn, info (по умолчанию), debug и trace. Для большей гибкости можно также указать строку спецификации логирования в формате RUST_LOG. Чтобы отключить служебные журналы, установите уровень журнала на silent.

Уровень логирования можно изменить с помощью команды dashmate config set, чтобы обновить значение platform.drive.abci.logs.*.level. Например, выполните эти команды, чтобы изменить уровень логирования для дебага вашей ноды dashmate:

dashmate config set platform.drive.tenderdash.log.level debug
dashmate restart --platform

Просмотр настроек логирования

Чтобы просмотреть текущие настройки логов Tenderdash, выполните команду:

dashmate config get platform.drive.tenderdash.log

Сбор логов#

В состав Dashmate входит команда doctor, облегчающая поиск и устранение неисправностей и создание отчетов. Команда dashmate doctor собирает важные отладочные данные о мастерноде и создает сжатый файл отчета, который при необходимости может быть отправлен в службу поддержки. Этот отчет включает в себя:

  • Операционная система: Подробные сведения об архитектуре, процессоре, памяти и swap

  • Docker: Состояние и журналы (exit codes, stdout, stderr) для каждой службы

  • Core RPC: Такие важные данные, как лучший ChainLock, кворумы, информация о блокчейне, пиры и статус мастерноды.

  • Tenderdash RPC: Статус, генезис, информация о сети, детали ABCI и дамп состояния консенсуса

  • Метрики: Метрики Tenderdash и Drive (если они включены в конфигурации)

Чтобы создать отчет, запустите команду dashmate doctor и выберите Yes:

dashmate doctor
../../../../_images/dashmate-doctor-details.png

Выполните команду «doctor»#

После успешного завершения отобразится полный путь к архиву отчета.

../../../../_images/dashmate-doctor-done.png

вывод команды Docktor#

Метрики#

Чтобы обеспечить разработчикам DCG лучшую визуализацию сети для устранения неполадок, волонтеры могут предоставлять метрики на сервер метрик DCG.

  1. Включите метрики на вашей ноде dashmate

    dashmate config set platform.gateway.metrics.enabled true
    dashmate config set platform.gateway.metrics.host 0.0.0.0
    dashmate config set platform.gateway.metrics.port 9090
    dashmate config set platform.gateway.admin.enabled true
    
    dashmate config set platform.gateway.rateLimiter.metrics.enabled true
    dashmate config set platform.gateway.rateLimiter.metrics.host 0.0.0.0
    dashmate config set platform.gateway.rateLimiter.metrics.port 9102
    
    dashmate config set platform.drive.abci.metrics.enabled true
    dashmate config set platform.drive.abci.metrics.host 0.0.0.0
    dashmate config set platform.drive.abci.metrics.port 29090
    
    dashmate config set platform.drive.tenderdash.metrics.enabled true
    dashmate config set platform.drive.tenderdash.metrics.host 0.0.0.0
    dashmate config set platform.drive.tenderdash.metrics.port 26660
    
    dashmate restart --platform
    
  2. Предоставьте доступ к метрикам с сервера метрик DCG (34.219.3.238), обновив конфигурацию сети (т. е. брандмауэр, группы безопасности AWS и т. д.).

  3. Сообщите DCG свой IP-адрес и порт, чтобы его можно было добавить на сервер DCG Prometheus

Дополнительная информация#

Дополнительную документацию можно найти в репозитории dashmate.