คำตอบสั้น ๆ: ติดตั้ง Zabbix 7.0 LTS ด้วย Docker Compose จาก image ทางการ ครบทั้ง server หน้าเว็บ PostgreSQL และ agent 2 เปลี่ยนรหัส Admin แล้วเพิ่มเครื่อง Linux เครื่องแรก
คู่มือนี้อธิบาย Zabbix ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Zabbix คือระบบมอนิเตอร์ระดับองค์กรแบบโอเพนซอร์สที่เฝ้าดูได้ทั้งเซิร์ฟเวอร์ Linux และ Windows อุปกรณ์เครือข่ายผ่าน SNMP ฐานข้อมูล และเว็บไซต์ เก็บค่าย้อนหลัง แสดงกราฟ และแจ้งเตือนเมื่อค่าเกินเกณฑ์ที่ตั้งไว้ผ่านอีเมลหรือ webhook เหมาะกับฝ่าย IT ที่ดูแลเครื่องจำนวนมากและต้องการเห็นปัญหาก่อนผู้ใช้โทรมาแจ้ง
คู่มือนี้ติดตั้งรุ่น 7.0 LTS ด้วย image ทางการ ประกอบด้วย server, หน้าเว็บ, PostgreSQL และ agent สำหรับตัวเครื่องมอนิเตอร์เอง เมื่อจบคุณจะเข้าหน้าเว็บผ่าน HTTPS เปลี่ยนรหัสผ่านเริ่มต้นแล้ว และเห็นข้อมูลของเครื่อง Linux เครื่องแรกที่ติดตั้ง agent
สิ่งที่ต้องเตรียม
- Cloud Server ที่ใช้ Ubuntu 24.04 พร้อม Docker Engine และ Compose plugin ขนาดเริ่มต้นราว 2 vCPU / RAM 4 GB และดิสก์ SSD 50 GB สำหรับไม่เกิน 100 โฮสต์ เป็นค่าประมาณ ฐานข้อมูลจะโตตามจำนวน item และระยะเก็บประวัติ
- ซับโดเมน เช่น
monitor.example.comและ Nginx Proxy Manager พร้อมเครือข่ายproxy - สิทธิ์ sudo บนเครื่องที่จะมอนิเตอร์ เพื่อติดตั้ง agent 2
- บัญชี SMTP สำหรับส่งอีเมลแจ้งเตือน
ถ้าต้องการแค่ตรวจว่าเว็บไซต์ล่มหรือไม่ Uptime Kuma ติดตั้งง่ายกว่า ระบบนี้เหมาะเมื่อต้องการดูภายในเครื่อง เช่น CPU ดิสก์ บริการที่หยุดทำงาน และ log พร้อมระบบแจ้งเตือนแบบมีลำดับขั้น
ขั้นตอนที่ 1: เตรียมโฟลเดอร์และรหัสผ่านฐานข้อมูล
sudo install -d -o $USER /opt/monitor
cd /opt/monitor
echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" > .env
chmod 600 .env
ขั้นตอนที่ 2: เขียน compose.yaml ด้วย image ทางการ
x-db: &db
DB_SERVER_HOST: db
POSTGRES_DB: zbx
POSTGRES_USER: zbx
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: zbx
POSTGRES_USER: zbx
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./pgdata:/var/lib/postgresql/data
server:
image: zabbix/zabbix-server-pgsql:ubuntu-7.0-latest
restart: unless-stopped
environment: *db
ports:
- "10051:10051"
depends_on:
- db
web:
image: zabbix/zabbix-web-nginx-pgsql:ubuntu-7.0-latest
container_name: zbx-web
restart: unless-stopped
environment:
<<: *db
ZBX_SERVER_HOST: server
PHP_TZ: Asia/Bangkok
depends_on:
- server
networks:
- default
- proxy
agent:
image: zabbix/zabbix-agent2:ubuntu-7.0-latest
restart: unless-stopped
environment:
ZBX_HOSTNAME: Zabbix server
ZBX_SERVER_HOST: server
networks:
proxy:
external: true
บล็อก x-db คือค่าที่ใช้ซ้ำระหว่าง server กับหน้าเว็บ ตอนเริ่มครั้งแรก server จะสร้างโครงสร้างฐานข้อมูลและข้อมูลตั้งต้นให้เอง แท็ก ubuntu-7.0-latest ทำให้ได้รุ่นแก้ไขล่าสุดของสาย 7.0 LTS โดยไม่ข้ามไปเวอร์ชันหลักใหม่เอง
พอร์ต 10051 เปิดไว้ให้ agent ที่ทำงานแบบ active ส่งข้อมูลเข้ามา จำไว้ว่าพอร์ตที่ Docker publish จะไม่ถูกกรองด้วย UFW ให้จำกัด IP ต้นทางที่ไฟร์วอลล์ระดับคลาวด์ หรือผูกกับ IP ภายใน เช่น "192.0.2.10:10051:10051" ถ้าเครื่องทั้งหมดอยู่ในเครือข่ายภายในเดียวกัน
docker compose up -d
docker compose logs -f server
ขั้นตอนที่ 3: เปิด HTTPS และเปลี่ยนรหัสผ่าน Admin
ใน Nginx Proxy Manager เพิ่ม Proxy Host กรอก Domain Names monitor.example.com, Forward Hostname zbx-web, Forward Port 8080 (หน้าเว็บในคอนเทนเนอร์ฟังที่พอร์ตนี้) เปิด Block Common Exploits ขอใบรับรองพร้อม Force SSL และแนะนำให้ผูก Access List จำกัดเฉพาะ IP สำนักงานหรือ VPN
เปิด https://monitor.example.com ล็อกอินด้วยบัญชีเริ่มต้น Username Admin รหัสผ่าน zabbix แล้วไปที่ Users → Users → Admin → Change password ตั้งรหัสผ่านใหม่ทันที เพราะค่านี้เป็นที่รู้กันทั่วไป จากนั้นสร้างบัญชีของผู้ดูแลแต่ละคนแยกกัน ไม่ใช้บัญชีร่วม