Перейти к основному содержанию Перейти к навигации Перейти к нижнему колонтитулу
Ограниченное время: Программа Design Partner — тариф BUSINESS навсегда

Мониторинг

Мониторинг состояния машин, контейнеров, сервисов, репозиториев и запуск диагностики.

Мониторинг

Rediacc предоставляет встроенные команды мониторинга для проверки состояния машин, запущенных контейнеров, сервисов, статуса репозиториев и системной диагностики.

Состояние машины

Получение комплексного отчёта о состоянии машины:

rdc machine health --name server-1

Отчёт включает:

  • System: время работы, использование диска, использование хранилища
  • Контейнеры: количество запущенных, исправных и неисправных
  • Хранилище: состояние SMART
  • Проблемы: обнаруженные проблемы

Используйте --output json для машиночитаемого вывода.

Список контейнеров

Просмотр всех запущенных контейнеров во всех репозиториях на машине:

rdc machine containers --name server-1
СтолбецОписание
NameИмя контейнера
StatusВремя работы или причина остановки
StateЗапущен, остановлен и т.д.
HealthИсправен, неисправен, нет
CPUПроцент использования CPU
MemoryИспользование памяти / лимит
RepositoryРепозиторий, которому принадлежит контейнер

Параметры:

  • --health-check, выполнить активные проверки состояния контейнеров
  • --output json, машиночитаемый вывод в формате JSON

JSON-вывод включает полные сведения о контейнере (labels, port_mappings, image, id), а также repository (разрешённое имя), repository_guid (исходный GUID), domain и autoRoute.

Список сервисов

Просмотр systemd-сервисов, связанных с Rediacc, на машине:

rdc machine services --name server-1
СтолбецОписание
NameИмя сервиса
StateАктивен, неактивен, сбой
Sub-stateЗапущен, остановлен и т.д.
RestartsКоличество перезапусков
MemoryИспользование памяти сервисом
RepositoryСвязанный репозиторий

Параметры:

  • --stability-check, пометить нестабильные сервисы (сбой, более 3 перезапусков, автоматический перезапуск)
  • --output json, машиночитаемый вывод в формате JSON

JSON-вывод включает полные сведения о сервисе с repository (разрешённое имя) и repository_guid (исходный GUID).

Список репозиториев

Просмотр репозиториев на машине с подробной статистикой:

rdc machine repos --name server-1
СтолбецОписание
NameИмя репозитория
SizeРазмер образа диска
MountСмонтирован или размонтирован
DockerDocker daemon запущен или остановлен
ContainersКоличество контейнеров
Disk UsageФактическое использование диска внутри репозитория
ModifiedВремя последнего изменения

Параметры:

  • --search <text>, фильтрация по имени или пути монтирования
  • --output json, машиночитаемый вывод в формате JSON

JSON-вывод включает name (разрешённое) и guid (исходный GUID), а также содержит для каждого репозитория вложенные массивы containersdomain, autoRoute, repository/repository_guid) и services.

Состояние хранилища

Проверка фрагментации BTRFS и совместного использования reflink во всех репозиториях на машине:

rdc machine query --name server-1 --storage-health
СтолбецОписание
SizeРазмер файла образа LUKS (каким выглядит репозиторий)
UniqueФактические уникальные данные, принадлежащие только этому репозиторию
SharedБлоки данных, повторно используемые между репозиториями через BTRFS reflinks (бесплатные копии)
ExtentsКоличество файловых экстентов (больше = выше фрагментация)
FragУровень фрагментации: низкий, умеренный или высокий

В сводке отображается общая экономия от BTRFS reflinks:

14 repos, 224.3 GB virtual size
Unique data: 323.7 MB | Shared: 224.0 GB | Efficiency: 99.9%
  • Виртуальный размер: сумма размеров образов всех репозиториев. Именно так выглядят репозитории, однако блоки, используемые совместно через reflinks, учитываются дважды.
  • Уникальные данные: фактически потреблённое хранилище данными репозитория, существующими только в одном репозитории. Именно это будет освобождено при удалении репозитория.
  • Общие данные: данные, повторно используемые между репозиториями через BTRFS reflinks. При форке репозитория создаются reflink-копии, которые совместно используют блоки до тех пор, пока одна из сторон не запишет новые данные, после чего блоки расходятся.
  • Эффективность: процент данных, повторно используемых через reflinks. Чем выше, тем лучше. Машина со множеством форков одного родительского репозитория будет показывать эффективность близкую к 100%.

Репозитории с высокой фрагментацией и нулём общих блоков можно безопасно дефрагментировать с помощью btrfs filesystem defragment. Репозитории с общими блоками НЕ следует дефрагментировать, поскольку дефрагментация заменяет общие блоки уникальными копиями, увеличивая использование диска.

Сканирование выполняется параллельно и занимает 5-15 секунд в зависимости от количества и размера репозиториев. Если --storage-health не указан, после вывода запроса появляется однострочная подсказка в качестве напоминания.

Скраб BTRFS

Rediacc автоматически планирует еженедельный скраб BTRFS на каждой машине. Скраб читает каждый блок данных в хранилище, проверяет контрольные суммы и сообщает о любом повреждении. Это позволяет обнаружить скрытое повреждение данных (битрот) до того, как оно распространится на резервные копии и форки.

Скраб выполняется каждое воскресенье в 02:00 местного времени (часовой пояс машины) со случайной задержкой до 1 часа. Он работает с наименьшим приоритетом ввода-вывода (ionice idle, nice 19), поэтому не мешает работающим сервисам. На машинах с SSD ожидайте приблизительно 8 минут на каждые 100 ГБ хранилища.

Таймер скраба устанавливается автоматически при первом запуске демона после обновления renet. Когда политика скраба изменится в будущей версии renet, она обновляется сама при следующем запуске демона без каких-либо действий со стороны пользователя.

Статус скраба

Результат последнего скраба сохраняется за пределами тома BTRFS (в /var/lib/rediacc/scrub-last-result.json), чтобы он оставался доступным для чтения, даже если у тома есть проблемы. Вывод rdc machine query --system включает поле scrub_status:

"scrub_status": {
  "last_run_human": "3 days ago",
  "status": "ok",
  "total_errors": 0,
  "uncorrectable": 0,
  "duration_seconds": 312
}
СтатусЗначение
okПоследний скраб завершён без ошибок
never_runСкраб ещё не выполнялся (таймер только что установлен)
overdueПоследний скраб был более 14 дней назад
errors_foundСкраб обнаружил несоответствия контрольных сумм (проверьте счётчики total_errors и uncorrectable)
failedПроцесс скраба завершился с ненулевым кодом

Если uncorrectable больше нуля, повреждённые блоки нельзя восстановить автоматически (однодисковый BTRFS не имеет избыточной копии). Восстановите затронутый репозиторий из последней резервной копии.

Ручной скраб

Для немедленного запуска скраба (например, после перебоя питания или миграции диска):

rdc term connect -m server-1 -c "sudo renet maintenance scrub --datastore /mnt/rediacc"

Результат сохраняется в тот же JSON-файл и сразу становится видимым при следующем вызове rdc machine query --system.

Статус Vault

Получение полного обзора машины, включая информацию о развёртывании:

rdc machine vault-status --name server-1

Предоставляет:

  • Имя хоста и время работы
  • Использование памяти, диска и хранилища
  • Общее количество репозиториев, количество смонтированных и запущенных Docker
  • Подробную информацию по каждому репозиторию

Используйте --output json для машиночитаемого вывода.

Проверка соединения

Только для облачного адаптера. При использовании локального адаптера используйте rdc term connect -m server-1 -c "hostname" для проверки подключения.

Проверка SSH-подключения к машине:

rdc machine test-connection --ip 203.0.113.50 --user deploy

Отчёт включает:

  • Статус соединения (успешно/неудачно)
  • Используемый метод аутентификации
  • Конфигурацию SSH-ключа
  • Статус развёртывания публичного ключа
  • Запись в Known hosts

Параметры:

  • --port <number>, SSH-порт (по умолчанию: 22)
  • --save -m server-1, сохранить проверенный ключ хоста в конфигурации машины

Диагностика (doctor)

Запуск комплексной диагностической проверки среды Rediacc:

rdc doctor
КатегорияПроверки
ОкружениеВерсия Node.js, версия CLI, режим SEA, установка Go, доступность Docker
RenetРасположение бинарного файла, версия, CRIU, rsync, встроенные ресурсы SEA
КонфигурацияАктивная конфигурация, адаптер, машины, SSH-ключ
ВиртуализацияПроверяет, может ли система запускать локальные виртуальные машины (rdc ops)

Каждая проверка сообщает OK, Предупреждение или Ошибка. Используйте это как первый шаг при устранении любых неполадок.

Коды выхода: 0 = всё пройдено, 1 = предупреждения, 2 = ошибки.