Оповещения, задания, разбор моделью
Оповещения

Хаб сам замечает переходы: хост недоступен / снова отвечает, перезагружен (аптайм стал меньше прежнего — иначе не бывает), появились серьёзные проблемы / исправлены, задание не выполнено, fail2ban забанил новые адреса, прогноз«Мониторинга», ИБП хоста: пропало питание / питание вернулось, батарея садится, нет связи с ИБП (см. ИБП). Журнал оповещений с настройкой, что записывать и о чём уведомлять; короткие эпизоды («не отвечает» → «снова отвечает» через пару минут) сворачиваются в одну строку «был недоступен N мин».
В разделе две вкладки: «Журнал» (открывается всегда при входе) и «Настройка» — что записывать, о чём уведомлять и что скрывать, исходящие вебхуки, боты Telegram и Slack.
Третья колонка настроек — «скрывать»: вид записывается, но в журнале не показывается и в непрочитанных не считается; уведомлять о скрытом нельзя. Над журналом — фильтры: по видам (несколько сразу), по хосту (список видов — с хаба, все, включая «прогноз» и «перезагружен») и поиск по имени хоста, адресу и тексту события — ищется по всему журналу (2000 последних событий), а не по показанной странице; галочка «показать скрытые» возвращает скрытые виды. Фильтр запоминается в этом браузере.
У события хоста — кнопка перехода сразу в нужный раздел этого хоста с подсветкой: новые проблемы — «Проблемы», карточки этих находок подсвечены; новые баны — fail2ban, подсвечены забаненные адреса; прогноз — «Диски» (точка монтирования), «Контейнеры» (вкладка движка и строка контейнера) или «Доступность» (цель); недоступен, снова отвечает, перезагружен — обзор хоста. У событий, записанных до этой версии, ссылки нет — кнопка ведёт в раздел по виду события. Те же переходы — у подсказок «Мониторинга».
У каждого внешнего IP в тексте оповещения — своя лампочка: проверка адреса моделью и кнопка «Забанить на всех хостах» в окне ответа — подробнее в fail2ban.
Переключатель «Уведомлять о проблемах» включает уведомления браузера — они приходят в любом разделе хаба, пока вкладка открыта. Счётчик непрочитанных — у пункта меню.
Исходящие вебхуки — те же события (и итоги выкладок) хаб сам шлёт наружу: в n8n, чат-бот, свою систему, с подписью HMAC. См. Исходящие вебхуки.
Мониторинг
Доступность и нагрузка всех хостов, узлы Kubernetes, прогнозы по трендам и подсказки — на отдельной странице: Мониторинг хаба. Прогнозы приходят оповещениями вида «прогноз» (см. выше), их пороги задаются там же.
Задания хаба
Установка и обновление nkt на хосте (включая «обновить всё»), создание машины, применение профиля группе, сценарий, кластер — всё это задания хаба с журналом в реальном времени; задание, прерванное перезапуском хаба, продолжается. У упавшего задания — «попробовать снова»: новое задание с теми же параметрами продолжает с сохранённого места (созданные машины, туннель, установленные роли пропускаются), старый журнал остаётся. Журналы, заголовки и ошибки заданий, как и оповещения, показываются на языке читающего — задание, запущенное из русского интерфейса, английский пользователь видит по-английски; сырой вывод инструментов остаётся как есть. Список — с фильтрами по состоянию и виду, поиском по тексту, страницами и порядком по дате, как журнал оповещений (подробнее — в «Заданиях» хоста).
Задание, которое продолжается после перезапуска службы, помнит, сколько раз его так продолжали: если служба перезапускалась посреди него больше трёх раз, оно прерывается с ошибкой, а не уходит в цикл. Ошибка внутри исполнителя задания не роняет службу — задание завершается с текстом «внутренняя ошибка исполнителя».
Экспорт, обновления, кэш
- Экспорт и импорт хаба — на странице Хосты.
- Обновление хаба и хостов, бета-канал, база уязвимостей и ClamAV — Обновления.
- Кэш пакетов, файлов и образов — Кэш пакетов.
Разбор моделью (ИИ)
Карточка в «О системе» — одна настройка на всю установку: провайдер (Anthropic или OpenAI-совместимый, включая локальные — Ollama, vLLM, LM Studio), адрес, модель, ключ. Ключ лежит на хабе зашифрованным и наружу не отдаётся; запросы уходят с хаба — хостам интернет не нужен. По умолчанию выключено.
Модель выбирается из списка провайдера: кнопка «Получить модели» рядом с полем спрашивает у провайдера список теми адресом и ключом, что сейчас в форме (Anthropic — /v1/models; OpenAI-совместимые — /v1/models, у Ollama ещё и /api/tags с размером модели). Поле превращается в список с поиском: имя, дата выпуска или размер, новые сверху. Эмбеддинги, распознавание речи и картинки у OpenAI скрыты — галочка «показать все» их возвращает. Вписать имя руками по-прежнему можно; если текущей модели нет в списке провайдера, рядом появится пометка. После выбора из списка окно предлагает сразу «Проверить». Список бесплатный: суточный лимит он не тратит, запрос пишется в журнал действий.
Адрес API вписывается так, как его даёт провайдер: с /v1 на конце (http://сервер:8080/v1 у llama.cpp и LM Studio, https://openrouter.ai/api/v1) или без — хаб дописывает пути сам и лишний /v1 не удваивает. Ошибка провайдера называет адрес запроса: по нему сразу видно, если адрес не тот.
Кнопка «Проверить» шлёт модели короткий пробный вопрос теми настройками, что сейчас в форме: неверный адрес или ключ видно сразу. Время ожидания ответа — сколько ждать модель (по умолчанию 90 с; локальной на слабой машине нужно 300+); в окне разбора идёт счётчик секунд.
Включённый разбор добавляет кнопку-лампочку в строку находки (в том числе в «Что сломано» на обзоре), уязвимости (пакеты и образы), вредоносного (и улики «Майнеры и признаки взлома», и находки ClamAV), оповещения и к ошибке задания: что это значит, чем грозит именно здесь, что сделать — с командами. Команды только показываются, применяете их вы.
На «Карте ресурсов» — архитектурный разбор: точки отказа, лишняя публичность, несогласованности, с чего начать; на хабе — по всем хостам сразу. Разборы сохраняются с датой.
Ответ остаётся у находки: лампочка без ответа — контурная синяя, с ответом — оранжевая, открывает сохранённый ответ без запроса («спросить заново», «удалить ответ» — под ответом). Такая же находка, уже разобранная на другом хосте, — залитая синяя: сначала показывается тот ответ с пометкой, откуда он, свой запрос — по отдельной кнопке.
Инструкции модели (промпты) правятся в той же карточке: для разбора находки, для архитектурного разбора, для помощи по конфигурации и для проверки внешнего адреса, на русском и английском; сохранение — через окно с диффом относительно стандартной, «вернуть стандартную» снимает правку.
В «Конфигурациях» лампочка есть в шапке каждого открытого файла (любой сервис) и у выбранной программы: «что настроено / что поправить / пример» — с полем для вопроса под задачу. Пароли, ключи, токены и хэши паролей из текста вырезаются всегда.
При отказе записи конфигурации (проверка или apply не прошли) в баннере — та же лампочка: модели уходят вывод проверки и дифф правки, задача — объяснить и показать исправленный фрагмент. Пароли, токены и ключи из запроса вырезаются всегда, независимо от галочки ниже.
Галочка «скрывать адреса и имена» (по умолчанию включена) заменяет имена хостов, IP, домены и почту псевдонимами перед отправкой и возвращает их в ответе.
Под ответом — «Сгенерировано моделью …» с именем модели и «показать запрос»: запрос целиком, как он ушёл модели, — кому (провайдер, модель, адрес, время ожидания), инструкция (стандартная или правленая), сообщение с псевдонимами вместо адресов и имён и таблица «что заменено» (её видит только администратор), кнопка «скопировать запрос». Запрос хранится вместе с ответом и у архитектурного разбора карты — в том числе в истории разборов. У ответов, полученных до v1.11.41, сохранено только сообщение. Ответы кэшируются, расход ограничен суточным лимитом.
Приватный режим
Галочка «скрыть чувствительное» в «О системе» — для показа экрана и скриншотов: адреса и имена хостов и машин, пользователи, ключи и токены, домены, адреса API кластеров, IP/MAC размываются на всех страницах и в модальных окнах; в журналах, оповещениях, находках и аудите — адреса, почта, домены и имена хостов из списка; терминал, логи и топология — целиком. Ничего не показывается по наведению — чтобы прочитать, выключите режим. Метка режима — оранжевый бейдж «nkt» в шапке; состояние помнится в браузере.