Перейти к основному содержимому

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

JetKVM — это компактное IP-KVM устройство на базе Rockchip RV1106 (ARM Cortex-A7).

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

к сведению

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


Подготовка

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

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

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

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

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

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

mkdir -p /userdata/tuna
INSECURE=true INSTALL_DIR=/userdata/tuna sh -c "$(wget -qO- http://releases.tuna.am/tuna/get.sh)"
подсказка

Раздел /userdata сохраняется при OTA-обновлениях, поэтому tuna не придётся переустанавливать.


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

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

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


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

Рекомендуется tuna CLI

Начиная с версии 0.31, клиент tuna содержит встроенные CA-сертификаты и не зависит от системных. На JetKVM отсутствуют корневые CA-сертификаты, поэтому wget может работать только с --no-check-certificate, а API monitor.tuna.am может быть недоступен по HTTP. Рекомендуем использовать tuna CLI для мониторинга — он гарантированно работает по HTTPS.

Создайте init-скрипт /userdata/init.d/S97tuna-heartbeat:

cat << 'INITEOF' > /userdata/init.d/S97tuna-heartbeat
#!/bin/sh

PIDFILE=/tmp/tuna-heartbeat.pid

wait_network() {
i=0
while ! ip route | grep -q default; do
sleep 1
i=$((i + 1))
if [ "$i" -ge 60 ]; then
return 1
fi
done
return 0
}

start() {
(
wait_network || exit 1
while true; do
/userdata/tuna/tuna monitor ping --host=jetkvm YOUR_MONITOR_ID
# Интервал между пингами (30 минут = 1800 секунд)
sleep 1800
done
) &
echo $! > "$PIDFILE"
}

stop() {
if [ -f "$PIDFILE" ]; then
kill "$(cat "$PIDFILE")" 2>/dev/null
rm -f "$PIDFILE"
fi
}

case "$1" in
start) start ;;
stop) stop ;;
restart) stop; sleep 1; start ;;
*) echo "Usage: $0 {start|stop|restart}" ;;
esac
INITEOF
chmod +x /userdata/init.d/S97tuna-heartbeat
Важно

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

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

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

Скрипт использует тот же формат, что и скрипты для туннелей: #!/bin/sh, обработка аргументов start/stop, фоновый запуск. Подробнее о требованиях к init-скриптам см. инструкцию по туннелям.


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

Запустите скрипт вручную:

/userdata/init.d/S97tuna-heartbeat start

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

ps | grep heartbeat

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


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

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

/userdata/init.d/S97tuna-heartbeat stop

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

/userdata/init.d/S97tuna-heartbeat start

Полное отключение автозапуска:

mv /userdata/init.d/S97tuna-heartbeat /userdata/init.d/disabled-tuna-heartbeat

Включить обратно:

mv /userdata/init.d/disabled-tuna-heartbeat /userdata/init.d/S97tuna-heartbeat

Восстановление после OTA-обновления

Скрипт и бинарник хранятся в /userdata/, который сохраняется при OTA-обновлениях. После обновления прошивки мониторинг продолжит работать без дополнительных действий.

При полной перепрошивке (когда /userdata был очищен) потребуется заново установить бинарник и создать init-скрипт.


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

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

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

ps | grep heartbeat

Если процесса нет — проверьте, что скрипт существует и исполняем:

ls -la /userdata/init.d/S97*heartbeat*

Запустите скрипт вручную для диагностики:

/userdata/init.d/S97tuna-heartbeat start

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

Причины:

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

Проверка:

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

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

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

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

Проверьте, что скрипт на месте:

ls -la /userdata/init.d/S97*heartbeat*

Если скрипт отсутствует — он мог быть удалён при полной перепрошивке. Пересоздайте его по инструкции выше.