Skip to content

Доступность, нагрузка, логи, задания ​

Доступность ​

Доступность

По расписанию (NKT_PROBE_INTERVAL, по умолчанию раз в минуту) проверяются слушатели веб-серверов и бэкенды пулов, опубликованные порты Docker и Podman, проброшенные порты LXD, а работающие инстансы LXD и машины libvirt — ping по их адресу. На control plane Kubernetes — ещё и кластер: Ingress (HTTP-запрос с его именем хоста через входной контроллер), сервисы NodePort и LoadBalancer (соединение с портом узла) и узлы кластера (ping). Проверка — TCP-соединение, HTTP-запрос с верным заголовком Host или ping. История превращается в:

  • тепловую карту «час недели × простой» — видно, когда сервис падает регулярно;
  • графики доступности и задержки за период;
  • список сбоев с началом, концом и текстом ошибки.

Кроме найденных автоматически, можно добавить свои цели кнопкой «+ цель»: ping, TCP, HTTP или HTTPS на любой адрес, внутренний или внешний. Свои цели скан не трогает, удалить их можно из списка.

Нагрузка ​

Нагрузка

  • Графики нагрузки по счётчикам iptables, логам доступа nginx/haproxy и нагрузке контейнеров и машин за выбранный период: для сети, процессора и памяти рядом выбирается источник — Docker, Podman, LXD, Libvirt (virsh domstats) или Kubernetes (поды, kubectl top); записи логов сортируются по собственной метке времени, поэтому график показывает, когда нагрузка была, а не когда её собрали.
  • Показатели идут по важности: первым и по умолчанию — процессор, затем память, затем сеть и остальное. Источник по умолчанию — первый, у которого есть данные за сутки (Docker → Podman → LXD → Libvirt → Kubernetes), источники без данных помечены «нет данных». Последний источник — Хост целиком: процессор и память самой машины; он открывается, когда движков контейнеров на хосте нет.
  • У Kubernetes два источника: Kubernetes — поды, Kubernetes · узлы — узлы кластера, включая рабочие (kubectl top nodes). Для подов есть фильтры по узлам (несколько) и namespace.
  • Над графиком — выбор объектов: по умолчанию рисуются самые нагруженные, а остальное сворачивается в «Другое»; в списке с поиском можно выбрать любые, кнопка «Что в «Другом»?» открывает этот список.
  • Графики, рейтинг и расписание читают почасовые сводки, которые ведутся при записи замеров, а не минутные замеры: страница открывается быстро и не держит базу хоста (раньше на хосте с Kubernetes запросы шли секундами, и хост в это время мог не ответить хабу). Минутные замеры хранятся трое суток, почасовые сводки — не меньше 90 дней (NKT_RETENTION, если он больше). Первый запуск после обновления один раз строит сводки по накопленной истории.
  • Рейтинг самых нагруженных ресурсов и расписание нагрузки по часам.
  • Вкладка btop — живой btop в окне терминала; если его нет на хосте — ставится кнопкой.

Логи ​

Логи journald по юнитам и файлы из /var/log, включая архивные и сжатые. В списке юнитов — только установленные службы: у службы, которой на хосте нет, журнала тоже нет. Живое слежение через WebSocket с фильтром, подсветкой и автопрокруткой; окно лога можно открепить в отдельное окно браузера и держать рядом.

Задания ​

Окно задания

Всё долгое — установка пакетов, продление сертификата, применение профиля, создание машины — выполняется фоновым заданием с журналом, шагами и отменой. Список заданий хоста: вид, шаг, статус, автор, длительность; журнал — в реальном времени. Задание, прерванное перезапуском службы, продолжается или честно помечается прерванным.

Список — как журнал оповещений: фильтры по состоянию и виду, поиск по тексту (название и его аргументы — имена хостов, адреса, — автор, шаг, ошибка) по всем заданиям, а не только по последним; страницы по 20, 50 или 100 и порядок по дате — щелчком по «Начато». Фильтр, размер страницы и порядок запоминаются в этом браузере. Так же устроены «Задания» хаба.

Заданиями идут и установка и удаление пакетов apt, snap и flatpak, обновление системы, установка движков (LXD, Podman), btop, tmux, ufw и firewalld, создание инстансов LXD и контейнеров Podman, скачивание образов LXD и смена паролей гостей, остановка и снимки инстансов LXD, сохранение образов Docker, загрузка файлов с компьютера, распаковка архива в проводнике, генерация локалей, удаление пользователя с домашним каталогом, удаление Kubernetes с узла, выпуск и продление сертификата certbot, сканирование уязвимостей. На хабе — обновление самого хаба, «Обновить всё», запуск и остановка nkt на всех хостах, применение манифеста в кластерах, удаление хоста с очисткой, обновление баз уязвимостей и ClamAV, сбор мониторинга, сканирование уязвимостей хоста. Долгие операции хоста, которые хаб вызывает из своих заданий (скачивание и удаление пакетов, удаление Kubernetes, генерация локалей), тоже идут заданиями хоста: их журнал переносится в журнал задания хаба. Кнопка сразу открывает окно журнала с процентами (у apt — по его статусу); закрытое окно открывается снова из «Заданий». Через хаб — то же самое: это задания самого хоста.

Индикатор фоновых операций

Индикатор фоновых операций — кнопка «N операций» в правом нижнем углу любого раздела, пока что-то идёт: на хосте — его задания, на хабе — задания самого хаба и всех хостов в сети (с именем хоста). В списке — шаг и полоса процентов, нажатие открывает журнал задания. Так ход долгой операции виден и после ухода из раздела, где она начата, и с другого хоста.

Журнал действий ​

Журнал действий

Каждое изменение через интерфейс и API: кто, что, когда, с каким результатом и выводом команды; фильтры по действию и результату. Виды действий в фильтре (clamav.*, fail2ban.*, system.*…) берутся из самого журнала — в списке ровно то, что на этом хосте встречалось. Здесь же — состояние фоновых задач планировщика: интервал, последний запуск, сколько обработано, ошибки.