SSD Nodes Learn
คู่มือ Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-07-24

วิธีติดตั้ง Zabbix 7.0 LTS บน Ubuntu 24.04

คู่มือติดตั้ง Zabbix 7.0 LTS บน Ubuntu 24.04 ครบชุด ทั้ง MySQL schema, nginx และ agent2 พร้อมวิธีแก้ปัญหาการตั้งค่า nginx config และการเชื่อมต่อฐานข้อมูล

สิ่งที่คุณกำลังจะสร้าง

Ubuntu 24.04 VPS เพียงเครื่องเดียวที่รัน Zabbix 7.0 LTS แบบครบชุด ประกอบด้วย: daemon zabbix-server สำหรับดึงข้อมูลและแจ้งเตือน, ฐานข้อมูล MariaDB/MySQL สำหรับเก็บทุก metric, PHP frontend ที่ทำงานผ่าน nginx และ zabbix-agent2 สำหรับเก็บ metric จากตัวเครื่องเอง เมื่อติดตั้งเสร็จแล้ว คุณสามารถเชื่อมต่อระบบเข้ากับเซิร์ฟเวอร์เครื่องที่สอง ใส่ template และรับอีเมลแจ้งเตือนทันทีเมื่อดิสก์เต็มหรือบริการหยุดทำงาน

Zabbix มีฟังก์ชันการทำงานที่ซับซ้อนกว่าเครื่องมือแสดงสถานะทั่วไป เนื่องจากเป็นระบบ time-series ของจริงที่มีทั้ง template, trigger, การส่งต่อการแจ้งเตือน (escalation) และการเก็บประวัติ ปัญหาเกือบทั้งหมดเกิดจาก 3 ขั้นตอนที่ผู้ใช้มักข้ามไป ได้แก่ การนำเข้า database schema, การตั้งค่ารหัสผ่านฐานข้อมูลให้ตรงกับที่เซิร์ฟเวอร์ใช้งาน และการยกเลิกการคอมเมนต์ (uncomment) 2 บรรทัดใน nginx config หากตั้งค่าส่วนนี้ถูกต้อง ขั้นตอนที่เหลือจะทำได้ง่ายมาก หากคุณต้องการเพียงแค่การตรวจสอบสถานะ up/down และหน้า status page สำหรับแชร์ Uptime Kuma status monitor ที่มีน้ำหนักเบา สามารถทำได้ใน container เดียว แต่ Zabbix จะมีประโยชน์สูงสุดเมื่อคุณต้องการกำหนด threshold ต่อ metric และการส่งต่อการแจ้งเตือนผ่านโฮสต์จำนวนมาก

ควรใช้เวอร์ชัน 7.0 LTS เนื่องจาก server, frontend, agent2 และ schema ถูกออกแบบมาให้ทำงานร่วมกัน และจะได้รับการแก้ไขด้านความปลอดภัยต่อเนื่องหลายปี ก่อนคัดลอกชื่อไฟล์ repository ด้านล่าง โปรดตรวจสอบหน้าดาวน์โหลดอย่างเป็นทางการของ Zabbix เนื่องจากแพ็กเกจ release latest จะเป็นเวอร์ชันล่าสุดของ 7.0 เสมอ แต่หากคุณต้องการระบุเวอร์ชัน 7.0-N ที่แน่นอน หน้าเว็บดังกล่าวจะมีรายชื่อไฟล์ระบุไว้เช่นกัน คำสั่งอื่นๆ ทั้งหมดในคู่มือนี้สามารถใช้งานได้กับ Zabbix ตระกูล 7.0 ทุกเวอร์ชัน

ขนาดพอร์ตและสิ่งที่จำเป็นต้องมี

สมมติว่าคุณใช้ Ubuntu 24.04 KVM VPS ที่ติดตั้งใหม่และมีสิทธิ์ root หรือ sudo การประเมินทรัพยากรควรเป็นไปตามความเป็นจริง: RAM 2 GB และ vCPU 2 คอร์ คือทรัพยากรขั้นต่ำที่ใช้งานได้จริงสำหรับการรัน server, database, nginx และ PHP ในเครื่องเดียวเพื่อเฝ้าติดตาม host จำนวนหนึ่ง หากมี host มากกว่าไม่กี่สิบเครื่อง ควรเตรียม RAM ไว้ 4 GB และหากมี host มากกว่าหนึ่งร้อยเครื่อง ควรแยก database ไปไว้ใน server เครื่องอื่น พื้นที่ดิสก์จะเพิ่มขึ้นตามจำนวนรายการที่จัดเก็บและระยะเวลาที่เก็บข้อมูลประวัติไว้ ควรเตรียมพื้นที่ไว้เริ่มต้นไม่กี่ gigabytes โดยระบบ housekeeper จะลบข้อมูลเก่าตามช่วงเวลาการเก็บรักษา (retention windows) ที่คุณตั้งค่าไว้

พอร์ต: พอร์ต 80 และ 443 สำหรับ frontend ซึ่งสามารถเปิดเป็นสาธารณะหรือจำกัดเฉพาะ IP ของคุณเท่านั้น Server จะรอรับข้อมูลผ่าน TCP 10051 สำหรับ active agents ที่ส่งข้อมูลเข้ามา และ agent แต่ละตัวจะรอรับการดึงข้อมูลผ่าน TCP 10050 จาก server หากมีการใช้งาน firewall ให้เปิดเฉพาะพอร์ตที่จำเป็นต้องใช้งานเท่านั้น การตั้งค่า DNS A record สำหรับ frontend เป็นสิ่งที่ควรทำ เนื่องจากคุณจะต้องใช้ใบรับรอง (certificate) ที่แท้จริงสำหรับส่วนนี้ เนื่องจาก Zabbix จะทำหน้าที่เฝ้าติดตามทุกบริการที่คุณรัน ดังนั้นจึงควรจัดให้อยู่ใน ชุดซอฟต์แวร์ self-hosting ที่ควรใช้งานในปี 2026 แทนที่จะเป็นการติดตั้งเพิ่มเติมในภายหลัง

Step 1 — เพิ่ม official Zabbix 7.0 repository

แพ็กเกจ zabbix-release ทำหน้าที่เพียงอย่างเดียว คือการเพิ่ม apt source list และ signing key ลงในระบบของคุณ ให้ทำการติดตั้งแพ็กเกจนี้ จากนั้นจึงทำการ refresh index

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update

หาก wget คืนค่าเป็น 404 Not Found แสดงว่ามีการเปลี่ยนชื่อไฟล์ ให้เปิดหน้าดาวน์โหลดของ Zabbix เลือก Ubuntu 24.04 และคัดลอก URL ของ zabbix-release ตามที่ระบุไว้ หาก apt update แสดงผลอย่างถูกต้อง จะต้องปรากฏบรรทัด repo.zabbix.com และไม่มีการแจ้งเตือนเรื่อง key ส่วน The following signatures couldn't be verified because the public key is not available หมายถึงแพ็กเกจ release ไม่ได้ติดตั้ง key ให้ทำการรัน dpkg -i ใหม่อีกครั้งและทำการ update อีกรอบ

Step 2 — ติดตั้ง server, frontend และ agent

ติดตั้ง server ที่สร้างด้วย MySQL, PHP frontend, nginx config, ไฟล์ SQL schema และ agent2 พร้อมกันในขั้นตอนเดียว

sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
  zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

zabbix-server-mysql คือ server ที่คอมไพล์สำหรับ MySQL/MariaDB หากใช้ PostgreSQL ให้ติดตั้ง zabbix-server-pgsql แทน และปรับปรุงขั้นตอนการจัดการ database ตามด้านล่าง zabbix-sql-scripts ประกอบด้วย schema สำหรับการ import ในขั้นตอนถัดไป โดยในเวอร์ชัน 7.0 จะแยกเป็นแพ็กเกจต่างหาก หากไม่ได้ติดตั้งจะทำให้เกิดข้อผิดพลาดไม่พบ path ในการ import แพ็กเกจเหล่านี้ไม่ได้ติดตั้ง database engine มาให้ ดังนั้นหากเครื่องยังไม่มี database ให้ติดตั้ง MariaDB ในตอนนี้

sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

Step 3 — สร้าง database ด้วย character set ที่ถูกต้อง

Zabbix มีข้อกำหนดเรื่อง collation ที่เข้มงวด: database ต้องเป็น utf8mb4 พร้อมกับ utf8mb4_bin มิฉะนั้นการ import จะหยุดชะงักกลางคันเนื่องจากเกิด foreign-key errors ให้เปิด root shell ด้วย sudo mysql แล้วรันคำสั่ง:

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'choose-a-strong-password';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;

บรรทัด SET GLOBAL มีไว้เพื่อความปลอดภัยในการ import เนื่องจาก Zabbix schema มีการสร้าง stored functions ซึ่ง account ที่ไม่ใช่ SUPER อย่างเช่น zabbix ไม่สามารถสร้างฟังก์ชันเหล่านี้ได้หากเปิดใช้งาน binary logging ไว้ — โดยปกติ MySQL 8 จะเปิดใช้งาน binary logging เป็นค่าเริ่มต้น และ MariaDB บางเวอร์ชันที่จัดการโดยผู้ให้บริการ cloud ก็เปิดใช้งานเช่นกัน (แต่ MariaDB มาตรฐานไม่ได้เปิดไว้) หากข้าม flag นี้ใน server ที่เปิดใช้งาน binary logging การ import จะหยุดลงพร้อมกับ error ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled การตั้งค่านี้ด้วยสิทธิ์ root จะช่วยแก้ปัญหาดังกล่าว โดยคุณสามารถปิดการใช้งานกลับคืนได้หลังจาก import เสร็จสิ้น โปรดจดจำ password ให้ถูกต้อง เนื่องจาก server config จำเป็นต้องใช้ string ที่เหมือนกันทุก byte

Step 4 — Import the schema (the step people skip)

นี่คือสาเหตุที่พบบ่อยที่สุดที่ทำให้ frontend ใหม่ไม่สามารถโหลดได้ เนื่องจากฐานข้อมูลที่สร้างขึ้นยังไม่มีข้อมูล ให้ทำการโหลด schema ที่มาพร้อมกับ zabbix-sql-scripts ลงในฐานข้อมูล

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
  mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

ระบบจะถามรหัสผ่านของ zabbix โดยจะใช้เวลาดำเนินการประมาณ 30 ถึง 60 วินาทีบน VPS ขนาดเล็ก หากดำเนินการสำเร็จจะไม่มีข้อความใดๆ แสดงขึ้นมา ซึ่งถือเป็นสถานะที่ถูกต้อง หากพบ zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory แสดงว่ายังไม่ได้ติดตั้ง package zabbix-sql-scripts (ให้กลับไปทำ Step 2) หากพบ ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' แสดงว่ารหัสผ่านหรือสิทธิ์การใช้งานจาก Step 3 ไม่ถูกต้อง เมื่อดำเนินการเสร็จสิ้น ให้เปิดใช้งาน safety flag กลับคืนมาดังนี้:

sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"

ตรวจสอบการโหลดข้อมูลด้วย sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" หากแสดงเป็นตัวเลขแทนที่จะเป็น error doesn't exist แสดงว่าการนำเข้า schema สำเร็จแล้ว

Step 5 — Set the database password in zabbix_server.conf

Server จะอ่านข้อมูลประจำตัวของ database จาก /etc/zabbix/zabbix_server.conf ต้องตั้งค่าเฉพาะ password เท่านั้น เนื่องจาก DBName และ DBUser ถูกกำหนดค่าเริ่มต้นเป็น zabbix ไว้แล้ว ให้ยกเลิกการคอมเมนต์บรรทัด # DBPassword= และตั้งค่าดังนี้:

DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-password

Password ต้องมีค่าตรงกันทุก byte กับค่าที่ใช้ใน Step 3 การเว้นว่างหรือการระบุ DBPassword ผิดพลาด เป็นสาเหตุหลักที่ทำให้เกิดข้อความแจ้งเตือน "Zabbix server is not running" ในภายหลัง เนื่องจาก daemon เริ่มทำงานแต่ไม่สามารถ login ได้จึงทำให้หยุดทำงาน โดยจะไม่มีข้อความแจ้งเตือนบนหน้าจอ มีเพียงข้อมูลใน log เท่านั้นที่ระบุสาเหตุได้

Step 6 — ชี้ nginx ไปยัง frontend

แพ็กเกจ zabbix-nginx-conf จะติดตั้ง server block ไว้ที่ /etc/zabbix/nginx.conf และสร้าง link เข้ากับ nginx จาก /etc/nginx/conf.d/zabbix.conf แต่มีการ comment บรรทัด listen และ server_name ไว้ ทำให้ nginx ยังไม่สามารถให้บริการ Zabbix ได้จนกว่าคุณจะแก้ไขบรรทัดดังกล่าว:

server {
    listen          80;
    server_name     zabbix.example.com;
    ...
}

ให้ใช้ domain ของคุณ หรือใช้ public IP ของเซิร์ฟเวอร์หากยังไม่มี DNS มีข้อควรระวัง 2 ประการ: เว็บไซต์ welcome เริ่มต้นของ nginx บน Ubuntu จะฟัง (listen) ที่ port 80 และถูกกำหนดเป็น default server ซึ่งจะทำให้เว็บไซต์นี้ถูกเรียกใช้งานแทนหากชื่อโดเมนไม่ตรงกัน — คุณต้องลบเว็บไซต์นี้ออก มิฉะนั้นหน้าเว็บที่ผิดจะถูกโหลดขึ้นมา: sudo rm -f /etc/nginx/sites-enabled/default และหาก /etc/nginx/conf.d/zabbix.conf หายไป (เป็นปัญหาที่พบได้ในการแพ็กเกจ) ให้สร้าง link ด้วยตนเองโดยใช้คำสั่ง sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf จากนั้นให้ทดสอบและ reload:

sudo nginx -t
sudo systemctl reload nginx

nginx -t ควรแสดงผลลัพธ์เป็น test is successful หากแสดงผลเป็น nginx: [emerg] a duplicate default server for 0.0.0.0:80 แสดงว่าทั้ง default site และ Zabbix block ต่างแย่งกันใช้งาน default_server — ให้ลบ default site ออกแล้วทดสอบใหม่ โดยปกติแล้วการทดสอบอาจผ่านแต่มีคำเตือน conflicting server name ปรากฏขึ้น แต่เบราว์เซอร์ยังคงแสดงหน้า welcome ปกติ นั่นเป็นเพราะ default site ถูกเรียกใช้งานเนื่องจากชื่อโดเมนไม่ตรงกัน การลบ default site จะช่วยแก้ไขปัญหานี้ได้

Step 7 — Start and enable the services

สั่งให้ server, agent, PHP-FPM และ nginx เริ่มทำงาน และตั้งค่าให้เริ่มทำงานโดยอัตโนมัติเมื่อมีการ reboot

sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable  zabbix-server zabbix-agent2 nginx php8.3-fpm

Ubuntu 24.04 มาพร้อมกับ PHP 8.3 ดังนั้น service ของ FPM คือ php8.3-fpm; ส่วน package zabbix-nginx-conf จะรัน frontend ภายใต้ master ตัวเดียวกัน ตรวจสอบว่า server เริ่มทำงานและทำงานได้อย่างต่อเนื่อง:

sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.log

log ที่ปกติจะลงท้ายด้วย server started และมี process housekeeper, poller และ trapper กำลังทำงาน หากพบ [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' แสดงว่า DBPassword จาก Step 5 ไม่ถูกต้อง ให้แก้ไขและ restart ใหม่ หากพบบรรทัด [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist แสดงว่าคุณข้ามขั้นตอนการ import schema ใน Step 4 ทำให้ server ไม่มีข้อมูลสำหรับอ่าน

Step 8 — เสร็จสิ้นการตั้งค่าผ่าน web setup wizard

ไปที่ http://your-domain-or-ip เพื่อเปิด Zabbix setup wizard และดำเนินการตามขั้นตอนดังนี้:

  1. Welcome — เลือกภาษาที่ต้องการ
  2. Check of pre-requisites — ทุกรายการควรแสดงสถานะ OK เนื่องจากชุด /etc/zabbix/php-fpm.conf ที่ติดตั้งมานั้นมีการตั้งค่า PHP limits ตามที่ Zabbix ต้องการไว้แล้ว
  3. Configure DB connection — เลือก database type เป็น MySQL, host คือ localhost, port คือ 0 (หมายถึง default port หรือ socket), database name คือ zabbix, user คือ zabbix และใช้ password จาก Step 3 หากข้อมูลประจำตัวไม่ถูกต้องหรือไม่มี schema จะพบข้อผิดพลาดในขั้นตอนนี้
  4. Settings — คงค่า Zabbix server host เป็น localhost, port เป็น 10051 และตั้งชื่อสำหรับการติดตั้ง
  5. Pre-installation summary จากนั้นเลือก Install — wizard จะทำการเขียนไฟล์ /etc/zabbix/web/zabbix.conf.php
  6. Finish — เข้าสู่ระบบด้วย user Admin (A ตัวใหญ่) และ password zabbix จากนั้นให้เปลี่ยน password ทันทีที่เมนู Users

หาก wizard รายงานข้อผิดพลาด Cannot create the configuration file แสดงว่า web user ไม่มีสิทธิ์เขียนไฟล์ /etc/zabbix/web/ — ให้ดาวน์โหลดไฟล์ zabbix.conf.php ที่ระบบแนะนำ นำไปวางในตำแหน่งดังกล่าวด้วยคำสั่ง sudo แล้วจึงคลิก Finish

Step 9 — Add the local host and attach a template

Zabbix ไม่ได้ทำการตรวจสอบตัวเองโดยอัตโนมัติ ให้ไปที่ Data collection → Hosts → Create host ตั้งค่า host name เป็น zabbix-server เพิ่มเข้ากลุ่ม Linux servers และเพิ่ม interface แบบ Agent โดยใช้ IP 127.0.0.1 และ port 10050 ในส่วนของ Templates ให้เลือกเชื่อมต่อกับ Linux by Zabbix agent (ซึ่งเป็นรูปแบบ passive-poll ส่วน Linux by Zabbix agent active จะใช้การ push จาก agent แทน) จากนั้นกด Save

ภายใน 1 นาที แถวของ host จะแสดงป้ายกำกับ ZBX สีเขียว และข้อมูล metrics จะปรากฏขึ้นที่ Monitoring → Latest data หากแสดงป้ายกำกับ ZBX สีแดง หมายความว่า server ไม่สามารถติดต่อกับ agent ได้ ซึ่งเป็นข้อผิดพลาดที่จะอธิบายในหัวข้อถัดไป ไม่ใช่ความผิดพลาดจากขั้นตอนปัจจุบัน

Step 10 — One useful trigger and an email alert

Template Linux by Zabbix agent มี trigger สำหรับกรณี CPU สูง, memory ต่ำ และ disk เต็มมาให้แล้ว คุณจะได้รับ alert ทันทีที่เชื่อมต่อ template นี้ หากต้องการดูวิธีการสร้าง trigger ให้ลองสร้างด้วยตนเอง: เปิด host นั้นขึ้นมา ไปที่ Triggers → Create trigger, ตั้งชื่อว่า Root filesystem over 90% full on {HOST.NAME}, กำหนด severity เป็น High และใช้ expression ดังนี้:

last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90

vfs.fs.dependent.size[/,pused] คือ item ที่แสดงเปอร์เซ็นต์การใช้งานซึ่ง filesystem discovery ของ template สร้างขึ้นสำหรับ root filesystem (template Linux ของเวอร์ชัน 7.0 จะเก็บข้อมูล vfs.fs.get เพียงครั้งเดียวและนำไปคำนวณ item อื่นๆ ตามจุดที่ mount ไว้) ดังนั้น trigger นี้จะทำงานโดยไม่ต้องเก็บข้อมูลเพิ่มเติม ให้กด Save

Trigger จะเปลี่ยนสีแถวบน dashboard เท่านั้น จนกว่าจะมี action ส่งการแจ้งเตือนไปยังบุคคล ให้ไปที่ Alerts → Media types → Email เพื่อตั้งค่า SMTP server, port, sender address, connection security (โดยปกติคือ STARTTLS) และข้อมูลรับรองการเชื่อมต่อ (relay credentials) จากนั้นกด Test หากทดสอบไม่ผ่าน แสดงว่าเส้นทาง SMTP ไม่ถูกต้อง ซึ่งต้องแก้ไขก่อนที่จะเริ่มใช้งานการแจ้งเตือนจริง ให้กำหนดที่อยู่อีเมลให้ผู้ใช้ Admin ภายใต้ Users → Users → Admin → Media → Add และเลือก severity ที่ต้องการให้แจ้งเตือน จากนั้นตั้งค่าการทำงานภายใต้ Alerts → Actions → Trigger actions → Create action: เพิ่มเงื่อนไข เช่น Trigger severity >= Warning และในส่วน Operations ให้เลือกส่งไปยัง Admin ผ่านทาง Email ให้กด Save และเปิดใช้งาน (enable) หากต้องการใช้แชท Zabbix 7.0 มี webhook media types สำหรับ Slack, Discord และ Telegram ให้ใช้งาน โดยสามารถตั้งค่าได้เหมือนกับ Email และกำหนดให้ใช้งานกับผู้ใช้ที่ต้องการได้

การเฝ้าติดตามเซิร์ฟเวอร์เครื่องที่สองด้วย agent

หากต้องการเฝ้าติดตามเซิร์ฟเวอร์เครื่องอื่น ให้เพิ่ม Zabbix repository ในเครื่องนั้นด้วย เนื่องจาก Ubuntu 24.04 ไม่มีแพ็กเกจ Zabbix มาให้ในตัว จากนั้นให้ติดตั้งเฉพาะ agent:

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update
sudo apt install -y zabbix-agent2

แก้ไขไฟล์ /etc/zabbix/zabbix_agent2.conf โดยกำหนดค่า Server ให้เป็น IP ของ Zabbix server (สำหรับการดึงข้อมูลแบบ passive polling) และสำหรับการตรวจสอบแบบ active checks ให้กำหนดค่า ServerActive พร้อมกับ Hostname ที่ไม่ซ้ำกัน ซึ่งต้องตรงกับ host ที่คุณสร้างไว้ใน frontend:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

รันคำสั่ง sudo systemctl enable --now zabbix-agent2 และเปิดพอร์ต TCP 10050 จาก Zabbix server มายังเครื่องนี้ จากนั้นใน frontend ให้สร้าง host โดยกำหนด Agent interface ให้ชี้ไปยัง IP ของเครื่องดังกล่าว และเชื่อมต่อกับ Linux template ข้อมูลจะถูกรายงานภายในหนึ่งนาที

Failure modes, with the strings you will see

Frontend shows Error connecting to database or a database error. ในขั้นตอน DB ของ wizard หากพบ Access denied for user 'zabbix'@'localhost' (using password: YES) แสดงว่ารหัสผ่านไม่ตรงกับ Step 3 หรือไม่ได้รัน GRANT หากเชื่อมต่อฐานข้อมูลได้แต่ frontend แสดงผล The frontend does not match Zabbix database หรือ Table 'zabbix.users' doesn't exist แสดงว่าการ import schema ใน Step 4 ถูกข้ามไปหรือทำงานล้มเหลว ให้รันใหม่อีกครั้งโดยใช้ฐานข้อมูลที่สร้างขึ้นใหม่

Orange banner: Zabbix server is not running: the information displayed may not be current. Frontend ทำงานแล้วแต่ไม่สามารถเชื่อมต่อกับ server ได้ สาเหตุที่เป็นไปได้มี 3 ประการ โดยสาเหตุแรกมีความเป็นไปได้สูงสุด คือ service หยุดทำงาน ให้ตรวจสอบ systemctl status zabbix-server และเริ่มการทำงานใหม่ สาเหตุที่สองคือ service ทำงานแต่ไม่สามารถเชื่อมต่อกับ database ได้ โดย log จะแสดง [Z3001] connection to database 'zabbix' failed: [1045] Access denied ซึ่งหมายถึง DBPassword ไม่ถูกต้องหรือว่างเปล่า หรือสาเหตุสุดท้ายคือ frontend ชี้ไปยัง server ผิดเครื่อง ซึ่งถูกเก็บไว้ใน host localhost port 10051 ใน /etc/zabbix/web/zabbix.conf.php สำหรับ Ubuntu จะไม่มี SELinux โดยค่าเริ่มต้น ดังนั้นสาเหตุเรื่อง SELinux-socket ที่ระบุในคู่มือ RHEL จึงไม่เกี่ยวข้อง ในกรณีนี้ปัญหามักเกิดจากรหัสผ่านฐานข้อมูลหรือ service หยุดทำงาน

Host shows a red ZBX label; item error Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. agent ไม่ได้ทำงานหรือไม่ได้เปิดรับการเชื่อมต่อ ให้ตรวจสอบ systemctl status zabbix-agent2 และยืนยัน ListenPort=10050 หากพบข้อความ timeout แทนที่จะเป็น "connection refused" แสดงว่า firewall กำลังบล็อก port 10050 ส่วนข้อความ Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. ที่เกี่ยวข้อง หมายถึง agent สามารถติดต่อได้แต่ในบรรทัด Server= ไม่ได้ระบุ IP ของ Zabbix server ให้เพิ่ม IP ดังกล่าวและ restart agent

Plain nginx welcome page, or 502 Bad Gateway. หน้า welcome page หมายถึงยังมีการเปิดใช้งาน default site อยู่ หรือ Zabbix block ยังไม่ได้ถูกเชื่อมโยง ให้ลบ /etc/nginx/sites-enabled/default และตรวจสอบว่ามี /etc/nginx/conf.d/zabbix.conf อยู่จริงตามขั้นตอนใน Step 6 ส่วนข้อความ 502 หมายถึง nginx เชื่อมต่อกับ PHP ได้แล้ว แต่ PHP-FPM หยุดทำงานหรือกำลังฟัง (listening) อยู่ที่ socket อื่น ให้เริ่มการทำงานของ php8.3-fpm และตรวจสอบว่า socket fastcgi_pass ใน Zabbix block ตรงกับ pool ที่กำลังทำงานอยู่

Backups, upgrades, and TLS

ฐานข้อมูลคือประวัติทั้งหมด ดังนั้นควรสำรองข้อมูลด้วย mysqldump ตามกำหนดการ และเก็บไฟล์ dump ไว้ภายนอกเครื่อง:

mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gz

ไฟล์คอนฟิกของ /etc/zabbix มีขนาดเล็กและควรสำรองไว้เช่นกัน แต่สามารถสร้างใหม่ได้ ในขณะที่ข้อมูลไม่สามารถทำเช่นนั้นได้ ขั้นตอนการคืนค่าคือกระบวนการย้อนกลับ กล่าวคือ สร้างฐานข้อมูล, นำเข้าไฟล์ dump, และตั้งค่าคอนฟิกให้ชี้ไปยังฐานข้อมูลนั้น

การอัปเกรดภายในเวอร์ชัน 7.0 คือการรัน apt update && apt upgrade ตามปกติ โดยเซิร์ฟเวอร์จะดำเนินการ schema migrations เมื่อเริ่มระบบครั้งถัดไป ดังนั้นให้ทำการอัปเกรด packages และ restart zabbix-server การเปลี่ยนไปใช้เวอร์ชันหลัก (major line) ในอนาคตถือเป็นการดำเนินการที่ตั้งใจไว้ ให้ศึกษาบันทึกการอัปเกรด, ทำการ dump ฐานข้อมูลก่อน และเตรียมรับมือกับการเปลี่ยนแปลง schema แบบทางเดียว (one-way) สาเหตุที่ต้องใช้เวอร์ชัน LTS และใช้งานต่อเนื่องก็เพราะการเปลี่ยนแปลงแบบทางเดียวนี้นี่เอง

ห้ามปล่อยให้ frontend ใช้งานผ่าน HTTP ปกติ เมื่อ DNS ชี้มาที่เครื่องแล้ว ให้ติดตั้งใบรับรองด้วย Certbot and Let's Encrypt on nginx for Ubuntu 24.04 ซึ่งจะเขียน server block ใหม่เพื่อให้รับคำสั่งผ่านพอร์ต 443 และ redirect จากพอร์ต 80 ในขณะที่คุณกำลังปรับปรุงความปลอดภัยของเครื่องที่ใช้ล็อกอินเพื่อเฝ้าดูเซิร์ฟเวอร์เครื่องอื่น ควรล็อก SSH ของเครื่องนี้ด้วย fail2ban banning brute-force SSH attempts การล็อกอินเพื่อการตรวจสอบ (monitoring) ไม่ควรส่งข้อมูลแบบ cleartext และช่องทางเข้าหลักไม่ควรเปิดทิ้งไว้ให้ผู้ที่พยายามสุ่มรหัสผ่าน

FAQ

Do I need the Zabbix agent, or can I monitor without it?

Both work. The agent (agent2) gives rich per-host metrics — CPU, memory, disks, processes, services, log files — and is the normal choice for servers you control. Agentless monitoring covers devices where you cannot install software: SNMP for switches and printers, ICMP ping for reachability, HTTP checks for endpoints, IPMI for hardware health. Most real deployments mix the two.

Why does the frontend say the Zabbix server is not running?

The frontend works but cannot reach a live zabbix-server process. Usually the server started, failed to log in because DBPassword in zabbix_server.conf is wrong or blank, and dropped straight back out. Run systemctl status zabbix-server and read /var/log/zabbix/zabbix_server.log; a [Z3001] connection to database ... failed line confirms it. Fix the password and restart, and the banner clears within a minute.

Do I have to use MySQL, or can I use PostgreSQL?

Either is fully supported: zabbix-server-mysql with MariaDB or MySQL as this guide does, or zabbix-server-pgsql with PostgreSQL. For small installs the choice barely matters. For large ones, PostgreSQL with the TimescaleDB extension partitions the history tables and makes housekeeping far cheaper, which is why big sites lean toward it. Pick one and stay with it — migrating later means a full export and re-import, not a config switch.

How much RAM does a Zabbix all-in-one server need?

For one box monitoring a handful of hosts, 2 GB is a realistic floor and 4 GB is comfortable past a few dozen hosts; the memory goes mostly to the database cache and the server's pollers. A 1 GB VPS runs but starves the database as history grows. Beyond a hundred hosts, split the database onto its own server and tune its buffer pool rather than piling more RAM into one machine.

Is Zabbix overkill for a couple of servers?

It can be. If all you need is "is it up?" and a page you can share, a lighter tool like Uptime Kuma for uptime and status monitoring is faster to stand up and easier to read at a glance. Choose Zabbix when you want per-metric thresholds, historical graphs, templated hosts and escalation rules — the things a simple pinger cannot give you across a fleet.