Scrutiny 導入ガイド:初心者でもわかるHDD/SSD監視ツールの設定手順 | Synology DSM & Docker

🧭 Scrutiny 導入ガイド:初心者でもわかるHDD/SSD監視ツールの設定手順

対象:Synology DSM 環境 | Docker版(master-omnibus) | 監視対象:HDD/SSD(例:/dev/sda/dev/sdb

🔰 Scrutinyとは?初心者向け解説

Scrutiny(スクルーティニー)は、ハードディスクやSSDの「健康状態」をチェックするためのオープンソースツールです。S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)情報を収集し、Webブラウザ上で直感的なグラフ形式で表示するため、専門知識がなくてもディスクの状態を簡単に把握できます。

Scrutinyで確認できる主な情報には、以下のものがあります:

  • ディスクの通電時間:稼働開始からの累計時間
  • 温度履歴:現在の温度と過去の変動
  • エラーや警告の履歴:異常の兆候を早期に発見し、データ損失のリスクを軽減

本ガイドでは、データベース(InfluxDB)が同梱されたmaster-omnibus版を使用します。これにより、別途データベースを構築する手間がなく、初心者でも手軽に導入を開始できます。

上級者向けポイント:master-omnibusは単一のDockerイメージで完結するため、外部データベースは不要です。S.M.A.R.T.データの収集はcronベースで、デフォルトでは毎日23時に実行されます。

Scrutinyダッシュボードのスクリーンショット1 - ディスク健康状態の概要 Scrutinyダッシュボードのスクリーンショット2 - ディスク詳細情報

🤔 Synology DSM環境でのScrutiny導入

Synology NASは「DSM」という独自のOSで動作しますが、その基盤はLinuxです。DSMにDockerパッケージをインストールすることで、Scrutinyを簡単にコンテナとして稼働させることができます。ただし、Synology特有のディレクトリ構造(例:/volume1/docker)に合わせて設定を調整する必要があります。

🛠 導入に必要なもの

ScrutinyをDockerで動かすには、以下の3つの要素を準備します:

  1. 保存フォルダの準備:Scrutinyの設定ファイルや収集データを保存するためのディレクトリを作成します(推奨パス:/volume1/docker/scrutiny)。
  2. 監視対象ディスクの特定:監視したいHDD/SSDのLinuxデバイス名(例:/dev/sda)を調べます。
  3. docker-compose.ymlファイルの作成:Scrutinyコンテナの起動設定を記述した「設計図」を作成します。

📁 ステップ① 保存フォルダの作成

Scrutinyの設定ファイルやInfluxDBのデータが永続的に保存されるフォルダを作成します。Synology NASでは、Docker関連のデータは/volume1/docker配下に配置するのが一般的です。

mkdir -p /volume1/docker/scrutiny/influxdb

このコマンドを実行すると、以下のディレクトリが作成されます:

  • /volume1/docker/scrutiny/:Scrutinyの全体設定ファイル用
  • /volume1/docker/scrutiny/influxdb/:S.M.A.R.T.情報などの時系列データ用

初心者向けヒント:コマンドの -p オプションは、指定したパスの親ディレクトリが存在しない場合でも自動的に作成してくれます。エラーを防ぐために必ず使用しましょう。

🔍 ステップ② 監視したいディスクの特定

Scrutinyに監視させるHDD/SSDを指定するには、Linuxにおける「デバイス名」(例:/dev/sda)を正確に把握する必要があります。以下のコマンドを使用して確認できます。

方法A:lsblk コマンドでデバイス情報を確認

lsblk -o NAME,MODEL,SIZE,TYPE,MOUNTPOINT

出力例:

NAME        MODEL           SIZE TYPE MOUNTPOINT
sda         TOSHIBA HDWD130 4T   disk
sdb         WDC WD40EZRX    4T   disk

上記の例では、監視対象となるディスクは /dev/sda/dev/sdb であることがわかります。

方法B:smartctl コマンドでS.M.A.R.T.対応ディスクをスキャン

smartctl --scan

出力例:

/dev/sda -d sat # ATA device
/dev/sdb -d sat # ATA device

注意点:NVMe SSDの場合、デバイス名は /dev/nvme0n1 のようになることがあります。

上級者向けポイント:SATA接続のディスクは sat、NVMe接続のディスクは nvme としてcollector.yamlに指定します。ホストOSとコンテナ内でデバイス名が一致していることを確認してください。

📝 ステップ③ collector.yaml ファイルの作成

Scrutinyにどのディスクを監視させるかを設定するためのファイルです。以下の例は、2台のSATAディスク(/dev/sda/dev/sdb)を監視する場合の設定です。

cat <<EOF > /volume1/docker/scrutiny/collector.yaml
version: 1
host:
  id: ""

devices:
  - device: /dev/sda
    type: 'sat'
  - device: /dev/sdb
    type: 'sat'
EOF

設定のポイント

  • type: 'sat':SATA接続のHDD/SSDに適用します。
  • type: 'nvme':NVMe接続のSSDの場合に指定します。
  • 監視するディスクを追加したい場合は、devicesセクションに同様の形式で項目を追記してください。

⚙️ ステップ④ docker-compose.yml ファイルの作成

Scrutinyコンテナの起動設定を定義する「設計図」ファイルです。以下は基本的な構成例です。

cat <<EOF > /volume1/docker/scrutiny/docker-compose.yml
version: '3.8'

services:
  scrutiny:
    container_name: scrutiny
    image: ghcr.io/analogj/scrutiny:master-omnibus
    cap_add:
      - SYS_RAWIO
      - SYS_ADMIN
    ports:
      - 6090:8080/tcp
      - 8086:8086/tcp
    volumes:
      - /run/udev:/run/udev:ro
      - /volume1/docker/scrutiny:/opt/scrutiny/config
      - /volume1/docker/scrutiny/influxdb:/opt/scrutiny/influxdb
    devices:
      - /dev/sda:/dev/sda
      - /dev/sdb:/dev/sdb
    environment:
      - COLLECTOR_CRON_SCHEDULE=0 23 * * *
      - TZ=Asia/Bangkok
    security_opt:
      - no-new-privileges:true
    restart: unless-stopped
EOF

設定のポイント

  • /run/udev:/run/udev:ro:ディスク情報を読み取り専用で取得するために必要です。
  • TZ=Asia/Bangkok:タイムゾーン設定です。お住まいの地域に合わせて変更してください(例:日本にお住まいならAsia/Tokyo)。
  • devicescollector.yamlで指定した監視対象ディスクと同じものを全て記述します。
  • COLLECTOR_CRON_SCHEDULE:データの収集タイミングをcron形式で指定します。デフォルトは毎日23時です。

初心者向けヒント:タイムゾーンの設定を忘れると、Scrutinyのグラフに表示される時間がずれてしまうことがあるので注意しましょう!

🚀 ステップ⑤ Scrutinyの起動

以下のコマンドを実行して、Scrutinyコンテナをバックグラウンドで起動します。

cd /volume1/docker/scrutiny
docker-compose up -d

🌐 ステップ⑥ 動作確認

Webブラウザを開き、以下のURLにアクセスしてください:

http://[NASのIPアドレス]:6090

Scrutinyのダッシュボードが表示され、監視対象のディスク温度やS.M.A.R.T.情報が確認できれば導入は成功です!

ログの確認方法(トラブルシューティング時):

docker logs scrutiny

上級者向けポイント:InfluxDBの管理画面は通常 http://[NASのIP]:8086 でアクセス可能ですが、master-omnibus版ではScrutinyのUIから全ての情報にアクセスできるため、直接InfluxDBを操作する必要はほとんどありません。

❓ よくある質問と設定のポイント

なぜ /run/udev:/run/udev:ro をマウントするの?

Linuxの「udev」は、ディスクなどのデバイス情報を管理するシステムです。Scrutinyがディスクを正しく認識し、S.M.A.R.T.情報を読み取るために、この/run/udevディレクトリを読み取り専用(ro)でコンテナにマウントする必要があります。これにより、Scrutinyはデバイス情報を参照するだけで、実際のデバイスには影響を与えません。

なぜ TZ=Asia/Bangkok を指定するの?

Scrutinyは収集したS.M.A.R.T.データにタイムスタンプを付与します。タイムゾーンを指定しない場合、サーバーのデフォルトタイムゾーンが使用され、Web UIのグラフ表示などで時間がずれて表示されることがあります。正確な時刻でデータを記録・表示するためにも、お住まいの地域に合わせたタイムゾーン(例:日本ならAsia/Tokyo)を指定することが重要です。

⚠️ よくあるトラブルと解決策

症状 原因 解決策
Webインターフェースが起動しない 必要なフォルダが存在しない mkdir -p /volume1/docker/scrutiny/influxdb を実行し、フォルダが正しく作成されているか確認してください。
ディスクデータが表示されない collector.yamlまたはdocker-compose.ymlのデバイス指定ミス ステップ②で確認したディスク名(例:/dev/sda)がcollector.yamldocker-compose.ymlの両方で正しく指定されているか、スペルミスがないか再確認してください。lsblksmartctl --scanコマンドを再度実行して確認するのも有効です。
温度履歴やグラフの時間が1日ずれる タイムゾーン(TZ)が未設定、または誤っている docker-compose.ymlenvironmentセクションにTZ=Asia/Tokyoなど、お住まいの地域に合わせたタイムゾーンを正しく設定してください。変更後はコンテナの再起動が必要です(docker-compose down && docker-compose up -d)。
InfluxDBの認証画面が表示される master-omnibus版では認証は不要 master-omnibus版はInfluxDBの認証が不要な設定で動作します。この表示は正常であり、ログインせずにScrutinyのUIが使えるはずです。

🎯 まとめ

Scrutinyは、初心者の方でも簡単にHDDやSSDの健康状態を監視できる、非常に便利なツールです。Synology DSMやDockerが利用可能なLinux環境であれば、本ガイドの手順に従うことでスムーズに導入できます。一度設定してしまえば、Scrutinyは自動的に毎日ディスクの健康状態をチェックしてくれる「ストレージの健康診断パートナー」として機能します。

ご自身のNAS環境に合わせて、ディスク名やタイムゾーンを適切に調整し、大切なストレージの安心を手に入れましょう!