Synology Observium Docker 部署及設置
Synology DS423+ 上用 Docker 架一套 Observium,方便集中睇網絡設備狀態(流量、介面、事件等)。最後用 mbixtech/observium 配合 MariaDB 同 phpMyAdmin 成功起好,呢篇記錄由 0 到可以登入使用嘅設定同注意位。
Observium 做到啲咩?
Observium 主要透過 SNMP 去收設備資料,之後用 Web UI 顯示,例如:
- 介面/port 流量圖(RX/TX)
- 設備狀態(視乎設備支援:CPU、RAM、溫度等)
- 事件/告警紀錄(裝置 up/down、介面狀態改變)
架構:三個容器分工
我用 docker-compose 一次起三個服務:
observium:Observium 主程式 + Webobserviumdb:MariaDB(存 Observium 資料)phpmyadmin:管理 MariaDB(查/改 user、檢查資料庫)
observiumdb係 compose 裏面嘅 service name,用嚟做容器內 DNS;Observium 會用呢個名連 DB。
需要先準備嘅資料夾
我放喺:
/volume1/docker/observium/
先建立:
/volume1/docker/observium/mariadb(DB 資料)/volume1/docker/observium/logs(Observium logs)/volume1/docker/observium/rrd(Observium 圖表資料)
一次成功版 docker-compose.yml
以下係我最後用到、可以正常啟動同登入嘅版本。
注意:我 NAS 本身套件已經用緊 3306,所以 Docker MariaDB 對外改用 3307。容器內部仍然係 3306。
version: "3.8"
services:
observiumdb:
image: mariadb:11
restart: unless-stopped
environment:
TZ: Asia/Taipei
MARIADB_ROOT_PASSWORD: "RootPass123!"
MARIADB_DATABASE: "observium"
MARIADB_USER: "observium"
MARIADB_PASSWORD: "123456"
volumes:
- /volume1/docker/observium/mariadb:/var/lib/mysql
ports:
- "3307:3306"
healthcheck:
test: ["CMD-SHELL", "mariadb-admin ping -p\"RootPass123!\" --silent"]
interval: 10s
timeout: 5s
retries: 10
phpmyadmin:
image: phpmyadmin:latest
restart: unless-stopped
environment:
TZ: Asia/Taipei
PMA_HOST: observiumdb
PMA_PORT: "3306"
UPLOAD_LIMIT: 256M
ports:
- "8081:80"
depends_on:
observiumdb:
condition: service_healthy
observium:
image: mbixtech/observium:latest
restart: unless-stopped
depends_on:
observiumdb:
condition: service_healthy
environment:
TZ: Asia/Taipei
OBSERVIUM_ADMIN_USER: "admin"
OBSERVIUM_ADMIN_PASS: "AdminPass123!"
OBSERVIUM_DB_HOST: "observiumdb"
OBSERVIUM_DB_USER: "observium"
OBSERVIUM_DB_PASS: "123456"
OBSERVIUM_DB_NAME: "observium"
OBSERVIUM_BASE_URL: "http://192.168.1.106:8080"
ports:
- "8080:80"
volumes:
- /volume1/docker/observium/logs:/opt/observium/logs
- /volume1/docker/observium/rrd:/opt/observium/rrd
version: "3.8"
services:
observiumdb:
image: mariadb:11
restart: unless-stopped
environment:
TZ: Asia/Taipei
MARIADB_ROOT_PASSWORD: "RootPass123!"
MARIADB_DATABASE: "observium"
MARIADB_USER: "observium"
MARIADB_PASSWORD: "123456"
volumes:
- /volume1/docker/observium/mariadb:/var/lib/mysql
# 如果 3307 撞 port,就改 3308(容器內仍然係 3306)
ports:
- "3308:3306"
healthcheck:
test: ["CMD-SHELL", "mariadb-admin ping -p\"RootPass123!\" --silent"]
interval: 10s
timeout: 5s
retries: 10
phpmyadmin:
image: phpmyadmin:latest
restart: unless-stopped
environment:
TZ: Asia/Taipei
PMA_HOST: observiumdb
PMA_PORT: "3306"
UPLOAD_LIMIT: 256M
# 如果 8081 撞 port,就改 18081
ports:
- "18081:80"
depends_on:
- observiumdb
observium:
image: mbixtech/observium:latest
restart: unless-stopped
depends_on:
- observiumdb
environment:
TZ: Asia/Taipei
OBSERVIUM_ADMIN_USER: "admin"
OBSERVIUM_ADMIN_PASS: "AdminPass123!"
OBSERVIUM_DB_HOST: "observiumdb"
OBSERVIUM_DB_USER: "observium"
OBSERVIUM_DB_PASS: "123456"
OBSERVIUM_DB_NAME: "observium"
# 記得跟住 ports 改返 URL(例如 18080)
OBSERVIUM_BASE_URL: "http://10.71.160.14:18080"
# 如果 8080 撞 port,就改 18080
ports:
- "18080:80"
volumes:
- /volume1/docker/observium/logs:/opt/observium/logs
- /volume1/docker/observium/rrd:/opt/observium/rrd
啟動後點樣用?
Observium:
http://192.168.1.106:8080
登入:admin / AdminPass123!phpMyAdmin:
http://192.168.1.106:8081如果你要用外部工具連 Docker 版 DB:
192.168.1.106:3307
避坑重點(值得記低)
1) mbixtech/observium 要用 OBSERVIUM_DB_* 變數
一開始用咗通用嘅 DB_HOST / MYSQL_HOST 類寫法,Observium 未必會讀到,結果就會一直出現 DB 連線/權限錯誤。用返官方範例嘅 OBSERVIUM_DB_* 最穩。
2) MariaDB 初始化只會做一次
/var/lib/mysql 一旦已經有資料,再改 compose 入面嘅密碼通常唔會自動生效。要嘛:
- 用 phpMyAdmin 改 user 密碼/權限;或者
- 停 project → 改名/清空 DB folder → 重新初始化(最乾淨)
3) 唔好掛載整個 /opt/observium
掛錯會覆蓋容器入面 Observium 本身檔案/初始化腳本,導致起唔到。只掛 logs 同 rrd 會安全好多。
下一步:加入設備
Observium 主要靠 SNMP,所以要先喺要監控嘅設備開 SNMP(SNMPv2c 或 v3),再喺 Observium 後台 Add Device,等佢跑 discovery/poller,就會開始有資料同圖表。



資料來源:
https://hub.docker.com/r/mbixtech/observium/
https://www.observium.org/