Перейти к содержанию

Synology DSM

NAS Synology через веб-API DSM: тома, пулы хранения, состояние дисков, температура, задачи Hyper Backup, задачи Active Backup for Business, а также Synology Drive и Photos. Первая причина следить за NAS — его диски: диск, который нагревается или у которого ухудшается состояние SMART, предупреждает об отказе задолго до того, как упадёт том.

За чем он следит

Все метрики имеют префикс dumbmonit_synology_.

Семейство Метрики Метки
Система system_info (модель, версия DSM, прошивка…), uptime_seconds, temperature_celsius, temperature_warning, system_crashed, system_need_repair, storage_health model, dsm_version, firmware
CPU и память cpu_usage_percent, cpu_user/system/other_percent, cpu_cores, memory_total/used/available/installed_bytes, memory_usage_percent, swap_usage_percent
Сеть network_rx_bytes_per_second, network_tx_bytes_per_second interface
Тома volume_status, volume_total/used/available_bytes, volume_used_percent, volume_used_warning_percent, volume_used_critical_percent volume, fs_type, raid_type
Пулы хранения и SSD-кэши pool_status, pool_failed_disks, pool_total/used_bytes и те же четыре с префиксом ssd_cache_ pool или ssd_cache, name, raid_type
Диски disk_status, disk_smart_status, disk_temperature_celsius, disk_size_bytes, disk_bad_sector_exceeded, disk_life_below_threshold, disk_remaining_life_percent (только SSD: ресурс, который, по словам накопителя, у него остался), disk_unc_count (счётчик нечитаемых секторов DSM, тот, который он сверяет со своим порогом плохих секторов), disk_info disk, name; у disk_info: model, serial, vendor, firmware, type, ssd
Hyper Backup backup_tasks, backup_running, backup_last_result, backup_last_run_age_seconds, backup_last_success_age_seconds, backup_next_run_in_seconds по задаче
Synology Drive drive_up, drive_team_folders, drive_team_folder_info, drive_connections (см. ниже) drive_team_folder_info: name
Synology Photos photos_installed (см. ниже)
Настройки безопасности update_available, admin_account_enabled, autoblock_enabled, firewall_enabled (0/1; читаются раз в час, только с учётной записью администратора, необязательны: отсутствуют, если DSM отказывает)
Сбор up, scrape_errors, scrape_duration_seconds

Метрики Active Backup for Business — исключение: они имеют префикс dumbmonit_abb_ (см. ниже).

volume_status, disk_status и disk_smart_status несут собственное слово DSM в метке (status, smart_status) и значение по одной шкале: 0 норма, 1 внимание (временное состояние вроде repairing или checking либо слово, которое DSM ввёл, а DumbMonit пока не знает), 2 критично (degrade, crashed, failed…). Неизвестное намеренно считается 1, никогда не 0.

Частичный сбой остаётся успешным опросом: если не удалась инвентаризация хранилища, состояние системы и загрузка всё равно публикуются, а сбой учитывается в scrape_errors. Весь опрос обрекает только сбой вызова обнаружения API или соединения.

Чего не могут показать строки дисков

Счётчики переназначенных секторов находятся в таблице атрибутов SMART каждого диска, которую DSM отдаёт только через недокументированный вызов, форму которого DumbMonit не смог подтвердить. Поэтому строки показывают то, что даёт load_info: вердикт DSM о плохих секторах, его счётчик нечитаемых секторов (и его рост) и оставшийся ресурс SSD.

Что меняется между версиями DSM

Один и тот же вызов отвечает не одними и теми же полями на каждой DSM, и DumbMonit читает обе формы, а не предполагает одну:

  • disk_bad_sector_exceeded берётся из exceed_bad_sector_thr до DSM 7.1 и из sb_days_left_critical — оценки DSM числа дней, оставшихся до достижения накопителем порога плохих секторов, — в DSM 7.2 и новее, где первое поле исчезло. То же для disk_life_below_threshold и remain_life_danger;
  • disk_remaining_life_percent — простое число в старых DSM и объект, содержащий значение и признак доверия DSM к нему, в DSM 7.2 и новее. Значение, которое DSM помечает как недостоверное, не публикуется;
  • volume_used_warning_percent и volume_used_critical_percent повторяют пороги, заданные в DSM. DSM 7.4 их больше не возвращает, поэтому на свежем NAS этих двух серий просто нет — вместо них ничего не выдумывается.

Страница монитора

Монитор Synology: обзор, тома, диски и Active Backup

Монитор Synology получает собственную панель над графиками:

  • Обзор — CPU, память (занято из общего), температура и время работы, с собственным вердиктом DSM о хранилище в виде плашки (исправно, внимание, сбой, нужен ремонт);
  • Тома — одна строка на том: полоса использования, занято из общего, тип RAID и файловая система, состояние тома словом DSM (normal, degraded, crashed, repairing…);
  • Пулы хранения — одна строка на пул: тип RAID, состояние пула словом DSM, сколько его дисков DSM считает отказавшими и какая часть его уже отдана томам. Здесь живёт избыточность: RAID 5, потерявший диск, оставляет том над ним в состоянии normal, пока идёт перестроение, так что строка тома ничего не говорит, а эта говорит всё. Пул, полностью распределённый между томами, — нормальное конечное состояние, а не предупреждение, поэтому эта цифра — предложение, а не цветной индикатор;
  • SSD-кэш — одна строка на кэш: его тип RAID, состояние и размер. Раздел отсутствует на NAS без кэша. load_info DSM не содержит режима кэша или доли попаданий, поэтому ни то, ни другое не показывается;
  • Диски — одна строка на отсек: модель, размер, температура, вердикт SMART, вердикт DSM о плохих секторах, счётчик нечитаемых секторов и, для SSD, оставшийся ресурс в виде небольшой полосы;
  • Active Backup for Business — задачи, затем каждое устройство с копиями с его ритмом и тридцатидневной лентой (см. ниже).

Всё берётся из того, что сохранил опрос: открытие страницы никогда не обращается к NAS.

Встроенные правила для NAS

Правило Серьёзность Срабатывает, когда
Synology disk SMART warning advisory DSM больше не сообщает состояние SMART диска как normal в течение 15 минут.
Synology disk failed warning DSM сообщает, что диск отказал или вышел из строя, в течение 5 минут.
Synology disk bad sectors warning Число плохих секторов превышает порог, заданный в DSM, в течение 15 минут.
Synology disk bad sectors growing advisory За последние 24 часа появились новые нечитаемые секторы (delta(…disk_unc_count[24h]) > 0).
Synology SSD wearing out advisory У SSD осталось менее 10 % номинального ресурса в течение часа.
Synology volume degraded warning Том деградировал или отказал, в течение 5 минут.
Synology storage pool degraded warning Пул хранения или SSD-кэш деградировал или отказал, в течение 5 минут. RAID 5, потерявший диск, проявляется здесь первым: DSM оставляет том над ним в состоянии normal, пока идёт перестроение.
Synology volume almost full advisory Том заполнен на 90 % или более в течение 15 минут.
Synology temperature high advisory Диск выше 55 °C или DSM поднял предупреждение о температуре, в течение 15 минут.
Synology memory high advisory Использование памяти выше 95 % в течение 15 минут.

Active Backup for Business

Active Backup for Business (ABB) копирует на NAS ПК, физические серверы, виртуальные машины и файловые серверы. Если пакет установлен и запущен, DumbMonit читает его задачи при каждом опросе; если нет, NAS просто не объявляет этот API, и ничего не запрашивается. Параметр abb отключает всё семейство.

То же относится к Hyper Backup: DSM перечисляет API пакета, только пока пакет работает, поэтому NAS, у которого Hyper Backup остановлен — или который лишь принимает копии через Hyper Backup Vault — не публикует метрик backup_* и не сообщает об ошибке. DumbMonit спрашивает у NAS, какие API у него есть, прежде чем вызывать любой из них, поэтому отсутствующий пакет — это тишина, а не неудавшийся опрос.

Метрика Значение Метки
dumbmonit_abb_tasks Число задач.
dumbmonit_abb_task_last_status Последний запуск: 1 успех, 0 сбой, 2 выполняется, -1 неизвестно (не запускалась, отменена, нет копии). Частичный успех считается сбоем: хотя бы одно устройство не было скопировано. task, task_id, source_type, result
dumbmonit_abb_task_last_success_seconds Возраст последнего успешного запуска копирования, в секундах. Отсутствует для задачи, которая ни разу не завершилась успешно. task, task_id, source_type
dumbmonit_abb_task_enabled 1, если у задачи есть расписание и она не приостановлена, 0, если она запускается только вручную. task, task_id, source_type
dumbmonit_abb_task_device_count Устройства, привязанные к задаче. task, task_id, source_type

task — имя задачи, как оно показано в ABB; source_type — pc, vm, physical_server, file_server или nas; result — необработанный результат последнего запуска (success, partial_success, fail, cancel, no_backup, running, none).

Возраст берётся из истории задачи, отфильтрованной по успешным запускам копирования, а не из «последнего результата» задачи: после ночной очистки версий последний результат — это очистка, а не копирование. Это стоит одного запроса на задачу, с ограничением в двадцать задач.

Встроенные правила для задач:

Правило Серьёзность Срабатывает, когда
Active Backup task failed warning Последний запуск завершился сбоем или частичным успехом в течение 10 минут. Уведомление называет задачу.
Active Backup too old advisory Нет успешного запуска более двух дней.
Active Backup task disabled info У задачи нет расписания или её непрерывное копирование приостановлено, в течение часа.

Устройства и их ритм

Правило на уровне задачи верно для сервера и неверно для ноутбука: люди не оставляют ноутбуки включёнными, а «нет копии 24 часа» — это утро понедельника для каждого офисного ПК. Поэтому DumbMonit следит за ABB ещё и по каждому устройству, сообразуясь с собственными привычками устройства.

При каждом опросе сборщик читает запуски по устройствам, которые хранит ABB (SYNO.ActiveBackup.Overview list_device_transfer_size, один вызов для всех устройств, только то, что изменилось с предыдущего опроса), и копирует их в собственную базу данных — не более девяноста дней на NAS, — чтобы модель переживала перезапуск без повторного чтения месяца истории. Затем для каждого устройства он смотрит на последние тридцать дней.

Метрика Значение Метки
dumbmonit_abb_device_state 0 ok, 1 idle, 2 learning, 3 running, 4 overdue, 5 failing, 6 never. device, device_id, task, task_id, state
dumbmonit_abb_device_overdue 1, пока устройство просрочено, иначе 0. device, device_id, task, task_id
dumbmonit_abb_device_consecutive_failures Неудачные попытки подряд после последнего успеха (отменённый запуск не считается ни тем, ни другим). те же
dumbmonit_abb_device_last_success_seconds Возраст последнего успешного запуска этого устройства. Отсутствует, если успеха не было. те же
dumbmonit_abb_device_typical_interval_seconds Медианный промежуток между двумя успехами, без выходных дней. Отсутствует, пока идёт обучение. те же

Как судят о «просрочке»

Простыми словами, для каждого устройства:

  1. В какие дни оно включено? Будний день, в который устройство предприняло хотя бы одну попытку копирования за последние тридцать дней — успешную или нет; сбой доказывает, что машина была включена так же, как и успех, — это активный день. Когда накоплено как минимум две недели истории, день недели вообще без попыток — это выходной день. Ноутбук, используемый с понедельника по пятницу, получает субботу и воскресенье как выходные; у сервера их нет.
  2. Как часто оно копируется? Промежутки между последовательными успехами собираются в активном времени: полные выходные дни внутри промежутка не учитываются (с вечера пятницы до вечера понедельника — это один день активного времени, а не три). Их медиана — типичный интервал устройства; их 90-й процентиль показывает, как выглядит «медленная неделя».
  3. Сколько ему позволено? Допуск равен max(1.5 × p90 gap, 2 × typical interval, 36 h). Настольный ПК с ночным копированием получает 48 ч; машина, копируемая раз в три дня, — около шести; меньше полутора суток не получает никто. Пока существует менее двух пригодных промежутков (устройство добавлено на этой неделе), допуск составляет 72 ч — достаточно, чтобы пережить выходные без ложной тревоги.
  4. Сколько активного времени прошло? Время с последнего успеха за вычетом полных выходных дней внутри него. Ноутбук, скопированный в последний раз в пятницу в 20:00, имеет в понедельник в 08:00 за плечами двенадцать часов активного времени, а не шестьдесят.
  5. Вердикт, в таком порядке: running (копирование выполняется); failing (последние две или больше попыток завершились сбоем — частичный успех — это сбой, отменённый запуск — ни то, ни другое); never (успехов в записях нет); overdue (активное время превышает допуск); idle (сегодня один из его выходных дней: выключено, как обычно); learning (ритм пока неизвестен); ok.

dumbmonit_abb_device_overdue поднимает только overdue, и только failing питает правило сбоев. Простаивающий ноутбук в воскресенье ничего не поднимает; тот же ноутбук, всё ещё молчащий во вторник вечером, поднимает.

Дни и часы выражаются в местном времени сервера (TZ контейнера), в котором живёт человек, читающий страницу. Страница монитора показывает для каждого устройства: состояние словом, последний успех и последний результат, ритм словами («weekdays, around 20:00», «every ~3 days, on Mon, Wed, Fri, around 03:00», «still learning (2 runs in 30 days)») и тридцатидневную ленту — бирюзовая для дня с успехом, красная для сбоя, янтарная для отменённого запуска, серая, если запусков не было.

Встроенные правила для устройств:

Правило Серьёзность Срабатывает, когда
Active Backup device overdue advisory dumbmonit_abb_device_overdue > 0 в течение 30 минут.
Active Backup device failing warning Две или больше неудачных попыток подряд, в течение 10 минут.

Права доступа

ABB отвечает только учётной записи из группы administrators, которой разрешён пакет в правах приложений, либо учётной записи, которой пакет делегирован (DSM 7: Active Backup for Business → Settings → Privileges). Учётная запись, которой приложение запрещено, не может читать задачи ABB: вызов отклоняется (код 105) и учитывается в scrape_errors. Либо разрешите или делегируйте пакет учётной записи мониторинга, либо снимите отметку «Следить за Active Backup for Business» (abb = false), чтобы перестать запрашивать.

Недокументированный API

Synology не документирует веб-API ABB. DumbMonit следует форме, записанной проектами сообщества (SYNO.ActiveBackup.Task list, SYNO.ActiveBackup.Log list_result и SYNO.ActiveBackup.Overview list_device_transfer_size, все версии 1), и находит их путь через SYNO.API.Info. DSM с иными ответами приводит к отсутствию метрик, но не к неудавшемуся опросу; ABB, слишком старый для обзора по устройствам, сохраняет метрики задач и просто не имеет ритма устройств.

Версия 1 выбрана намеренно. DSM 7.4 объявляет эти API как версии с 1 по 2, но методы чтения есть только в версии 1: при запросе версии 2 все они отвечают «the requested method does not exist», что похоже на различие прошивок, но им не является. Тот же ответ приходит и при отсутствии токена CSRF, поэтому DumbMonit запрашивает его у DSM при входе и отправляет с каждым вызовом.

Synology Drive

DSM не документирует веб-API Synology Drive. DumbMonit читает три вызова, имя и форма которых взяты из библиотеки сообщества N4S4/synology-api, вызывающей их с тех же экранов, что и консоль администратора Synology Drive, и следует тому же правилу, что и для Active Backup for Business: API, который NAS не объявляет, — это не установленный пакет, а не сбой.

Метрика Значение Метки
dumbmonit_synology_drive_up 1, пока служба отвечает на get_status. Отсутствует, если пакет не установлен.
dumbmonit_synology_drive_team_folders Число командных папок.
dumbmonit_synology_drive_team_folder_info Значение 1 на командную папку (не более 32). name
dumbmonit_synology_drive_connections Число активных подключений (настольные и мобильные клиенты, синхронизирующиеся в данный момент).

Почему подключения — это только число

Страница «Client list» консоли администратора показывает для каждого подключения имя устройства, пользователя, тип приложения, состояние в сети, IP-адрес и местоположение, но это описание страницы, а не полей JSON API: ни Synology, ни какой-либо проект сообщества не документируют, как именно SYNO.SynologyDrive.Connection называет свои поля. Вместо того чтобы угадывать имя устройства или дату последней синхронизации по неподтверждённому ключу, DumbMonit публикует только число подключений. Отдельные устройства будут встроены в ту же таблицу client devices, которую используют Immich, Proxmox Backup Server и Veeam, как только эта форма будет подтверждена по ответу реального NAS.

Параметр drive (включён по умолчанию) отключает всё семейство.

Synology Photos

Synology Photos поставляется с хорошо документированным API просмотра, но ни Synology, ни библиотеки сообщества не предоставляют общий для администратора список мобильных устройств резервного копирования или их последней копии — мобильное приложение показывает собственное состояние копирования локально, и ничто не централизует его на стороне NAS через API. Поэтому DumbMonit лишь сообщает, что пакет установлен: dumbmonit_synology_photos_installed (значение 1), считываемое из каталога API без каких-либо дополнительных запросов к NAS — того же каталога, на который SYNO.API.Info уже отвечает для каждого другого пакета. Параметр photos (включён по умолчанию) отключает его.

Что подготовить на NAS

Приведённые ниже шаги совпадают с теми, что показывает примечание рядом с формой. Принцип: учётная запись, выделенная для мониторинга, лишённая всего, что не нужно API DSM, — никогда не та, под которой вы входите.

  1. В DSM откройте Control Panel → User & Group → User и нажмите Create. Назовите учётную запись так и задайте ей длинный пароль, нигде больше не используемый.

    dumbmonit
    
  2. Join groups: отметьте administrators. DSM отвечает на вызовы хранилища, томов и SMART дисков только этой группе; без неё NAS выглядит живым, но ничего не говорит о своих дисках. Следующие два шага забирают обратно всё остальное.

  3. Assign shared folder permissions: No access для каждой общей папки. Assign application permissions: запретить всё, кроме DSM, плюс Active Backup for Business, если вы хотите читать его задачи. Страницы квот и ограничения скорости пропустите.
  4. Двухэтапная проверка должна оставаться выключенной для этой учётной записи: ни один автоматический монитор не может ввести одноразовый код. Если Control Panel → Security → Account требует её, ограничьте правило группами, в которых этот пользователь не состоит, или сделайте для него исключение.
  5. Пакеты резервного копирования читаются, только пока они установлены и запущены: DSM вообще не объявляет API остановленного пакета, поэтому задачи Hyper Backup тогда затихают, а не завершаются сбоем, а у NAS, который лишь принимает копии (Hyper Backup Vault), нет собственных задач для показа. Active Backup for Business к тому же отвечает только учётной записи, которой разрешено им пользоваться (Active Backup for Business → Settings → Privileges); иначе снимите отметку с параметра DumbMonit «Следить за Active Backup for Business», чтобы перестать запрашивать.
  6. В DumbMonit введите адрес NAS (HTTPS, порт 5001 по умолчанию), затем имя пользователя и пароль этой учётной записи.

Warning

Группа administrators требуется API хранилища DSM, а не DumbMonit. Поэтому эта учётная запись не получает ни общих папок, ни приложений, а её пароль нигде больше не используется: она может читать NAS, но не трогать ваши файлы.

Какие права дают какие метрики

API DSM не требует одних и тех же прав для каждого вызова. Состояние системы (модель, версия, температура, время работы) отвечает любой учётной записи. CPU, память, тома и, прежде всего, состояние SMART дисков требуют группу administrators. В DSM 7 делегирования «System monitoring» (Control Panel → User & Group → Delegation) достаточно для данных о загрузке, но не для инвентаризации хранилища. Поэтому учётная запись без особых прав даёт NAS, который «жив», но ничего не сообщает о своих дисках.

Документация производителя: Create a user in DSM.

Учётные данные

Учётные данные Поля
Учётная запись DSM User name: созданная выше учётная запись. Password: её пароль. Двухэтапная проверка должна быть выключена для этой учётной записи: ни один автоматический монитор не может ввести одноразовый код.

Адрес: 192.168.1.30, nas.lan или nas.lan:5001. Без порта используется 5001 по HTTPS и 5000 по HTTP.

Параметры

Ключ Название По умолчанию Справка
scheme Протокол https HTTPS подходит для NAS «из коробки». HTTP — только если DSM слушает лишь открытым текстом. Варианты: https, http.
port Порт DSM (пусто) Используется, если адрес не содержит порта. Пусто: 5001 по HTTPS, 5000 по HTTP.
insecure_tls Принимать непроверяемый сертификат false NAS по умолчанию поставляется с самоподписанным сертификатом: включите это, если соединение отклоняется по этой причине.
request_timeout_seconds Тайм-аут на запрос (секунды) 15 Время, отводимое на каждый вызов API, от 1 до 120. Инвентаризация хранилища может разбудить спящие диски.
abb Следить за Active Backup for Business true Читает задачи Active Backup for Business. Нужен установленный пакет и учётная запись, которой разрешено им пользоваться; NAS без пакета просто пропускается.
drive Следить за Synology Drive true Читает, отвечает ли служба Synology Drive, её командные папки и число активных подключений. NAS без пакета просто пропускается.
photos Следить за Synology Photos true Показывает, установлен ли пакет Synology Photos, без дополнительных запросов к NAS. Synology не предоставляет список мобильных устройств резервного копирования ни через какой API.

Частые ошибки

Симптом Вероятная причина
Ошибка аутентификации Неверный пароль или для этой учётной записи требуется двухэтапная проверка. DSM отвечает HTTP 200 даже при сбое; значение имеет код ошибки в теле JSON, и DumbMonit его читает.
Ошибка сертификата Самоподписанный сертификат: включите insecure_tls. Это ошибка конфигурации, а не «недоступно»: NAS, который отвечает, не показывается как выключенный.
Нет метрик дисков или томов Учётная запись не входит в группу administrators (см. примечание выше).
Нет метрик dumbmonit_abb_*, scrape_errors равен 1 Учётная запись не может использовать Active Backup for Business: делегируйте ей пакет или отключите параметр abb. Если пакет не установлен, нет ни ошибки, ни метрик.
Метрики задач есть, а строк устройств на странице нет NAS не объявляет SYNO.ActiveBackup.Overview (старый ABB) либо монитор опрашивается через агент-ретранслятор, который хранит историю в памяти на своей стороне: метрики есть, календаря нет.
Ноутбук показывается как «Overdue» на следующий день после добавления Менее трёх успехов: модель ещё обучается и допускает 72 часа между копиями; она устанавливается, когда известны привычки за две недели.
Диски раскручиваются при каждом опросе Инвентаризация хранилища будит спящие диски. Увеличьте интервал проверки.