ติดตั้ง Zabbix Monitoring บน VPS Ubuntu

ติดตั้ง Zabbix Monitoring บน VPS Ubuntu

มิถุนายน 2026 · อ่าน 9 นาที

Zabbix เป็น enterprise-grade monitoring platform ที่ใช้งานฟรี ตรวจสอบ CPU RAM disk I/O network bandwidth และ process ได้พร้อมกันหลาย host ตั้ง alert แจ้งเตือนผ่าน email Line หรือ Telegram เมื่อ server เกิน threshold ที่กำหนด Zabbix เหมาะสำหรับผู้ที่ดูแล server หลายเครื่องและต้องการ centralized monitoring

ข้อกำหนดระบบ

Zabbix Server ต้องการ RAM อย่างน้อย 2GB และ CPU 2 cores สำหรับ monitoring server ขนาดเล็ก VPS ขนาด 4GB RAM เหมาะสำหรับ monitor host ได้ 20-50 เครื่อง

ติดตั้ง Zabbix 7 บน Ubuntu 22.04

# เพิ่ม Zabbix repository
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
sudo apt update

# ติดตั้ง Zabbix server + frontend + agent
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent -y

# ติดตั้ง MariaDB
sudo apt install mariadb-server -y
sudo systemctl enable --now mariadb

สร้าง Database สำหรับ Zabbix

sudo mysql -u root -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EXIT;
# Import schema
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u zabbix -p zabbix

# ปิด log_bin_trust_function_creators หลัง import
sudo mysql -u root -p
SET GLOBAL log_bin_trust_function_creators = 0;
EXIT;

ตั้งค่า Zabbix Server

sudo nano /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=StrongPassword123!

ตั้ง Nginx สำหรับ Zabbix Frontend

sudo nano /etc/zabbix/nginx.conf
server {
    listen 8080;
    server_name _;
    root /usr/share/zabbix;
    # ... (Zabbix จะตั้งค่าส่วนใหญ่ให้อัตโนมัติ)
}
sudo systemctl enable --now zabbix-server zabbix-agent nginx php8.1-fpm
sudo systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm

เปิด browser ไปที่ http://YOUR-VPS-IP:8080 แล้วทำตาม setup wizard login ครั้งแรก user: Admin / password: zabbix

ติดตั้ง Zabbix Agent บน Host ที่ต้องการ Monitor

# บน server ที่ต้องการ monitor
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
sudo apt update && sudo apt install zabbix-agent -y

sudo nano /etc/zabbix/zabbix_agentd.conf
# แก้ Server= เป็น IP ของ Zabbix Server
Server=YOUR-ZABBIX-SERVER-IP
ServerActive=YOUR-ZABBIX-SERVER-IP
Hostname=myserver01

sudo systemctl enable --now zabbix-agent
Tip: ใช้ Zabbix template สำเร็จรูปเช่น "Linux by Zabbix agent" เพื่อเริ่ม monitor CPU/RAM/disk/network ได้ทันทีโดยไม่ต้องตั้ง item เอง ไปที่ Configuration > Hosts > เพิ่ม host > Templates

ตรวจสอบว่า Zabbix ทำงานถูกต้อง

# ตรวจ Zabbix server
sudo systemctl status zabbix-server
sudo tail -f /var/log/zabbix/zabbix_server.log

# ตรวจ agent
sudo systemctl status zabbix-agent
sudo tail -f /var/log/zabbix/zabbix_agentd.log

# ทดสอบ agent connectivity จาก server
zabbix_get -s 127.0.0.1 -p 10050 -k "system.uptime"
zabbix_get -s AGENT-IP -p 10050 -k "agent.ping"
Tip: zabbix_get คือเครื่องมือทดสอบ connectivity ระหว่าง server และ agent โดยตรง ถ้าได้ค่ากลับมาแสดงว่า agent ตอบสนองได้ปกติ

แก้ปัญหาที่พบบ่อย

Error: "Cannot connect to the database"

ตรวจ password ใน zabbix_server.conf และ MySQL user permission:

mysql -u zabbix -p zabbix
# ถ้า login ได้แสดงว่า credential ถูก
sudo systemctl restart zabbix-server
sudo tail -20 /var/log/zabbix/zabbix_server.log

Agent ไม่ตอบสนอง (ZBX_NOTSUPPORTED)

ตรวจ firewall และ port 10050:

sudo ufw allow from ZABBIX-SERVER-IP to any port 10050
sudo ss -tulnp | grep 10050
# ทดสอบจาก Zabbix server
telnet AGENT-IP 10050

Frontend แสดง PHP timezone error

ตั้ง timezone ใน PHP config:

sudo nano /etc/php/8.1/fpm/php.ini
# หาบรรทัด date.timezone แล้วแก้:
date.timezone = Asia/Bangkok
sudo systemctl restart php8.1-fpm

Zabbix server หยุดทำงานเมื่อ database ช้า

เพิ่ม timeout และ worker threads ใน config:

sudo nano /etc/zabbix/zabbix_server.conf
StartPollers=10
StartPollersUnreachable=2
Timeout=30
sudo systemctl restart zabbix-server

คำถามที่พบบ่อย

Zabbix กับ Grafana + Prometheus ต่างกันอย่างไร?

Zabbix เป็น all-in-one solution มี data collection + alerting + dashboard ในตัว Grafana + Prometheus ต้องตั้งหลายส่วนแยกกัน Zabbix เหมาะกับ infra monitoring ขนาดใหญ่ที่ต้องการ SNMP และ network device monitoring ที่ Prometheus ทำได้ยากกว่า

Zabbix แจ้งเตือน Line ได้ไหม?

ได้ ผ่าน Zabbix Media Type ที่ตั้งเป็น webhook ชี้ไปยัง Line Notify API หรือ Line Messaging API ตั้งใน Administration > Media Types > สร้าง Webhook ใหม่แล้วกำหนด URL และ message template

Monitor server กี่เครื่องได้ต่อ Zabbix instance เดียว?

Zabbix server บน VPS 4GB RAM สามารถ monitor ได้ประมาณ 50-100 host โดยไม่มีปัญหา ถ้าต้องการมากกว่านั้นให้ upgrade RAM และใช้ distributed monitoring ผ่าน Zabbix Proxy