Synology DSM(RedPill)でGrafana監視システムを構築:Docker Compose設定ガイド
公開日: 2025年5月3日 | 著者: xAI
⚠️ 注意:ポートとコンテナ名の衝突リスク
このガイドで使用するポート(例:9091、3340、9101)やコンテナ名(node-exporter、node-exporter-prometheus、node-exporter-grafana)は、既存のサービスと衝突する可能性があります。セットアップ前に、以下のコマンドでポートとコンテナ名を確認してください:
netstat -tuln | grep ':9091\|:3340\|:9101'
docker ps -a --format '{{.Names}}'
衝突する場合は、docker-compose.yml のポート番号やコンテナ名を変更してください。
はじめに:Synology DSMで高性能監視システムを構築
Synology DSM 7.2-72806(RedPill)環境で、Grafana、Prometheus、Node Exporter を Docker Compose でセットアップし、サーバーのパフォーマンスを可視化する方法を解説します。このガイドでは、CPU ファン回転数、Disk IOps、IRQ、TCP 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 がインストール済みであることを確認してください。
- ディレクトリ作成:
mkdir -p /volume1/docker/nodeexporterdashboard/prometheus mkdir -p /volume1/docker/nodeexporterdashboard/grafana/provisioning chown 1026:100 /volume1/docker/nodeexporterdashboard -R - 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 - docker-compose.yml 保存:
nano /volume1/docker/nodeexporterdashboard/docker-compose.yml上記の
docker-compose.ymlをコピー&ペースト。 - コンテナ起動:
cd /volume1/docker/nodeexporterdashboard docker-compose up -d - 動作確認:
- Prometheus: http://192.168.1.110:9091
- Grafana: http://192.168.1.110:3340(初期ユーザー:admin/admin123)
- Node Exporter メトリクス:
curl http://192.168.50.x:9101/metrics
Grafana 利用の注意点
Grafana を Synology DSM(RedPill)で使用する際の重要な注意点を以下にまとめます。
- ポート衝突:デフォルトポート(
9091、3340、9101)が他のサービスと競合する可能性。事前にnetstat -tulnで確認し、必要に応じてポートを変更。 - コンテナ名:同一名(例:
node-exporter)のコンテナが既に存在する場合、エラー発生。既存のコンテナをdocker ps -aで確認し、削除または名前変更。 - リソース制限:DSM/RedPill のカーネルは
cpusやcpuset-cpusをサポートしないため、cpu_sharesとmem_limitでリソース管理を行う。 - パフォーマンス:Grafana のダッシュボードが遅延する場合、クエリ間隔を長く(例:30秒)、不要なパネルを非表示、キャッシュを有効化。
- セキュリティ:デフォルトパスワード(admin/admin123)は必ず変更。外部公開時は Nginx プロキシや HTTPS を検討。
おすすめ:非商用NASプロジェクト「RR」
NAS 自作愛好者やカスタマイズに情熱を燃やす方へ!RR(RedPill Loader) は、非商用で Synology DSM をカスタムハードウェアにインストール可能なプロジェクトです。NEC Express5800/T110i-S のようなサーバー級マシンで、究極の NAS 環境を構築したい方に最適。コミュニティ主導で進化を続ける RR は、自由度が高く、監視システムとの相性も抜群!GitHub で詳細をチェックし、あなたの NAS を次のレベルへ引き上げましょう。
パフォーマンス最適化のポイント
Grafana のグラフ表示を高速化するため、以下の最適化を施しました。
- リソース割り当て:Grafana に
mem_limit: 2g、cpu_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 IOps:
node_disk_reads_completed_total{job="node-exporter"} - IRQ:
node_interrupts{job="node-exporter"} - TCP Stat:
node_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 のカーネルが
cpusやcpuset-cpusをサポートしない。代わりにcpu_sharesを使用。 - メトリクス欠如:ファン回転数が表示されない場合、
lm-sensorsやカーネルモジュールを確認:opkg install lm-sensors modprobe nct6775 cat /sys/class/hwmon/*/fan*_input
コメント