Мониторинг доступности NanoKVM
NanoKVM — это компактное IP-KVM устройство от Sipeed на базе RISC-V (Cube/PCIe) или ARM64 (Pro) или ARMv7 (GxxKVM/JxxKVM).
Для embedded устройств, таких как NanoKVM, критически важно отслеживать их работоспособность. Heartbeat-мониторинг позволяет получать уведомления, если устройство потеряло связь с интернетом или перестало отвечать.
Эта инструкция объясняет, как настроить мониторинг доступности NanoKVM. Если вам также нужен удалённый доступ к устройству через интернет, см. инструкцию по настройке туннелей.
Подготовка
Что потребуется
- NanoKVM, подключённый к локальной сети и доступный по SSH или терминал в веб интерфейсе
- Аккаунт на tuna.am
Установка tuna на NanoKVM (опционально)
Heartbeat уведомления можно отправлять и при помощи curl, установка tuna cli не обя зательна, но если вы также используете туннели для удалённого доступа, то логично будет использовать этот же клиент и для Heartbeat уведомлений.
Подключитесь к NanoKVM по SSH:
ssh root@<IP-адрес-NanoKVM>
Или откройте терминал в веб интерфейсе:
Установите tuna с помощью скрипта, указав /data/tuna в качестве директории установки:
- curl
- wget
mkdir -p /data/tuna
INSTALL_DIR=/data/tuna sh -c "$(curl -sSLf https://releases.tuna.am/tuna/get.sh)"
mkdir -p /data/tuna
INSTALL_DIR=/data/tuna sh -c "$(wget -qO- https://releases.tuna.am/tuna/get.sh)"
Раздел /data смонтирован как exFAT с fmask=0022, файлы автоматически получают права 0755 — бинарник можно запускать сразу после копирования. Кроме того, /data сохраняется при обновлениях, поэтому tuna не придётся переустанавливать.
Создание Heartbeat монитора
- Перейдите в личный кабинет → Мониторы
- Нажмите "Создать монитор"
- Выберите тип Heartbeat
- Задайте параметры:
- Описание: NanoKVM availability
- Интервал: 5 минут (на бесплатном тарифе минимальный 30 минут)
- Grace Period: 1 минута (время ожидания перед алертом)
- Настройте каналы уведомлений
- Сохраните монитор и скопируйте 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_ID | ID монитора из личного кабинета (обязательно) |
--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 (см. Восстановление после перепрошивки)