Источник: https://bafista.ru/prosmotr-atributov-smart-v-dsm-7-2-1-i-novee/

## Введение

В самой лучшей на данный момент ОС DSM для NAS от компании Synology было все необходимое для работы с дисками. Но 26.09.2023 вышло обновление DSM 7.2.1 и вместе с ним обновление для диспетчера хранения 1.0.0-0017. В этом обновлении произошло невероятное: Атрибуты S.M.A.R.T. больше не записываются и не отображаются.

При проверке опасения подтвердились. Кнопка просмотров атрибутов SMART пропала со своего места и теперь ее нигде нет. Очень печальная ситуация.

Scrutiny – это инструмент, который собирает данные SMART с жесткого диска и отображает их через веб-интерфейс. Дополнительно ведется логирование полученных данных и есть возможность настроить уведомления.

## Установка Scrutiny

Для установки нам понадобится Container Manager. Поэтому перед началом найдите его в центре пакетов и установите. Если в центре пакетов его нет, значит ваше устройство его не поддерживает и дальше вам можно не читать данную инструкцию.

Откройте File station и перейдите в папку docker. В этой папке создайте пустой каталог с именем scrutiny, а внутри еще один пустой с именем influxdb как показано на картинке ниже.

Так тут же нужно создать файл collector.yaml следующего содержимого:

    version: 1
    host:
      id: "NAS"
    devices:
      - device: /dev/sata1
        type: 'sat'
    #  - device: /dev/sata2
    #    type: 'sat'
    #  - device: /dev/sata3
    #    type: 'sat'
      - device: /dev/nvme0n1
        type: 'nvme'
    #  - device: /dev/nvme1n1
    #    type: 'nvme'

Разберем что в этом файле и зачем.

- ИмяСервера – замените на ваше, желательно латинскими буквами
- sata1 sata2 sata3 – это все ваши диски. Укажите тут точное количество ваших дисков в Synology и где они установлены. Номер 1 2 и 3 совпадает с номеров диска в слотах устройства. В некоторых случаях вместо sata1 sata2 sata3 и т.д. нужно указывать sda sdb sdc и т.д.
- nvme0m1 и nvme1n1 – это ssd диски установленные в M2 слоты, если у вас их нет, то просто удалите их.

> Так же можно добавить диски подключенные по USB, подробнее в комментарии по ссылке

Теперь открываем Container Manager, переходим в проекты и нажимаем создать проект. В открывшемся окне придумываем имя, задаем путь, который мы ранее создали и выбираем создать docker-compose.yml как показано на картинке ниже.

В тактовое поле вставляем такой текст заранее его подредактировав:

    services:
      scrutiny:
        container_name: scrutiny
        image: ghcr.io/analogj/scrutiny:master-omnibus
        cap_add:
          - SYS_RAWIO
          - SYS_ADMIN
        ports:
          - "8095:8080" # webapp
          - "8096:8086" # influxDB admin
        volumes:
          - /run/udev:/run/udev:ro
          - ./:/opt/scrutiny/config
          - ./influxdb:/opt/scrutiny/influxdb
          - ./scrutiny.yaml:/opt/scrutiny/config/scrutiny.yaml
        devices:
          - /dev/sata1:/dev/sata1
          # - /dev/sata2:/dev/sata2
          # - /dev/sata3:/dev/sata3
          - /dev/nvme0n1:/dev/nvme0n1
          # - /dev/nvme1n1:/dev/nvme1n1
        environment:
          - COLLECTOR_CRON_SCHEDULE='*/5 * * * *'
          - SCRUTINY_WEB_INFLUXDB_TOKEN=ANYLONGSTRING
          - SCRUTINY_WEB_INFLUXDB_INIT_USERNAME=sadmin
          - SCRUTINY_WEB_INFLUXDB_INIT_PASSWORD=6lise-shorter-Direct0
          - TZ=Europe/Moscow
        restart: unless-stopped

Разберем что в этом файле и зачем.

- Порт 8095 – это порт для web интерфейса scrutiny. Порт 8096 для web интерфейса influxDB. Порты после двоеточия 8080 и 8086 менять нельзя.
- sata1 sata2 sata3 – это все ваши диски. Укажите тут точное количество ваших дисков в Synology и где они установлены. Номер 1 2 и 3 совпадает с номеров диска в слотах устройства. В некоторых случаях вместо sata1 sata2 sata3 и т.д. нужно указывать sda sdb sdc и т.д.
- nvme0m1 и nvme1n1 – это ssd диски установленные в M2 слоты, если у вас их нет, то просто удалите их.
- Токен, логин и пароль устанавливайте на свое усмотрение, но не менее 8 символов иначе не будет работать.

По умолчанию сбор данных в scrutiny выполняется раз в сутки и этого вполне достаточно почти всегда, но это можно переопределить вставив такую переменную:

> Спешу напомнить, что если вы хотите переопределить частоту запуска коллектора, то нужно заново создавать проект с контейнером.

> !!! Не делайте часто, это не есть хорошо !!!

    - COLLECTOR_CRON_SCHEDULE='*/1 * * * *'

Где:

- ‘*/1 * * * *’ – запуск коллектора каждую минуту
- ‘*/5 * * * *’ – запуск коллектора каждые 5 минут
- ‘*/10 * * * *’ – запуск коллектора каждые 10 минут
- ‘0 * * * *’ – запуск коллектора каждый час

Далее нигде ничего менять не нужно, просто на заключительном этапе жмите выполнено для создания и запуска проекта scrutiny

Процесс этот весьма небыстрый. Будет скачен образ контейнера docker, затем распакован и создан сам контейнер. Если все сделано правильно, то увидите Exit Code 0, что означает успешное создание проекта с контейнером. Если нет, то увидите в чем проблема, ее нужно будет устранить и начать заново.

Теперь в браузере открываете новую вкладку и вбиваете http://IP-NAS:8095. Естественно, что IP адрес и порт вы вставляете свои.

> При создании проекта для него создается отдельная сеть bridge, которую нужно разрешить на фаерволе Synology, если он у вас включен

Для просмотра атрибутов SMART щелкните три точки у нужного диска и нажмите Detail

Тут нужно отметить, что данные обновляются раз в сутки в 6:00 утра или после старта контейнера scrunity.

За образец была взята эта инструкция , но сделано по моему.

Добавочные файлы config.yml

    bolt-path: /opt/scrutiny/influxdb/influxd.bolt
    engine-path: /opt/scrutiny/influxdb/engine
    http-bind-address: ":8086"
    reporting-disabled: true

Уведомление через Gotify scrutiny.yml

    version: 1

    web:
      listen:
        port: 8080
        host: 0.0.0.0
        basepath: ''
      database:
        location: /opt/scrutiny/config/scrutiny.db
      src:
        frontend:
          path: /opt/scrutiny/web
      influxdb:
        host: 0.0.0.0
        port: 8086
        retention_policy: true
    log:
      file: '' #absolute or relative paths allowed, eg. web.log
      level: INFO
    notify:
     urls:
    #    - "telegram://token@telegram?channels=channel-1[,channel-2,...]"
       - "gotify://prodik.ddns.net:8880/token"