Synology DSM(RedPill)でGrafana監視システムを構築:Docker Compose設定ガイド

Synology DSM(RedPill)でGrafana監視システムを構築:Docker Compose設定ガイド

公開日: 2025年5月3日 | 著者: xAI

⚠️ 注意:ポートとコンテナ名の衝突リスク

このガイドで使用するポート(例:909133409101)やコンテナ名(node-exporternode-exporter-prometheusnode-exporter-grafana)は、既存のサービスと衝突する可能性があります。セットアップ前に、以下のコマンドでポートとコンテナ名を確認してください:

netstat -tuln | grep ':9091\|:3340\|:9101'
docker ps -a --format '{{.Names}}'

衝突する場合は、docker-compose.yml のポート番号やコンテナ名を変更してください。

はじめに:Synology DSMで高性能監視システムを構築

Synology DSM 7.2-72806(RedPill)環境で、GrafanaPrometheusNode Exporter を Docker Compose でセットアップし、サーバーのパフォーマンスを可視化する方法を解説します。このガイドでは、CPU ファン回転数Disk IOpsIRQTCP Stat などのメトリクスを監視し、Grafana の Node Exporter Full ダッシュボード(ID 1860) で美しく表示します。xAI の AI アシスタント Grok 3 が提供する詳細な手順で、初心者から上級者まで簡単に実装可能です。

対象環境:NEC Express5800/T110i-S(Xeon E3-1220v6)、Synology DSM 7.2(RedPill)、Docker Compose。

最終設定:docker-compose.yml

以下の docker-compose.yml は、Grafana、Prometheus、Node Exporter を最適化した最終設定です。ポート衝突やリソース制限(DSM/RedPill のカーネル制約)に対応し、パフォーマンスを最大化しています。

version: "3.8"
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: node-exporter-prometheus
    volumes:
      - /volume1/docker/nodeexporterdashboard/prometheus:/etc/prometheus
      - /volume1/docker/nodeexporterdashboard/prometheus/data:/prometheus
    ports:
      - 9091:9090
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"
      - "--storage.tsdb.path=/prometheus"
      - "--web.enable-lifecycle"
      - "--storage.tsdb.retention.time=7d"
      - "--storage.tsdb.min-block-duration=2h"
    mem_limit: 2g
    cpu_shares: 1024
    security_opt:
      - no-new-privileges:true
    user: "1026:100"
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:9090/-/healthy"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: on-failure:5
    networks:
      - node-exporter-net

  grafana:
    image: grafana/grafana:latest
    container_name: node-exporter-grafana
    volumes:
      - grafana-data:/var/lib/grafana
      - /volume1/docker/nodeexporterdashboard/grafana/provisioning:/etc/grafana/provisioning
    ports:
      - 3340:3000
    environment:
      - TZ=Asia/Bangkok
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin123
      - GF_SERVER_ROOT_URL=http://192.168.1.110:3340
      - GF_INSTALL_PLUGINS=grafana-simple-json-datasource
    mem_limit: 2g
    mem_reservation: 512m
    cpu_shares: 2048
    security_opt:
      - no-new-privileges:true
    user: "1026:100"
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
    depends_on:
      - prometheus
    restart: on-failure:5
    networks:
      - node-exporter-net

  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - --path.procfs=/host/proc
      - --path.sysfs=/host/sys
      - --path.rootfs=/rootfs
      - --collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($|/)"
      - --collector.hwmon
      - --collector.thermal_zone
      - --collector.processes
      - --collector.mdadm
      - --collector.interrupts
      - --collector.netstat
    ports:
      - 9101:9100
    mem_limit: 512m
    mem_reservation: 64m
    cpu_shares: 1024
    security_opt:
      - no-new-privileges:true
    read_only: true
    user: "1026:100"
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:9100/"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: on-failure:5
    privileged: true
    networks:
      - node-exporter-net

volumes:
  prometheus-data:
  grafana-data:

networks:
  node-exporter-net:
    name: node-exporter-net
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.50.0/24

セットアップ手順

以下の手順で、Synology DSM に監視システムをデプロイします。Docker と Docker Compose がインストール済みであることを確認してください。

  1. ディレクトリ作成
    mkdir -p /volume1/docker/nodeexporterdashboard/prometheus
    mkdir -p /volume1/docker/nodeexporterdashboard/grafana/provisioning
    chown 1026:100 /volume1/docker/nodeexporterdashboard -R
  2. Prometheus 設定ファイル作成

    /volume1/docker/nodeexporterdashboard/prometheus/prometheus.yml に以下を保存:

    global:
      scrape_interval: 30s
      evaluation_interval: 30s
      scrape_timeout: 15s
    scrape_configs:
      - job_name: 'node-exporter'
        static_configs:
          - targets: ['node-exporter:9100']
      - job_name: 'prometheus'
        static_configs:
          - targets: ['localhost:9090']
    chown 1026:100 /volume1/docker/nodeexporterdashboard/prometheus/prometheus.yml
  3. docker-compose.yml 保存
    nano /volume1/docker/nodeexporterdashboard/docker-compose.yml

    上記の docker-compose.yml をコピー&ペースト。

  4. コンテナ起動
    cd /volume1/docker/nodeexporterdashboard
    docker-compose up -d
  5. 動作確認

Grafana 利用の注意点

Grafana を Synology DSM(RedPill)で使用する際の重要な注意点を以下にまとめます。

  • ポート衝突:デフォルトポート(909133409101)が他のサービスと競合する可能性。事前に netstat -tuln で確認し、必要に応じてポートを変更。
  • コンテナ名:同一名(例:node-exporter)のコンテナが既に存在する場合、エラー発生。既存のコンテナを docker ps -a で確認し、削除または名前変更。
  • リソース制限:DSM/RedPill のカーネルは cpuscpuset-cpus をサポートしないため、cpu_sharesmem_limit でリソース管理を行う。
  • パフォーマンス:Grafana のダッシュボードが遅延する場合、クエリ間隔を長く(例:30秒)、不要なパネルを非表示、キャッシュを有効化。
  • セキュリティ:デフォルトパスワード(admin/admin123)は必ず変更。外部公開時は Nginx プロキシや HTTPS を検討。

おすすめ:非商用NASプロジェクト「RR」

NAS 自作愛好者やカスタマイズに情熱を燃やす方へ!RR(RedPill Loader) は、非商用で Synology DSM をカスタムハードウェアにインストール可能なプロジェクトです。NEC Express5800/T110i-S のようなサーバー級マシンで、究極の NAS 環境を構築したい方に最適。コミュニティ主導で進化を続ける RR は、自由度が高く、監視システムとの相性も抜群!GitHub で詳細をチェックし、あなたの NAS を次のレベルへ引き上げましょう。

RR を今すぐチェック!

パフォーマンス最適化のポイント

Grafana のグラフ表示を高速化するため、以下の最適化を施しました。

  • リソース割り当て:Grafana に mem_limit: 2gcpu_shares: 2048 を設定し、Prometheus と Node Exporter も適切なリソースを確保。
  • クエリ間隔:Prometheus の scrape_interval を 30秒に設定し、Grafana ダッシュボードの更新を 30秒に。
  • パネル簡素化:Node Exporter Full ダッシュボードで、CPU ファン(node_hwmon_fan_rpm)、Disk IOps(node_disk_reads_completed_total)、IRQ(node_interrupts)、TCP Stat(node_tcp_curr_estab)のみ表示。
  • キャッシュ:Grafana のデータソースでクエリキャッシュを有効化(60秒)。
  • 不要なコレクター無効化:Node Exporter の systemd コレクターをコメントアウト(DSM 非互換)。

メトリクスの表示

Grafana で以下のメトリクスを表示します。Node Exporter Full ダッシュボード(ID 1860)にパネルを追加してください。

  • CPU ファン回転数node_hwmon_fan_rpm{job="node-exporter"}
  • Disk IOpsnode_disk_reads_completed_total{job="node-exporter"}
  • IRQnode_interrupts{job="node-exporter"}
  • TCP Statnode_tcp_curr_estab{job="node-exporter"}

確認コマンド:

curl http://192.168.50.x:9101/metrics | grep -E 'node_hwmon_fan|node_interrupts|node_tcp|node_disk'

トラブルシューティング

以下のエラーと解決策を参考にしてください。

  • ポート衝突netstat -tuln で確認し、docker-compose.yml のポートを変更。
  • コンテナ名エラーdocker ps -a で既存コンテナを削除または名前変更。
  • リソース制限:DSM/RedPill のカーネルが cpuscpuset-cpus をサポートしない。代わりに cpu_shares を使用。
  • メトリクス欠如:ファン回転数が表示されない場合、lm-sensors やカーネルモジュールを確認:
    opkg install lm-sensors
    modprobe nct6775
    cat /sys/class/hwmon/*/fan*_input
xAI Logo

Powered by xAI & Grok 3

このガイドは、xAI の革新的な AI アシスタント Grok 3 によって作成されました。Grok 3 は、複雑な技術課題を解決し、詳細な手順を提供する次世代の AI です。Synology DSM の監視システム構築から宇宙の謎まで、Grok 3 はあなたの信頼できるパートナーです!

今すぐ Grok 3 を試す または xAI の詳細 をチェック!