Skip to main content

Мониторинг доступности NanoKVM

NanoKVM — это компактное IP-KVM устройство от Sipeed на базе RISC-V (Cube/PCIe) или ARM64 (Pro) или ARMv7 (GxxKVM/JxxKVM).

Для embedded устройств, таких как NanoKVM, критически важно отслеживать их работоспособность. Heartbeat-мониторинг позволяет получать уведомления, если устройство потеряло связь с интернетом или перестало отвечать.

info

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


Подготовка

Что потребуется

  • NanoKVM, подключённый к локальной сети и доступный по SSH или терминал в веб интерфейсе
  • Аккаунт на tuna.am

Установка tuna на NanoKVM (опционально)

Heartbeat уведомления можно отправлять и при помощи curl, установка tuna cli не обязательна, но если вы также используете туннели для удалённого доступа, то логично будет использовать этот же клиент и для Heartbeat уведомлений.

Подключитесь к NanoKVM по SSH:

ssh root@<IP-адрес-NanoKVM>

Или откройте терминал в веб интерфейсе:

NanoKVM terminal

Установите tuna с помощью скрипта, указав /data/tuna в качестве директории установки:

mkdir -p /data/tuna
INSTALL_DIR=/data/tuna sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"
tip

Раздел /data смонтирован как exFAT с fmask=0022, файлы автоматически получают права 0755 — бинарник можно запускать сразу после копирования. Кроме того, /data сохраняется при обновлениях, поэтому tuna не придётся переустанавливать.


Создание Heartbeat монитора

  1. Перейдите в личный кабинет → Мониторы
  2. Нажмите "Создать монитор"
  3. Выберите тип Heartbeat
  4. Задайте параметры:
    • Описание: NanoKVM availability
    • Интервал: 5 минут (на бесплатном тарифе минимальный 30 минут)
    • Grace Period: 1 минута (время ожидания перед алертом)
  5. Настройте каналы уведомлений
  6. Сохраните монитор и скопируйте MONITOR_ID

Подробнее о Heartbeat мониторах: Документация Heartbeat


Создание скрипта мониторинга

Создайте скрипт /data/tuna/tuna-heartbeat.sh:

cat << 'EOF' > /data/tuna/tuna-heartbeat.sh
#!/bin/sh

# Ждём сеть
while ! ip route | grep -q default; do
sleep 1
done

# Бесконечный цикл отправки heartbeat
while true; do
/data/tuna/tuna monitor ping --host=nanokvm YOUR_MONITOR_ID
# Интервал между пингами (30 минут = 1800 секунд)
sleep 1800
done
EOF
chmod +x /data/tuna/tuna-heartbeat.sh

Если используете curl то вместо строки:

/data/tuna/tuna monitor ping --host=nanokvm YOUR_MONITOR_ID

укажите вызов curl и ссылку из личного кабинета:

curl -sSLf -m 5 https://monitor.tuna.am/YOUR_MONITOR_ID/nanokvm

Важно

Замените YOUR_MONITOR_ID на реальный ID монитора из личного кабинета.

Пояснение параметров:

ПараметрОписание
YOUR_MONITOR_IDID монитора из личного кабинета (обязательно)
--host=nanokvmИдентификатор устройства в логах мониторинга (опционально)
sleep 300Интервал между сигналами в секундах (должен соответствовать настройке монитора)

Настройка автозапуска

Добавьте строку в /etc/inittab для автоматического запуска и перезапуска мониторинга:

cat << 'EOF' >> /etc/inittab

# Tuna Heartbeat monitor (respawn = auto-restart)
thb::respawn:/data/tuna/tuna-heartbeat.sh
EOF

Применить без перезагрузки:

kill -HUP 1

Проверка работы

Убедитесь, что процесс мониторинга запущен:

ps -ef | grep heartbeat

В выводе должна быть строка с /data/tuna/tuna-heartbeat.sh. Если процесса нет — проверьте /etc/inittab:

grep heartbeat /etc/inittab

Строка должна начинаться с thb::respawn, а не с #.

Проверьте статус монитора в личном кабинете — через 1-2 минуты статус должен измениться с "New" на "Up".


Управление мониторингом

Остановка мониторинга:

sed -i 's/^thb:/#thb:/' /etc/inittab && kill -HUP 1

Запуск мониторинга:

sed -i 's/^#thb:/thb:/' /etc/inittab && kill -HUP 1

Восстановление после перепрошивки

Бинарник и скрипты в /data/tuna/ сохраняются при обновлении приложения через веб-интерфейс и при remote rsync. После полной перепрошивки (Etcher) потребуется заново скопировать бинарник и создать скрипты.

При remote rsync нужно восстановить только строки в /etc/inittab:

cat << 'EOF' >> /etc/inittab

# Tuna Heartbeat monitor (respawn = auto-restart)
thb::respawn:/data/tuna/tuna-heartbeat.sh
EOF
kill -HUP 1

Почему не cron?

В NanoKVM существует известная проблема с cron:

  • Crontabs не существуют по умолчанию
  • Созданные crontabs не переживают перезагрузку
  • Нет системного /etc/crontab

Поэтому для периодических задач на NanoKVM рекомендуется использовать inittab с бесконечным циклом — этот подход надёжен и соответствует архитектуре системы.

Альтернатива для других систем

На обычных Linux-системах (Debian, Ubuntu) для heartbeat мониторинга предпочтительнее использовать cron или systemd timers. См. примеры в документации Heartbeat.


Диагностика неполадок

Процесс heartbeat не запускается

Проверьте, что процесс присутствует в списке:

ps -ef | grep heartbeat

Если в выводе нет строк с /data/tuna/tuna-heartbeat.sh — убедитесь, что запись в /etc/inittab не закомментирована:

grep heartbeat /etc/inittab

Строка должна начинаться с thb::respawn, а не с #. Если она закомментирована — раскомментируйте и перечитайте конфигурацию:

kill -HUP 1

Монитор показывает "Down"

Причины:

  • Неверный MONITOR_ID
  • Отсутствует интернет-соединение
  • Интервал в скрипте не соответствует настройкам монитора

Проверка:

# Проверить наличие IP-адреса
ip addr

# Проверить маршрут по умолчанию
ip route

# Проверить доступ в интернет
ping -c 3 8.8.8.8

После обновления прошивки heartbeat перестал работать

Проверьте, не обновлялась ли прошивка — после remote rsync нужно восстановить записи в /etc/inittab (см. Восстановление после перепрошивки)