Мониторинг
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 | Смонтирован или размонтирован |
| Docker | Docker daemon запущен или остановлен |
| Containers | Количество контейнеров |
| Disk Usage | Фактическое использование диска внутри репозитория |
| Modified | Время последнего изменения |
Параметры:
--search <text>, фильтрация по имени или пути монтирования--output json, машиночитаемый вывод в формате JSON
JSON-вывод включает name (разрешённое) и guid (исходный GUID), а также содержит для каждого репозитория вложенные массивы containers (с domain, 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 = ошибки.