Dashmate#
Dashmate - это универсальный инструмент, предназначенный для настройки и запуска Dash-мастернод в контейнерной среде. Это также идеальный инструмент для быстрой и простой настройки и запуска сети разработки в локальной системе.
Установка#
Это руководство описывает, как загрузить, установить и использовать 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
Установите тип сети и ноды#
Выберите Нет для регистрации новой мастерноды или Да для импорта информации о существующей мастерноде.
Если вы регистрируете новый мастерноду, перейдите к следующему разделу определение ключей и адресов.
Импортируйте имеющиеся данные Core#
Примечание
Следующий шаг применим только при переносе существующей мастерноды в dashmate.
Если на предыдущем шаге вы решили импортировать существующую мастерноду, вам будет предложено указать местоположение существующей установки.
После импорта данных Core перейдите к разделу конфигурация коммуникаций.
Определите ключи и адреса#
Введите запрашиваемую информацию из вашей транзакции финансирования залога. Эти значения можно найти с помощью команды Dash Core masternode outputs.
Введите адреса владельца, голосования и выплат, которые вы сгенерировали с помощью Dash Core или выбранного вами кошелька.
Введите закрытый ключ оператора BLS. Вы можете ввести созданный вами (например, используя Dash Core) или полученный от хостинг-провайдера. Как вариант, можно использовать ключ, автоматически сгенерированный dashmate.
Если часть вознаграждения за работу мастерноды предполагается направлять непосредственно оператору, установите также процентное соотношение вознаграждения.
Примечание
Следующий шаг применим только к Эвонодам. Для обычных мастернод ключ узла Платформы не требуется, поскольку на них не размещаются сервисы Платформы.
Введите ключ узла платформы. Вы можете ввести один вы создали или получили от хостинг-провайдера. Как вариант, можно использовать ключ, автоматически сгенерированный dashmate.
Конфигурирование связи#
Dashmate автоматически определит внешний IP-адрес и выберет порты по умолчанию для настраиваемой сети. При необходимости можно изменить эти значения, но, как правило, следует использовать значения по умолчанию.
Зарегистрируйте вашу мастерноду#
Скопируйте предоставленную команду protx и запустите ее с помощью dash-cli или консоли Dash Core. Обратите внимание, что для успешной регистрации на вашем адресе выплат должен быть баланс, поэтому не забудьте отправить на этот адрес некоторое количество DASH до начала регистрации.
После успешного выполнения команды выберите Да. При возникновении ошибки выберите Нет, чтобы вернуться к предыдущим шагам и просмотреть детали.
Включите SSL#
Примечание
Следующий шаг применим только к Эвонодам. Для обычных мастернод сертификат SSL не требуется, поскольку на них не размещаются сервисы Платформы.
Dash Platform требует использования SSL для обмена данными. Dashmate предоставляет несколько вариантов получения необходимого SSL-сертификата.
Предупреждение
Самоподписанные сертификаты не могут быть использованы в сети. При настройке Эвонод в основной сети единственными доступными вариантами являются ZeroSSL и File on disk.
После завершения конфигурирования отображается сводка, показывающая сеть и тип сконфигурированной ноды. В этой сводке указаны важные параметры и информация о дальнейших действиях.
Предупреждение
Закрытый ключ оператора BLS и ключ ноды платформы должны иметь сохраненную копию и надежно защищены.
Запустите ноду#
Запустите свою ноду следующим образом:
dashmate start
Примечание
При первом запуске узла Dashmate загрузит образы Docker, необходимые для каждого сервиса. Время, необходимое для этой однократной загрузки, зависит от доступной качества соединения, но обычно она завершается в течение нескольких минут.
Работа ноды Dashmate#
Вы можете управлять статусом, конфигурацией и рабочим состоянием своей мастерноды полностью из dashmate. Для получения дополнительной информации воспользуйтесь встроенной справочной системой:
dashmate --help
dashmate <command> --help
Запуск или перезапуск ноды#
Чтобы запустить ноду 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
Обновление ноды#
Чтобы обновить 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
Настройка |
Описание |
|
Ведет логирование IP-адресов входящих и исходящих соединений |
|
Записывает в лог местоположение исходного текста (номер файла и строки) для получения отладочной информации |
|
Логирует имена потоков, используемых для различных операций |
|
Ведет логирование временных меток с микросекундной точностью для детального анализа производительности |
Filter Option |
Описание |
|
Записывать в логи только указанные категории (например, |
|
Исключает указанные категории из логирования (например, |
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
После успешного завершения отобразится полный путь к архиву отчета.
Метрики#
Чтобы обеспечить разработчикам DCG лучшую визуализацию сети для устранения неполадок, волонтеры могут предоставлять метрики на сервер метрик DCG.
Включите метрики на вашей ноде 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
Предоставьте доступ к метрикам с сервера метрик DCG (34.219.3.238), обновив конфигурацию сети (т. е. брандмауэр, группы безопасности AWS и т. д.).
Сообщите DCG свой IP-адрес и порт, чтобы его можно было добавить на сервер DCG Prometheus
Дополнительная информация#
Дополнительную документацию можно найти в репозитории dashmate.