Мониторинг производительности вашего узла

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

Вы можете отслеживать свою машину либо:

  1. Напрямую, подключаясь к метрикам вашей машины
  2. Косвенно через использование сторонних инструментов

Рекомендуется использовать комбинацию обоих в зависимости от ваших потребностей.

Прямое отслеживание состояния вашей машины

Что касается состояния вашей машины, есть несколько полезных метрик, за которыми вы, вероятно, захотите следить:

  • Использование CPU
  • Оставшаяся свободная RAM
  • Использование swap-пространства (если вы его включили)
  • Оставшееся свободное дисковое пространство
  • Сетевой I/O (если ваш провайдер устанавливает ограничение на передачу данных)
ПРИМЕЧАНИЕ

Разделы ниже показывают вам несколько способов мониторинга, но они требуют, чтобы вы были подключены к терминалу вашей машины. Существует лучший, гораздо более удобный и гораздо более красивый метод, использующий веб-панель Grafana, но он все еще находится в разработке. Следите за завершением этого раздела!

CPU, RAM и Swap

Первые три можно легко просмотреть с помощью программы htop. Это даст вам красивый живой вид системных ресурсов, как показано на этом скриншоте с Raspberry Pi:

htop

Скриншот Htop на raspberry pi

На верхнем дисплее с полосами пронумерованные полосы каждая относятся к текущему использованию ядра CPU.

Mem показывает вам, сколько RAM вы в настоящее время используете (на этом скриншоте 1.75 ГБ) и сколько у вас всего (3.70 ГБ).

Swp показывает вам, сколько swap-пространства вы используете (85.8 МБ) и сколько у вас всего (12.0 ГБ).

В нижней таблице каждая строка представляет процесс. Ваши клиенты Execution и Consensus, вероятно, будут наверху (в этом случае Geth и Nimbus), что вы можете увидеть в самом правом столбце с меткой Command.

Столбец RES показывает вам, сколько RAM занимает каждый процесс - на этом скриншоте Geth занимает 748 МБ, а Nimbus занимает 383 МБ.

Столбец CPU% показывает вам, сколько мощности CPU потребляет каждый процесс. 100% представляет одно ядро, поэтому если это больше 100%, это означает, что он использует много из нескольких ядер (как Geth здесь, с 213%).

Оставшееся свободное дисковое пространство

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

df -h

Это предоставит вывод, похожий на следующий пример:

Filesystem        Size  Used Avail Use% Mounted on
...
/dev/mmcblk0p2     30G   12G   16G  43% /
...
/dev/sda1         1.8T  852G  981G  47% /mnt/rpdata
...

Для обычных настроек, где у вас есть один диск, который хранит как вашу операционную систему, так и данные цепи Execution и Consensus, вам нужно только посмотреть на запись, у которой / в столбце Mounted on. Это представляет ваш основной диск. Если когда-либо покажется, что на нем заканчивается место (скажем, используется 80% или около того), то вам нужно начать думать о некоторой очистке. Например, если вы запускаете Geth, вы можете захотеть посмотреть на как его обрезать, чтобы освободить место.

Для настроек, которые хранят данные цепи Execution и Consensus на отдельном диске, вы также захотите посмотреть на строку, у которой есть папка данных вашей цепи в столбце Mounted on. В этом примере мы смонтировали внешний SSD на /mnt/rpdata, поэтому нам нужно будет следить за ним, чтобы убедиться, что он также не вырастет слишком большим.

Сетевой I/O и использование данных

Если вы хотите отслеживать, сколько сетевого I/O использует ваша система с течением времени, вы можете установить приятную утилиту под названием vnstat. Вот пример установки ее в системе Ubuntu / Debian:

sudo apt install vnstat

Чтобы запустить ее, сделайте это (предполагая, что eth0 - это имя сетевого интерфейса, который вы используете для вашего интернет-соединения):

vnstat -i eth0

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

$ vnstat -i eth0
Database updated: 2021-06-28 22:00:00

   eth0 since 2021-01-29

          rx:  3.33 TiB      tx:  4.25 TiB      total:  7.58 TiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       2021-05    550.19 GiB |  855.34 GiB |    1.37 TiB |    4.51 Mbit/s
       2021-06    498.13 GiB |  784.43 GiB |    1.25 TiB |    4.57 Mbit/s
     ------------------------+-------------+-------------+---------------
     estimated    535.31 GiB |  842.97 GiB |    1.35 TiB |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     yesterday     18.35 GiB |   32.00 GiB |   50.36 GiB |    5.01 Mbit/s
         today     18.26 GiB |   30.52 GiB |   48.78 GiB |    5.29 Mbit/s
     ------------------------+-------------+-------------+---------------
     estimated     19.92 GiB |   33.30 GiB |   53.22 GiB |

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

Обратите внимание, что большинство современных систем чаще используют другие сетевые интерфейсы, такие как eno0 и enp0s31f6, а не eth0. Если вам нужно проверить свой сетевой интерфейс, выполните следующую команду:

ls /sys/class/net

Ethernet (проводные) устройства обычно начинаются с e, например, примеры выше. Беспроводные устройства обычно начинаются с w.

Уведомления Smartnode

Мониторинг вашего стека Smartnode с уведомлениями проводит вас через использование функциональности уведомлений Smartnode для получения уведомлений о здоровье и важных событиях вашего Rocket Pool Smartnode.

Сторонний мониторинг производительности

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

Обратите внимание, что эти сторонние инструменты используются сообществом Rocket Pool, но не одобрены и не поддерживаются официально командой Rocket Pool. Если у вас есть предложение по инструменту, или вы являетесь владельцем инструмента, вы можете добавить pull request с подробностями о вашем инструменте.

Веб-сайт Beaconcha.in: использование Beacon Chain в качестве источника метрик

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

Tip

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

Если все настроено правильно, вы должны увидеть что-то вроде этого:

ПРИМЕЧАНИЕ

Приведенная выше ссылка для mainnet версии Beaconcha.in. Если вы работаете в Hoodi Testnet, используйте эту ссылку вместо этого!

Это запись всей активности Beacon Chain для вашего валидатора. Вы можете использовать ее для проверки баланса вашего валидатора в Beacon Chain, чтобы наблюдать, как он растет со временем, и рассчитать свой APY.

Вы также можете использовать ее для быстрой оценки, работает ли ваш валидатор живым и корректно. Если да, все аттестации должны говорить Attested для их Status, и в идеале все Opt. Incl. Dist. должны быть 0 (хотя случайные 1 или 2 - это нормально).

Если есть много блоков, на которых написано Missed, то ваш валидатор не работает правильно. Вы должны проверить логи служб eth1, eth2 и validator с помощью rocketpool service logs ..., если вы используете режим Docker или Hybrid (или соответствующие скрипты логов, если вы используете режим Native), чтобы искать проблемы.

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

Использование Beaconcha.in для мониторинга нескольких Minipool

Beaconcha.in имеет представление панели управления, которое позволяет вам контролировать несколько валидаторов или minipool одновременно. Просто добавьте индексы своих валидаторов один за другим. Если у вас много minipool, вы можете запустить:

rocketpool minipool status | grep Validator.index | awk -F " " '{print $3}' | paste -s -d, -

чтобы получить список, разделенный запятыми, и поместить его в строку URL так: https://beaconcha.in/dashboard?validators=123456,123457

Приложение Beaconcha.in: обзор валидатора и push-уведомления

Веб-сайт Beaconcha.in - отличный способ просмотреть метрики и настроить оповещения по электронной почте. Их мобильное приложение имеет более "быстрый взгляд" характер. Оно также включает службу push-уведомлений, которая включает некоторые полезные оповещения, такие как:

  1. Уведомления о проблемах, таких как пропущенные аттестации
  2. Уведомления о раундах вознаграждений Rocket Pool
  3. Избыточное/недостаточное обеспечение RPL на вашем узле

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

Переименование ваших валидаторов на Beaconcha.in

Веб-сайт Beaconcha.in имеет функцию, которая позволяет пользователям переименовывать своих валидаторов, упрощая их идентификацию/поиск.

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

Smartnode v1.5.1 включает возможность подписывать сообщения закрытым ключом вашего кошелька узла, используя команду rocketpool node sign-message, затем предоставив сообщение, которое вы хотите подписать. Оно должно содержать термин 'beaconcha.in', чтобы использоваться для переименования ваших валидаторов.

Откройте страницу вашего валидатора на Beaconcha.in и нажмите кнопку Edit validator name.

Скопируйте результат команды sign-message и вставьте его в поле "Signature". Заполните желаемое имя и нажмите кнопку Save changes.

Uptimerobot: сканирование портов для проверки времени работы

Служба Uptimerobot - это простая служба, которая сканирует IP-адрес на наличие открытого порта. Если ваша машина становится недоступной на указанном вами порту, Uptimerobot может отправить вам уведомление о том, что есть проблема. Служба имеет широкий выбор опций уведомлений, включая электронную почту, push-уведомление, SMS, телефонный звонок и webhooks.

Экран настройки выглядит примерно так:

IP для мониторинга - это внешний IP вашего узла, который вы можете найти, войдя в свой узел по ssh или физически, и открыв icanhazip.com в браузере или выполнив следующую команду в терминале:

curl icanhazip.com

Порт для мониторинга зависит от настройки вашего узла; пользователи, использующие типичную установку Smartnode, вероятно, перенаправили порты 30303 и 9001 для клиентов Execution и Consensus соответственно, поэтому это хороший выбор для мониторинга времени работы.

Панели метрик Rocketpool

Существует несколько инициатив сообщества по предоставлению обзора производительности вашего узла, а также сети Rocket Pool в целом.

Скриптинг с Pushover (расширенный)

ПРИМЕЧАНИЕ

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

Служба Pushover позволяет вам отправлять себе push-уведомления.

ПРИМЕЧАНИЕ

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

Чтобы начать работу с Pushover:

  1. Создайте учетную запись на pushover.net
  2. Создайте токен API
  3. Установите мобильное приложение Pushover и/или расширение браузера
  4. Вызовите API Pushover для любого действия, которое вас интересует

Вызов API Pushover для отправки вам push-уведомления осуществляется через вызов curl, структурированный следующим образом:

PUSHOVER_USER=
PUSHOVER_TOKEN=
MESSAGE_TITLE=
MESSAGE_CONTENT=
curl -f -X POST -d "token=$PUSHOVER_TOKEN&user=$PUSHOVER_USER&title=$MESSAGE_TITLE&message=$MESSAGE_CONTENT&url=&priority=0" https://api.pushover.net/1/messages.json

Пример: Push-уведомление о доступных обновлениях

Если вы настроили автоматические обновления с использованием пакетов unattended-upgrades и update-notifier, вы можете захотеть получать push-уведомление, когда доступны обновления для вашего узла. Потенциальный способ сделать это - создать скрипт в ~/update-notifier.sh и запускать его ежедневно в 9:00 с помощью crontab.

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

nano ~/update-notifier.sh

Затем вставьте следующий скрипт:

#!/bin/bash

PUSHOVER_USER=
PUSHOVER_TOKEN=
NODE_ADDRESS="$(rocketpool node status | grep -Po "(?<=The node )(0x[A-Za-z0-9]{40})")"
EXPLORER_URL=https://beaconcha.in/validators/deposits?q=
#EXPLORER_URL=https://www.rp-metrics-dashboard.com/dashboard/MAINNET/
NOTIFICATION_URL="$EXPLORER_URL$NODE_ADDRESS"

# Check if the update-notifier file is showing updates available
if cat /var/lib/update-notifier/updates-available | grep -Pq '^(?!0)[0-9]* updates can be applied'; then


   MESSAGE_TITLE="⚠️ Rocket Pool node system updates available"
   MESSAGE_CONTENT="$( cat /var/lib/update-notifier/updates-available | grep -P '^(?!0)[0-9]* updates can be applied' )"

else

   MESSAGE_TITLE="✅ Rocket Pool node system up to date"
   MESSAGE_CONTENT="No system updates available"

fi

curl -f -X POST -d "token=$PUSHOVER_TOKEN&user=$PUSHOVER_USER&title=$MESSAGE_TITLE&message=$MESSAGE_CONTENT&url=$NOTIFICATION_URL&priority=0" https://api.pushover.net/1/messages.json

Далее выполните следующую команду, чтобы отметить скрипт как исполняемый:

chmod u+x ~/update-notifier.sh

Теперь выполните следующую команду, чтобы открыть ваш crontab:

crontab -e

Затем используйте клавиши со стрелками, чтобы прокрутить вниз, и добавьте строку * 9 * * * ~/update-notifier.sh, чтобы файл выглядел так:

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

# This like triggers at 9 AM local time
# to configure your own times, refer to https://crontab.guru/
0 9 * * * ~/update-notifier.sh

Затем нажмите control+x, чтобы выйти, и нажмите Y, когда вас спросят, хотите ли вы сохранить изменения.

Теперь вы должны получать уведомление в 09:00 по местному времени, если у вас есть обновления. Вы можете вручную запустить скрипт, набрав это в терминале:

~/update-notifier.sh

Пример: получение уведомлений, когда активируется демон APC UPS

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

Утилита apcupsd использует скрипт apccontrol для управления своей логикой, поэтому можно отслеживать активность этого демона, редактируя файл /etc/apcupsd/apccontrol. Чтобы сделать это, выполните:

sudo nano /etc/apcupsd/apccontrol

Затем в верхней части строки добавьте следующий код, чтобы файл выглядел так:

PUSHOVER_USER=
PUSHOVER_TOKEN=
MESSAGE_TITLE="UPS Daemon called"
MESSAGE_CONTENT="called with: $1"
curl -f -X POST -d "token=$PUSHOVER_TOKEN&user=$PUSHOVER_USER&title=$MESSAGE_TITLE&message=$MESSAGE_CONTENT&url=&priority=0" https://api.pushover.net/1/messages.json

#
# Copyright (C) 1999-2002 Riccardo Facchetti <riccardo@master.oasi.gpa.it>
#
# platforms/apccontrol.  Generated from apccontrol.in by configure.

Это будет отправлять вам push-уведомление всякий раз, когда ваш демон UPS выполняет действие, включая периодическую функциональность "самотестирования".