Настройка панели управления Grafana

Теперь, когда ваш узел запущен и работает, вам, вероятно, захочется иметь удобный способ быстро отслеживать всё, что с ним связано, чтобы убедиться, что он функционирует правильно (и какой доход он генерирует для вас).

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

Rocket Pool поставляется с готовой поддержкой Grafana и её зависимостей; он даже включает предварительно настроенную панель для каждого Consensus-клиента. Например, вот как выглядит панель управления в тестовой сети Hoodi:

Стандартная панель управления включает следующую информацию в удобном формате:

  • Верхний левый угол: важная статистика о состоянии и производительности вашей машины, а также любые ожидающие обновления системы
  • Верхний правый угол: активность и производительность ваших валидаторов в Beacon Chain, а также статистика Execution и Consensus клиентов
  • Нижний левый угол: детали о всей сети Rocket Pool для справки
  • Нижний правый угол: детали о ваших вознаграждениях за стейкинг, как ETH, так и RPL

В этом руководстве мы покажем вам, как включить систему метрик Rocket Pool, чтобы вы могли использовать эту панель управления - или даже создать свою собственную!

Обзор стека метрик Rocket Pool

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

  • Prometheus - система сбора, хранения и отчётности данных, которая фиксирует все метрики, которые вы видите выше (и многие другие), и сохраняет их для анализа во времени
  • Prometheus Node Exporter - сервис, который собирает информацию о состоянии вашей машины (такую как использование CPU, RAM, свободное дисковое пространство и swap-пространство и т.д.) и отправляет её в Prometheus
  • Grafana, инструмент, который предоставляет данные Prometheus через удобный веб-сайт, размещённый на вашем узле
  • Опциональный пользовательский набор скриптов, который будет сообщать о доступных обновлениях операционной системы в Prometheus, чтобы вы знали, нужно ли обновить вашу систему

Конфигурация по умолчанию создаст Docker-контейнеры со всеми этими сервисами, которые будут существовать вместе с остальными Docker-контейнерами Smartnode. Она откроет порт на вашей машине с узлом для Grafana, чтобы вы могли получить доступ к его панели управления с любой машины в вашей локальной сети через браузер.

Включение сервера метрик

Docker
Hybrid
Native

Включение метрик в режиме Docker - самое простое из всех.

Начните с повторного запуска команды настройки Smartnode:

rocketpool service config

Перейдите в раздел Monitoring / Metrics и установите флажок Enable Metrics.

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

Сохраните и выйдите, и smartnode запустит Docker-контейнеры Prometheus, Node Exporter и Grafana для вас.

Он также изменит ваши Consensus и Validator клиенты, чтобы они предоставляли свои собственные метрики в Prometheus.

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

rocketpool service install-update-tracker

Под капотом это установит сервис, который подключается к менеджеру пакетов вашей операционной системы, периодически проверяет наличие обновлений и отправляет эту информацию в Prometheus. Этот сервис отличается для каждой операционной системы, но было подтверждено, что он работает на следующих:

  • Ubuntu 20.04+
  • Debian 9 и 10
  • CentOS 7 и 8
  • Fedora 34

ПРИМЕЧАНИЕ

Автоматическое включение сервиса несовместимо с SELinux. Если в вашей системе SELinux включён по умолчанию (как в случае с CentOS и Fedora), команда установки выполнит большую часть работы, но также даст вам инструкции о том, как завершить процесс вручную в конце.

Во время этой проверки он также сравнит установленную версию Rocket Pool Smartnode с последним релизом и сообщит вам, если доступна новая версия.

Если вы включили трекер обновлений, то последний шаг - перезапустить Node Exporter с помощью следующей команды:

docker restart rocketpool_exporter

После этого всё должно быть готово.

Настройка брандмауэра для разрешения подключений для мониторинга

ПРИМЕЧАНИЕ

Если у вас включён UFW, как указано в разделе Защита вашего узла, вам нужно будет открыть несколько портов, чтобы разрешить локальные подключения между Prometheus и вашими Execution/Consensus-клиентами. Следуйте инструкциям ниже.

Docker
Native

Выполните следующее и замените порты по мере необходимости:

RP_NET=$(docker inspect rocketpool_net | grep -Po "(?<=\"Subnet\": \")[0-9./]+")
sudo ufw allow from $RP_NET to any port 9105 comment "Allow Prometheus access to Execution Client"
sudo ufw allow from $RP_NET to any port 9100 comment "Allow Prometheus access to Consensus Client"
sudo ufw allow from $RP_NET to any port 9103 comment "Allow Prometheus access to Exporter"

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

Network
Subnet
Anywhere

Используйте это, если вы хотите получить доступ к Grafana с любой машины внутри вашей локальной сети, но запретить доступ откуда-либо ещё. Это будет наиболее распространённый случай использования.

Пожалуйста, сначала проверьте, использует ли ваша локальная сеть структуру 192.168.1.xxx. Возможно, вам придётся изменить команду ниже, чтобы она соответствовала конфигурации вашей локальной сети, если она использует другую структуру адресов (например, 192.168.99.xxx).

# This assumes your local IP structure is 192.168.1.xxx
sudo ufw allow from 192.168.1.0/24 proto tcp to any port 3100 comment 'Allow grafana from local network'

Настройка Grafana

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

Обратитесь к вкладкам ниже для вашего режима установки Smartnode.

Перейдите по следующему URL, заменив переменные в соответствии с вашей настройкой:

http://<IP вашего узла>:<порт grafana>

Например, если IP вашего узла был 192.168.1.5 и вы использовали порт Grafana по умолчанию 3100, то вы перейдёте по этому URL в вашем браузере:

http://192.168.1.5:3100

Вы увидите экран входа, подобный этому:

Данные Grafana по умолчанию:

Username: admin
Password: admin

Затем вам будет предложено изменить пароль по умолчанию для учётной записи admin. Выберите что-то надёжное и не забудьте его!

Совет

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

Docker and Hybrid Mode
Native
docker exec -it rocketpool_grafana grafana-cli admin reset-admin-password admin

Вы сможете войти в Grafana, используя учётные данные по умолчанию admin ещё раз, а затем вам будет предложено изменить пароль для учётной записи admin.

Благодаря работе участника сообщества tedsteen, Grafana автоматически подключится к вашему экземпляру Prometheus, чтобы иметь доступ к метрикам, которые он собирает. Всё, что вам нужно сделать, это получить панель управления!

Импорт панели управления Rocket Pool

Теперь, когда вы подключили Grafana к Prometheus, вы можете импортировать стандартную панель управления (или создать свою собственную, используя метрики, которые она предоставляет, если вы знакомы с этим процессом).

Начните с перехода в меню Create (значок плюса на правой боковой панели) и нажмите Import:

Когда вам будет предложено ввести ID панели управления в поле Import via grafana.com, введите 21863 или используйте полный URL ((https://grafana.com/grafana/dashboards/24900-rocket-pool-dashboard-v1-4-0/) и нажмите кнопку Load.

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

В раскрывающемся списке Prometheus внизу у вас должен быть только один вариант с меткой Prometheus (default). Выберите этот вариант.

Ваш экран должен выглядеть так:

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

На первый взгляд вы должны увидеть много информации о вашем узле и ваших валидаторах. Каждый блок поставляется с удобной всплывающей подсказкой в верхнем левом углу (значок i), на которую вы можете навести курсор, чтобы узнать о нём больше. Например, вот всплывающая подсказка для блока Your Validator Share:

Однако мы ещё не закончили настройку - осталось ещё немного конфигурации.

ПРИМЕЧАНИЕ

Некоторые блоки (в частности, блоки APR) были временно отключены из-за того, как Shapella предоставляет снятые вознаграждения.

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

Настройка монитора оборудования для вашей системы

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

Температура CPU

Чтобы обновить индикатор температуры вашего CPU, нажмите на заголовок блока CPU Temp и выберите Edit из выпадающего меню. Теперь ваш экран будет выглядеть примерно так:

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

По умолчанию в этом поле находится:

node_hwmon_temp_celsius{job="node", chip="", sensor=""}

В этом тексте есть два поля, которые в настоящее время пусты: chip и sensor. Они уникальны для каждой машины, поэтому вам придётся заполнить их на основе того, что предоставляет ваша машина.

Для этого выполните следующие шаги:

  1. Удалите часть , sensor="", чтобы она заканчивалась на chip=""}. Для ясности, всё должно быть теперь node_hwmon_temp_celsius{job="node", chip=""}.
  2. Поместите курсор между кавычками chip="" и нажмите Ctrl+Spacebar. Это вызовет окно автозаполнения с доступными опциями, которое выглядит так:
  1. Выберите опцию, которая соответствует CPU вашей системы.
  2. После выбора добавьте , sensor="" обратно в строку. Поместите курсор между кавычками sensor="" и нажмите Ctrl+Spacebar, чтобы получить другое меню автозаполнения. Выберите датчик, который вы хотите отслеживать.
Совет

Если вы не знаете, какой chip или sensor правильный, вам придётся попробовать их все, пока не найдёте тот, который выглядит правильно. Чтобы помочь с этим, установите пакет lm-sensors (например, sudo apt install lm-sensors в Debian / Ubuntu) и запустите команду sensors -u, чтобы показать, какие датчики есть у вашего компьютера. Вы можете попытаться сопоставить ID чипа из списка Grafana с тем, что вы видите здесь, на основе их имён и ID.

Например, это один из выходов нашей команды sensors -u:

k10temp-pci-00c3
Tctl:
  temp1_input: 33.500
Tdie:
  temp2_input: 33.500

В нашем случае соответствующий чип в Grafana - pci0000:00_0000:00:18_3, а соответствующий датчик - temp1.

После того как вы будете довольны своим выбором, нажмите синюю кнопку Apply в верхнем правом углу экрана, чтобы сохранить настройки.

ПРИМЕЧАНИЕ

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

Задержка SSD

График SSD Latency отслеживает, сколько времени занимают операции чтения/записи. Это полезно для оценки того, насколько быстр ваш SSD, чтобы вы знали, становится ли он узким местом, если ваш валидатор страдает от плохой производительности. Чтобы обновить SSD, который вы хотите отслеживать на графике, нажмите на заголовок SSD Latency и выберите Edit.

На этом графике есть четыре поля запроса (четыре текстовых поля) с восемью частями device="" в общей сложности. Вам нужно будет обновить первые четыре из этих частей с устройством, которое вы хотите отслеживать.

Просто поместите курсор между кавычками и нажмите Ctrl+Spacebar, чтобы получить список автозаполнения Grafana, и выберите правильную опцию оттуда для каждой из частей device="". Вы хотите начать с самой левой пустой настройки сначала, иначе список автозаполнения может не появиться.

Совет

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

lsblk

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

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
loop25        7:25   0   132K  1 loop /snap/gtk2-common-themes/9
loop26        7:26   0  65,1M  1 loop /snap/gtk-common-themes/1515
nvme0n1     259:0    0 238,5G  0 disk
├─nvme0n1p1 259:1    0   512M  0 part /boot/efi
├─nvme0n1p2 259:2    0 150,1G  0 part /
├─nvme0n1p3 259:3    0  87,4G  0 part
└─nvme0n1p4 259:4    0   527M  0 part

Если вы не меняли местоположение Docker по умолчанию на другой диск во время установки Smartnode, то диск, который вы хотите отслеживать, будет тем, на котором установлена ваша операционная система. Посмотрите в столбце MOUNTPOINT на запись с меткой просто /, затем проследите её обратно до родительского устройства (того, у которого disk в столбце TYPE).

Обычно это будет sda для дисков SATA или nvme0n1 для дисков NVMe.

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

Опционально вы также можете отслеживать задержку второго диска в вашей системе. Это предназначено для людей, которые хранят свою операционную систему и данные цепочки на отдельных дисках. Чтобы настроить это, просто следуйте инструкциям выше для последних двух полей запроса, заменив значения части device="" на значения диска, который вы хотите отслеживать.

После того как вы будете довольны своим выбором, нажмите синюю кнопку Apply в верхнем правом углу экрана, чтобы сохранить настройки.

Использование сети

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

Чтобы изменить её, нажмите на заголовок Network Usage и выберите Edit.

На этом графике есть два поля запроса с двумя частями device="" в общей сложности. Вам нужно будет обновить их сетью, которую вы хотите отслеживать.

Поместите курсор между кавычками и нажмите Ctrl+Spacebar, чтобы получить список автозаполнения Grafana, и выберите правильную опцию оттуда для каждой из частей device="".

Совет

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

sudo route

Вывод будет выглядеть примерно так:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.1     0.0.0.0         255.255.255.255 UH    100    0        0 eth0

Посмотрите на столбец Destination для строки со значением default. Проследуйте эту строку до столбца Iface. Устройство, указанное там, - это то, которое вы хотите использовать - в этом примере eth0.

После того как вы будете довольны своим выбором, нажмите синюю кнопку Apply в верхнем правом углу экрана, чтобы сохранить настройки.

Общий сетевой ввод/вывод

Это отслеживает общее количество данных, которые вы отправили и получили. Вы можете найти это полезным для отслеживания, если, например, ваш интернет-провайдер ограничивает вас определённым количеством данных в месяц.

Настройка идентична блоку Network Usage выше, поэтому просто следуйте этим инструкциям и для этого блока.

Использованное дисковое пространство

Это отслеживает, насколько заполнен ваш диск операционной системы, чтобы вы знали, когда пришло время очистить (и если ваши данные цепочки находятся на том же диске, время обрезать Geth или Nethermind).

Шаги такие же, как и для блока SSD Latency выше, поэтому просто следуйте этим инструкциям и для этого блока. Напоминаем, что вам нужен диск, который содержит раздел с / в столбце MOUNTPOINT, для этого, потому что это будет ваш диск операционной системы. Заполните это в первое поле запроса.

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

Температура диска

Это отслеживает текущую температуру вашего диска операционной системы. Шаги такие же, как и для блока CPU Temp выше, поэтому просто следуйте этим инструкциям для этого блока, заменив значения чипа и датчика CPU на значения вашего диска операционной системы. Заполните эти значения в первое поле запроса.

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

Настройка панели управления

Хотя стандартная панель управления пытается хорошо охватить всё, что вы хотели бы видеть с первого взгляда, довольно легко настроить панель управления Grafana так, как вы хотите. Вы можете добавлять новые графики, изменять внешний вид графиков, перемещать вещи и многое другое!

Взгляните на страницу Учебные материалы Grafana, чтобы узнать, как с ней играть и настроить её по своему вкусу.

Настройка стека метрик

Инструменты, используемые в стеке метрик Rocket Pool, предлагают широкий спектр параметров конфигурации, выходящих за рамки того, что включено в стандартную установку Rocket Pool. Этот раздел включает примеры конфигурации для различных случаев использования.

В общем, параметры конфигурации Grafana должны передаваться с использованием переменных окружения в override/grafana.yml. Любой параметр конфигурации может быть преобразован в переменную окружения с использованием следующего синтаксиса:

GF_<SectionName>_<KeyName>

Настройки SMTP Grafana для отправки электронных писем

Чтобы отправлять электронные письма из Grafana, например, для оповещений или для приглашения других пользователей, необходимо настроить настройки SMTP в стеке метрик Rocket Pool. См. страницу конфигурации SMTP Grafana для справки.

Docker and Hybrid Mode
Native

Откройте ~/.rocketpool/override/grafana.yml в текстовом редакторе. Добавьте раздел environment ниже строки x-rp-comment: Add your customizations below this line, заменив значения ниже на значения для вашего SMTP-провайдера.

version: "3.7"
services:
grafana:
x-rp-comment: Add your customizations below this line
environment:
## SMTP settings start, replace values with those of your SMTP provider
- GF_SMTP_ENABLED=true
- GF_SMTP_HOST=mail.example.com:`port` # Gmail users should use smtp.gmail.com:587
- GF_SMTP_USER=admin@example.com
- GF_SMTP_PASSWORD=password
- GF_SMTP_FROM_ADDRESS=admin@example.com
- GF_SMTP_FROM_NAME="Rocketpool Grafana Admin"
## SMTP server settings end
Совет

Если используется Gmail и включена двухэтапная проверка, создайте пароль приложения для этого сервиса.

После внесения этих изменений выполните следующее, чтобы применить изменения:

Docker and Hybrid Mode
Native
docker stop rocketpool_grafana

rocketpool service start

Чтобы протестировать настройки SMTP, перейдите в меню Alerting и нажмите Contact points.

Нажмите New contact point и выберите Email в качестве типа контактной точки. Введите адрес электронной почты в разделе Addresses и нажмите Test.

Проверьте, что тестовое письмо было получено. Нажмите Save contact point* по завершении.