はじめに

こんにちは。あやかです。

最近、技術的な検証も兼ねて家庭内ネットワークの監視環境を整えようと思い立ちました。 せっかくSynology NASがあるので、Dockerを使ってZabbixを動かしてみることに。

DSMのContainer Managerを使えば、意外と簡単にZabbix環境が構築できたので、手順を共有したいと思います。

環境情報

今回使用した環境はこんな感じです。

  • NAS: Synology DS923+
  • DSM: 7.3.2-86009
  • Zabbix: 7.4.6
  • 構成: Zabbix Web + Zabbix Server + PostgreSQL

構築の流れ

Container Managerを使えば、docker-composeで一発起動できるので本当に楽です。 やることは大体こんな感じ。

  1. Container Managerをインストール
  2. docker-compose.ymlを作成
  3. プロジェクトとして起動
  4. ブラウザからアクセスして初期設定

docker-compose.ymlの準備

まずは、Zabbix環境を定義するdocker-compose.ymlを作成します。 私が使っている設定はこちら。

version: '3.8'
services:
  postgres:
    image: postgres:15-alpine
    container_name: zabbix-postgres
    environment:
      POSTGRES_DB: zabbix
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: CHANGE_YOUR_PASSWORD
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    networks:
      - zabbix-net
    restart: unless-stopped

  zabbix-server:
    image: zabbix/zabbix-server-pgsql:alpine-latest
    container_name: zabbix-server
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_DB: zabbix
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: CHANGE_YOUR_PASSWORD
      ZBX_ENABLE_SNMP_TRAPS: "true"
    ports:
      - "10051:10051"
      - "162:162/udp"  # SNMPトラップ用
    volumes:
      - ./alertscripts:/usr/lib/zabbix/alertscripts
      - ./externalscripts:/usr/lib/zabbix/externalscripts
    depends_on:
      - postgres
    networks:
      - zabbix-net
    restart: unless-stopped

  zabbix-web:
    image: zabbix/zabbix-web-nginx-pgsql:alpine-latest
    container_name: zabbix-web
    environment:
      DB_SERVER_HOST: postgres
      POSTGRES_DB: zabbix
      POSTGRES_USER: zabbix
      POSTGRES_PASSWORD: CHANGE_YOUR_PASSWORD
      ZBX_SERVER_HOST: zabbix-server
      PHP_TZ: Asia/Tokyo  # タイムゾーン設定
    ports:
      - "8080:8080"  # Web UIのポート
    depends_on:
      - postgres
      - zabbix-server
    networks:
      - zabbix-net
    restart: unless-stopped

networks:
  zabbix-net:
    driver: bridge

注意点:

  • POSTGRES_PASSWORDCHANGE_YOUR_PASSWORDは必ず変更してくださいね
  • タイムゾーンをAsia/Tokyoにしているので、ログの時刻が日本時間で表示されます
  • SNMPトラップを有効化しているので、ルーターからのトラップも受信できるようになっています

Container Managerでの起動

起動手順はとってもシンプル。

  1. DSMのパッケージセンターから「Container Manager」をインストール
  2. Container Managerを開いて「プロジェクト」タブを選択
  3. 「新規作成」をクリック
  4. プロジェクト名を入力(私は「zabbix」にしました)
  5. 「docker-compose.ymlをアップロード」を選んで、さっき作ったファイルをアップロード
  6. 「次へ」で設定を確認
  7. 「完了」でコンテナを起動

起動には数分かかりますが、コンテナの状態が「実行中」になれば準備完了です。

Webブラウザからアクセス

ブラウザからhttp://NASのIPアドレス:8080にアクセスすると、Zabbixのログイン画面が表示されます。

初期ログイン情報はこちら。

  • Username: Admin
  • Password: zabbix

ログインできたら、セキュリティのためにパスワードは変更しておきましょう。

監視対象の追加

Zabbixが起動できたら、あとは監視したい機器を追加していくだけ。 家庭内だとこんな機器が監視対象になるかなと思います。

  • ルーター(SNMPで死活監視やトラフィック監視)
  • NAS本体
  • その他のサーバー

具体的な設定方法については、また別の記事で書きたいと思います。

まとめ

Synology NASのContainer Managerを使えば、docker-composeで本当に簡単にZabbix環境が構築できました。 難しい設定もなく、数クリックでちゃんとした監視環境が手に入るのは便利ですね。

技術検証としても、家庭内の機器監視としても使えるので、興味がある方はぜひ試してみてください。