วิธีติดตั้ง Zabbix 7.0 LTS บน Ubuntu 24.04 แบบละเอียด
คู่มือติดตั้ง Zabbix 7.0 LTS บน Ubuntu 24.04 ตั้งแต่การเพิ่ม repository การ import schema ฐานข้อมูล MySQL ไปจนถึงการตั้งค่า nginx และ zabbix-agent2 เพื่อแก้ไขข้อผิดพลาดที่พบบ่อย
สิ่งที่คุณกำลังสร้าง
คุณกำลังสร้าง VPS ที่ใช้ Ubuntu 24.04 เพียงเครื่องเดียวเพื่อรัน Zabbix 7.0 LTS stack ทั้งชุด ซึ่งประกอบด้วย daemon zabbix-server ที่ทำหน้าที่สำรวจข้อมูลและแจ้งเตือน, ฐานข้อมูล MariaDB/MySQL ที่จัดเก็บทุกตัวชี้วัด (metric), ส่วนติดต่อผู้ใช้ (frontend) แบบ PHP ที่ให้บริการผ่าน nginx และ zabbix-agent2 ที่ทำหน้าที่เก็บข้อมูลตัวชี้วัดจากตัวเครื่องเอง เมื่อติดตั้งเสร็จสิ้น คุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์เครื่องที่สอง, กำหนด template และรับอีเมลแจ้งเตือนทันทีเมื่อดิสก์เต็มหรือบริการหยุดทำงาน
Zabbix มีความซับซ้อนมากกว่าเครื่องมือทำ status-page ทั่วไป เนื่องจากเป็นระบบ time-series ที่แท้จริงซึ่งมาพร้อมกับ template, trigger, การยกระดับการแจ้งเตือน (escalation) และการเก็บรักษาประวัติข้อมูล ความยากลำบากเกือบทั้งหมดมักเกิดขึ้นใน 3 ขั้นตอนที่คนส่วนใหญ่มักข้ามไป ได้แก่ การนำเข้า schema ฐานข้อมูล, การตั้งรหัสผ่านฐานข้อมูลที่เซิร์ฟเวอร์อ่านค่าได้จริง และการยกเลิกการคอมเมนต์สองบรรทัดในไฟล์ config ของ nginx หากทำขั้นตอนเหล่านี้ถูกต้อง ส่วนที่เหลือจะเป็นเรื่องง่าย หากคุณต้องการเพียงแค่การตรวจสอบสถานะ up/down และหน้า status page ที่แชร์ได้ เครื่องมือตรวจสอบสถานะ Uptime Kuma ซึ่งมีน้ำหนักเบากว่าสามารถทำหน้าที่นั้นได้ใน container เดียว แต่ Zabbix จะคุ้มค่ากับทรัพยากรที่ใช้เมื่อคุณต้องการกำหนดเกณฑ์สำหรับแต่ละตัวชี้วัดและการแจ้งเตือนแบบยกระดับครอบคลุมหลายโฮสต์
ให้ใช้ Zabbix รุ่น 7.0 LTS เนื่องจาก server, frontend, agent2 และ schema มีเวอร์ชันที่สอดคล้องกันและได้รับการแก้ไขช่องโหว่ด้านความปลอดภัยเป็นเวลาหลายปี ก่อนที่จะคัดลอกชื่อไฟล์ repository ด้านล่าง ให้ตรวจสอบหน้าดาวน์โหลดอย่างเป็นทางการของ Zabbix โดยแพ็กเกจรุ่น latest จะอ้างอิงไปยังรุ่นย่อยล่าสุดของ 7.0 เสมอ แต่หากคุณต้องการระบุเวอร์ชัน 7.0-N ที่แน่นอน หน้าเว็บดังกล่าวก็มีชื่อไฟล์ระบุไว้เช่นกัน คำสั่งอื่นๆ ทั้งหมดในที่นี้มีความเสถียรและใช้งานได้กับ Zabbix 7.0 ทุกรุ่นย่อย
การกำหนดขนาด พอร์ต และข้อกำหนดเบื้องต้น
สมมติว่าคุณใช้ Ubuntu 24.04 KVM VPS ใหม่ที่มีสิทธิ์ root หรือ sudo สำหรับทรัพยากรที่จำเป็นนั้น ควรพิจารณาตามความเป็นจริง: RAM ขนาด 2 GB และ 2 vCPU คือเกณฑ์ขั้นต่ำที่ใช้งานได้จริงสำหรับการรันเซิร์ฟเวอร์, ฐานข้อมูล, Nginx และ PHP บนเครื่องเดียวกันเพื่อตรวจสอบโฮสต์จำนวนหนึ่ง เครื่องที่มี RAM 1 GB สามารถบูตได้ แต่ฐานข้อมูลจะขาดแคลนทรัพยากรเมื่อประวัติข้อมูลเพิ่มขึ้น ควรวางแผนใช้ RAM 4 GB หากมีโฮสต์มากกว่าสองสามโหล และหากเกินหนึ่งร้อยโฮสต์ ควรแยกฐานข้อมูลไปไว้บนเซิร์ฟเวอร์ต่างหาก พื้นที่ดิสก์จะเพิ่มขึ้นตามจำนวนรายการที่คุณจัดเก็บและระยะเวลาที่เก็บประวัติข้อมูล ให้เตรียมพื้นที่ไว้สองสามกิกะไบต์ในช่วงเริ่มต้น โดยระบบ housekeeper จะทำหน้าที่ลบข้อมูลเก่าตามระยะเวลา retention ที่คุณกำหนด
พอร์ต: พอร์ต 80 และ 443 สำหรับส่วนหน้า (frontend) ซึ่งสามารถเปิดเป็นสาธารณะหรือจำกัดเฉพาะ IP ของคุณ เซิร์ฟเวอร์จะฟังที่ TCP 10051 สำหรับ active agent ที่ส่งข้อมูลเข้ามา และ agent แต่ละตัวจะฟังที่ TCP 10050 สำหรับเซิร์ฟเวอร์ที่เข้ามาดึงข้อมูล (polling) หากมีไฟร์วอลล์อยู่ด้านหน้า ให้เปิดเฉพาะพอร์ตที่จำเป็นต้องใช้งานเท่านั้น การมี DNS A record สำหรับส่วนหน้าเป็นสิ่งที่ควรทำ เพราะคุณจะต้องใช้ certificate จริงสำหรับบริการนี้ เนื่องจาก Zabbix จะทำหน้าที่ตรวจสอบทุกบริการที่คุณรันอยู่ จึงควรจัดให้มันอยู่ใน กลุ่มบริการ self-hosting ที่ควรใช้งานในปี 2026 แทนที่จะติดตั้งเพิ่มเข้าไปภายหลังโดยไม่ได้วางแผน
ขั้นตอนที่ 1 เพิ่ม repository อย่างเป็นทางการของ Zabbix 7.0
แพ็กเกจ zabbix-release ทำหน้าที่เพียงอย่างเดียวคือการเพิ่ม apt source list และ signing key ลงในระบบของคุณ ให้ติดตั้งแพ็กเกจนี้แล้วรีเฟรชดัชนีแพ็กเกจ
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 แสดงว่าแพ็กเกจรุ่นดังกล่าวไม่ได้ติดตั้ง key มาให้ ให้รันคำสั่ง dpkg -i อีกครั้งแล้วอัปเดตใหม่
ขั้นตอนที่ 2 ติดตั้งเซิร์ฟเวอร์, ส่วนติดต่อผู้ใช้ (frontend) และเอเจนต์
ติดตั้งเซิร์ฟเวอร์ที่คอมไพล์สำหรับ MySQL, ส่วนติดต่อผู้ใช้ด้วย PHP, การตั้งค่า nginx, ไฟล์โครงสร้างฐานข้อมูล SQL และ agent2 ในคราวเดียว
sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2zabbix-server-mysql คือเซิร์ฟเวอร์ที่คอมไพล์สำหรับ MySQL/MariaDB หากใช้ PostgreSQL ให้ติดตั้ง zabbix-server-pgsql แทนและปรับขั้นตอนการตั้งค่าฐานข้อมูลด้านล่าง zabbix-sql-scripts ประกอบด้วยโครงสร้างฐานข้อมูลที่คุณต้องนำเข้าในขั้นตอนถัดไป ซึ่งเป็นแพ็กเกจแยกต่างหากในเวอร์ชัน 7.0 หากลืมติดตั้งแพ็กเกจนี้จะเป็นสาเหตุที่ทำให้หา path สำหรับการนำเข้าไม่พบในภายหลัง แพ็กเกจเหล่านี้ไม่ได้ติดตั้งโปรแกรมจัดการฐานข้อมูลมาให้ ดังนั้นหากเครื่องของคุณยังไม่มี MariaDB ให้ติดตั้งในขั้นตอนนี้
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadbขั้นตอนที่ 3 สร้างฐานข้อมูลด้วยชุดอักขระที่ถูกต้อง
Zabbix มีข้อกำหนดที่เข้มงวดเรื่อง collation โดยฐานข้อมูลต้องเป็น utf8mb4 ร่วมกับ utf8mb4_bin มิฉะนั้นการนำเข้าข้อมูลจะล้มเหลวระหว่างทางพร้อมข้อผิดพลาดเกี่ยวกับ foreign-key ให้เปิด 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 ทำหน้าที่เป็นกลไกป้องกันสำหรับการนำเข้าข้อมูล เนื่องจาก schema ของ Zabbix มีการสร้าง stored functions ซึ่งบัญชีผู้ใช้ที่ไม่ใช่ SUPER อย่าง zabbix จะไม่สามารถสร้างฟังก์ชันเหล่านี้ได้ในขณะที่ binary logging เปิดใช้งานอยู่ โดย MySQL 8 จะเปิด binary logging เป็นค่าเริ่มต้น รวมถึง MariaDB บางเวอร์ชันที่จัดการโดยผู้ให้บริการ (แต่ MariaDB รุ่นมาตรฐานจะไม่เปิด) หากข้ามการตั้งค่า flag นี้บนเซิร์ฟเวอร์ที่เปิด binary logging ไว้ การนำเข้าข้อมูลจะหยุดทำงานพร้อมข้อผิดพลาด ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled การตั้งค่านี้ในฐานะ root จะช่วยแก้ไขปัญหาดังกล่าวได้ โดยคุณสามารถปิดการตั้งค่านี้คืนได้หลังจากการนำเข้าเสร็จสิ้น โปรดบันทึกรหัสผ่านให้ถูกต้องแม่นยำ เนื่องจากไฟล์ config ของเซิร์ฟเวอร์จำเป็นต้องใช้สตริงเดียวกันทุกประการ
ขั้นตอนที่ 4 การนำเข้าสคีมา (ขั้นตอนที่คนมักข้าม)
นี่คือสาเหตุที่พบบ่อยที่สุดที่ทำให้ frontend ที่ติดตั้งใหม่ไม่สามารถโหลดขึ้นมาได้ นั่นคือฐานข้อมูลที่คุณสร้างขึ้นยังว่างเปล่าอยู่ ให้โหลดสคีมาที่มาพร้อมกับ 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 หมายความว่าแพ็กเกจ zabbix-sql-scripts ยังไม่ได้ติดตั้ง (ให้ย้อนกลับไปที่ขั้นตอนที่ 2) ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' หมายความว่ารหัสผ่านหรือสิทธิ์ที่กำหนดในขั้นตอนที่ 3 ไม่ถูกต้อง เมื่อเสร็จสิ้นแล้ว ให้ปิดแฟล็กความปลอดภัยกลับไปดังเดิม:
sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"ยืนยันการโหลดด้วย sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" หากได้ผลลัพธ์เป็นตัวเลขไม่ใช่ข้อความแจ้งข้อผิดพลาด doesn't exist แสดงว่าสคีมาถูกนำเข้าเรียบร้อยแล้ว
ขั้นตอนที่ 5 ตั้งค่ารหัสผ่านฐานข้อมูลใน zabbix_server.conf
เซิร์ฟเวอร์จะอ่านข้อมูลรับรองฐานข้อมูลจาก /etc/zabbix/zabbix_server.conf คุณจำเป็นต้องตั้งค่าเพียงรหัสผ่านเท่านั้น เนื่องจาก DBName และ DBUser ถูกตั้งค่าเริ่มต้นเป็น zabbix ไว้แล้ว ให้เอาเครื่องหมายคอมเมนต์หน้าบรรทัด # DBPassword= ออกและตั้งค่าดังนี้:
DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-passwordรหัสผ่านต้องตรงกับที่ตั้งไว้ในขั้นตอนที่ 3 ทุกประการ การปล่อย DBPassword ว่างไว้หรือใส่รหัสผ่านผิดเป็นสาเหตุหลักที่ทำให้เกิดแถบข้อความ "Zabbix server is not running" ในภายหลัง เนื่องจาก daemon เริ่มทำงานแต่ไม่สามารถล็อกอินเข้าฐานข้อมูลได้จึงหยุดการทำงานไป โดยไม่มีข้อความแจ้งเตือนบนหน้าจอ มีเพียง log เท่านั้นที่บันทึกสาเหตุไว้
ขั้นตอนที่ 6, กำหนดค่า nginx ให้ชี้ไปยัง frontend
แพ็กเกจ zabbix-nginx-conf จะติดตั้ง server block ไว้ที่ /etc/zabbix/nginx.conf และสร้างลิงก์ไปยัง nginx จาก /etc/nginx/conf.d/zabbix.conf แต่ค่าเริ่มต้นจะคอมเมนต์บรรทัด listen และ server_name ไว้ ทำให้ nginx ไม่แสดงผลหน้าเว็บสำหรับ Zabbix จนกว่าคุณจะแก้ไขบรรทัดเหล่านี้:
server {
listen 80;
server_name zabbix.example.com;
...
}ให้ใช้ชื่อโดเมนของคุณ หรือใช้ public IP ของเซิร์ฟเวอร์หากคุณยังไม่มี DNS มีข้อควรระวังสองประการ ประการแรก เว็บไซต์ต้อนรับเริ่มต้นของ nginx บน Ubuntu จะฟังพอร์ต 80 และถูกกำหนดเป็น default server ทำให้มันแสดงผลแทนสำหรับทุกคำขอที่ไม่ตรงกับชื่อโดเมนอื่น คุณต้องลบไฟล์นี้ออกเพื่อป้องกันการแสดงหน้าเว็บที่ไม่ถูกต้อง: sudo rm -f /etc/nginx/sites-enabled/default ประการที่สอง หาก /etc/nginx/conf.d/zabbix.conf หายไป (ซึ่งเป็นปัญหาที่พบได้ในบางแพ็กเกจ) ให้สร้างลิงก์ด้วยตนเองโดยใช้ sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf จากนั้นทดสอบและโหลดการตั้งค่าใหม่:
sudo nginx -t
sudo systemctl reload nginxnginx -t ควรแสดงผลเป็น test is successful หากแสดงผลเป็น nginx: [emerg] a duplicate default server for 0.0.0.0:80 แสดงว่าทั้งเว็บไซต์เริ่มต้นและบล็อกของ Zabbix ต่างอ้างสิทธิ์เป็น default_server ให้ลบเว็บไซต์เริ่มต้นออกแล้วทดสอบใหม่ บ่อยครั้งที่การทดสอบผ่านโดยมีเพียงคำเตือน conflicting server name แต่เบราว์เซอร์ยังคงแสดงหน้าเว็บต้อนรับเริ่มต้น นั่นหมายความว่าเว็บไซต์เริ่มต้นยังคงทำงานอยู่เนื่องจากชื่อโดเมนไม่ตรงกัน การลบไฟล์ดังกล่าวจะช่วยแก้ไขปัญหานี้ได้
ขั้นตอนที่ 7 การเริ่มและเปิดใช้งานบริการ
เริ่มการทำงานของ server, agent, PHP-FPM และ nginx พร้อมทั้งตั้งค่าให้เปิดใช้งานโดยอัตโนมัติเมื่อรีบูตเครื่อง
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpmUbuntu 24.04 มาพร้อมกับ PHP 8.3 ดังนั้นบริการ FPM จึงใช้ชื่อ php8.3-fpm ส่วนแพ็กเกจ zabbix-nginx-conf จะรันส่วนหน้า (frontend) ภายใต้ master เดียวกัน ตรวจสอบว่า server เริ่มทำงานและยังคงสถานะรันอยู่:
sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.loglog ที่ปกติจะลงท้ายด้วยการที่ server เริ่มทำงานและมีกระบวนการ housekeeper, poller และ trapper รันอยู่ หากคุณพบข้อความ [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' แสดงว่า DBPassword จากขั้นตอนที่ 5 ไม่ตรงกัน ให้แก้ไขให้ถูกต้องแล้วเริ่มบริการใหม่ หากพบข้อความ [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist แสดงว่าคุณข้ามขั้นตอนการนำเข้า schema ในขั้นตอนที่ 4 ทำให้ server ไม่มีข้อมูลให้อ่าน
ขั้นตอนที่ 8, ดำเนินการติดตั้งผ่านเว็บวิซาร์ดให้เสร็จสิ้น
ไปที่ http://your-domain-or-ip วิซาร์ดการติดตั้ง Zabbix จะเปิดขึ้น ให้ดำเนินการตามขั้นตอนดังนี้:
- Welcome (ยินดีต้อนรับ), เลือกภาษาที่ต้องการ
- Check of pre-requisites (ตรวจสอบข้อกำหนดเบื้องต้น), ทุกรายการควรแสดงสถานะ OK โดยไม่ต้องตั้งค่าเพิ่มเติม เนื่องจาก
/etc/zabbix/php-fpm.confpool ที่มาพร้อมกับแพ็กเกจได้ปรับค่าขีดจำกัดของ PHP ตามที่ Zabbix ต้องการไว้แล้ว - Configure DB connection (กำหนดค่าการเชื่อมต่อฐานข้อมูล), เลือกประเภทฐานข้อมูลเป็น MySQL, host คือ
localhost, port คือ0(หมายถึงพอร์ตหรือซ็อกเก็ตค่าเริ่มต้น), ชื่อฐานข้อมูลคือzabbix, ผู้ใช้งานคือzabbixและใช้รหัสผ่านจากขั้นตอนที่ 3 หากข้อมูลรับรองไม่ถูกต้องหรือไม่มีสคีมา ระบบจะแจ้งเตือนในขั้นตอนนี้ - Settings (การตั้งค่า), คงค่า Zabbix server host เป็น
localhost, port เป็น10051และตั้งชื่อการติดตั้งนี้ - Pre-installation summary (สรุปก่อนการติดตั้ง), จากนั้นกด Install (ติดตั้ง) วิซาร์ดจะทำการเขียนไฟล์
/etc/zabbix/web/zabbix.conf.php - Finish (เสร็จสิ้น), เข้าสู่ระบบด้วยชื่อ
Admin(ตัว A พิมพ์ใหญ่) และรหัสผ่านzabbixจากนั้นให้เปลี่ยนรหัสผ่านทันทีในเมนู Users (ผู้ใช้งาน)
หากวิซาร์ดแจ้งเตือนว่า Cannot create the configuration file แสดงว่าผู้ใช้งานเว็บไม่สามารถเขียนไฟล์ลงใน /etc/zabbix/web/ ได้ ให้ดาวน์โหลดไฟล์ zabbix.conf.php ที่วิซาร์ดเตรียมไว้ให้ แล้วนำไปวางในตำแหน่งดังกล่าวด้วยตนเองโดยใช้คำสั่ง sudo จากนั้นจึงคลิก Finish (เสร็จสิ้น)
ขั้นตอนที่ 9 เพิ่ม local host และแนบเทมเพลต
Zabbix จะไม่ตรวจสอบตัวเองโดยอัตโนมัติ ให้ไปที่ Data collection → Hosts → Create host กำหนดชื่อโฮสต์เป็น zabbix-server เพิ่มโฮสต์ลงในกลุ่ม Linux servers และเพิ่มอินเทอร์เฟซแบบ Agent โดยระบุ IP เป็น 127.0.0.1 และพอร์ตเป็น 10050 ในส่วนของ Templates ให้เชื่อมโยงกับ Linux by Zabbix agent (ซึ่งเป็นรูปแบบ passive-poll ส่วน Linux by Zabbix agent active จะเป็นการที่ agent เป็นฝ่ายส่งข้อมูลเข้ามาเอง) จากนั้นกดบันทึก
ภายในเวลา 1 นาที แถวของโฮสต์จะแสดงป้ายกำกับ ZBX สีเขียว และข้อมูลเมตริกจะเริ่มปรากฏใน Monitoring → Latest data หากป้ายกำกับ ZBX เป็นสีแดง แสดงว่าเซิร์ฟเวอร์ไม่สามารถติดต่อกับ agent ได้ ซึ่งเป็นรูปแบบความล้มเหลวที่จะกล่าวถึงในหัวข้อถัดไป ไม่ใช่ข้อผิดพลาดในขั้นตอนนี้
ขั้นตอนที่ 10, ทริกเกอร์ที่มีประโยชน์และการแจ้งเตือนทางอีเมล
เทมเพลต Linux by Zabbix agent มีทริกเกอร์สำหรับการใช้งาน CPU สูง, หน่วยความจำเหลือน้อย และดิสก์เต็มมาให้พร้อมใช้งานอยู่แล้ว ดังนั้นคุณจะได้รับการแจ้งเตือนทันทีที่เชื่อมโยงเทมเพลตนี้ เพื่อดูวิธีการสร้างทริกเกอร์ ให้ลองเพิ่มทริกเกอร์ของคุณเอง: เปิดโฮสต์ไปที่ Triggers → Create trigger, ตั้งชื่อว่า Root filesystem over 90% full on {HOST.NAME}, กำหนดระดับความรุนแรงเป็น High, และใช้นิพจน์นี้:
last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90vfs.fs.dependent.size[/,pused] คือไอเทมเปอร์เซ็นต์การใช้งานที่ระบบค้นหาไฟล์ระบบ (filesystem discovery) ของเทมเพลตสร้างขึ้นสำหรับ root filesystem (เทมเพลต Linux ของเวอร์ชัน 7.0 จะเก็บข้อมูล vfs.fs.get เพียงครั้งเดียวแล้วคำนวณไอเทมย่อยแยกตาม mount point) ดังนั้นทริกเกอร์จะทำงานโดยไม่ต้องเก็บข้อมูลเพิ่มเติม ให้บันทึกการตั้งค่า
ทริกเกอร์จะทำหน้าที่เพียงเปลี่ยนสีแถวบนแดชบอร์ดจนกว่าจะมี action แจ้งเตือนไปยังบุคคลที่เกี่ยวข้อง ภายใต้เมนู Alerts → Media types → Email ให้กำหนดค่า SMTP server, port, ที่อยู่อีเมลผู้ส่ง, ความปลอดภัยในการเชื่อมต่อ (โดยปกติคือ STARTTLS) และข้อมูลรับรองการใช้งาน relay จากนั้นใช้ปุ่ม Test หากการทดสอบล้มเหลวแสดงว่าเส้นทาง SMTP ไม่ถูกต้องก่อนที่จะมีการแจ้งเตือนจริงเกิดขึ้น กำหนดที่อยู่อีเมลให้กับผู้ใช้ Admin ภายใต้ Users → Users → Admin → Media → Add และเลือกระดับความรุนแรงที่ต้องการให้แจ้งเตือน จากนั้นเชื่อมโยงการทำงานภายใต้ Alerts → Actions → Trigger actions → Create action: เพิ่มเงื่อนไขเช่น Trigger severity >= Warning และภายใต้ส่วน Operations ให้เลือกส่งไปยัง Admin ผ่านทาง Email จากนั้นบันทึกและเปิดใช้งาน หากต้องการใช้แชท Zabbix 7.0 มี webhook media types สำหรับ Slack, Discord และ Telegram มาให้ ให้กำหนดค่าเหมือนกับ Email และกำหนดให้กับผู้ใช้ได้เลย
การตรวจสอบเซิร์ฟเวอร์เครื่องที่สองด้วยเอเจนต์
หากต้องการตรวจสอบเซิร์ฟเวอร์เครื่องอื่น ให้เพิ่ม Zabbix repository ลงในเครื่องนั้นด้วย เนื่องจาก Ubuntu 24.04 ไม่ได้มาพร้อมกับแพ็กเกจ Zabbix ในตัว จากนั้นให้ติดตั้งเฉพาะเอเจนต์:
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 ที่ไม่ซ้ำกันซึ่งต้องตรงกับชื่อโฮสต์ที่คุณสร้างไว้ในหน้าเว็บอินเทอร์เฟซ:
Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01รันคำสั่ง sudo systemctl enable --now zabbix-agent2 และเปิดพอร์ต TCP 10050 จาก Zabbix server มายังเครื่องนี้ กลับไปที่หน้าเว็บอินเทอร์เฟซเพื่อสร้างโฮสต์โดยระบุ Agent interface ให้ชี้ไปยัง IP ของเครื่องดังกล่าว จากนั้นเชื่อมโยงกับ Linux template แล้วระบบจะเริ่มรายงานผลภายในหนึ่งนาที
รูปแบบความล้มเหลวและข้อความที่คุณจะพบ
หน้าเว็บส่วนหน้าแสดง Error connecting to database หรือข้อผิดพลาดเกี่ยวกับฐานข้อมูล ในขั้นตอนการตั้งค่าฐานข้อมูลของวิซาร์ด ข้อความ Access denied for user 'zabbix'@'localhost' (using password: YES) หมายความว่ารหัสผ่านไม่ตรงกับขั้นตอนที่ 3 หรือ GRANT ยังไม่เคยถูกรัน หากฐานข้อมูลเชื่อมต่อได้แต่หน้าเว็บรายงาน The frontend does not match Zabbix database หรือ Table 'zabbix.users' doesn't exist แสดงว่าการนำเข้าสคีมาในขั้นตอนที่ 4 ถูกข้ามไปหรือล้มเหลว ให้รันการนำเข้าใหม่อีกครั้งลงในฐานข้อมูลที่สร้างขึ้นใหม่
แถบสีส้ม: Zabbix server is not running: the information displayed may not be current หน้าเว็บส่วนหน้าทำงานอยู่แต่ไม่สามารถติดต่อเซิร์ฟเวอร์หลักได้ มีสาเหตุที่เป็นไปได้ 3 ประการ โดยเรียงตามความน่าจะเป็นสูงสุด ประการแรกคือเซอร์วิสหยุดทำงาน ให้ตรวจสอบ systemctl status zabbix-server และเริ่มการทำงานใหม่ ประการที่สองคือเซอร์วิสทำงานอยู่แต่ไม่สามารถติดต่อฐานข้อมูลได้ โดยใน log จะแสดง [Z3001] connection to database 'zabbix' failed: [1045] Access denied ซึ่งหมายถึง DBPassword ไม่ถูกต้องหรือเป็นค่าว่าง ประการสุดท้ายคือหน้าเว็บส่วนหน้าชี้ไปยังเซิร์ฟเวอร์ผิดตัว ซึ่งถูกเก็บไว้เป็น host localhost พอร์ต 10051 ในไฟล์ /etc/zabbix/web/zabbix.conf.php สำหรับ Ubuntu จะไม่มี SELinux โดยค่าเริ่มต้น ดังนั้นสาเหตุเรื่อง SELinux-socket ที่ระบุในคู่มือของ RHEL จึงไม่เกี่ยวข้อง ในกรณีนี้มักเกิดจากรหัสผ่านฐานข้อมูลผิดหรือเซอร์วิสไม่ได้ทำงาน
โฮสต์แสดงป้ายสีแดง ZBX; ข้อผิดพลาดของรายการ Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused เอเจนต์ไม่ได้ทำงานหรือไม่ได้เปิดพอร์ตรับการเชื่อมต่อ ให้ตรวจสอบ systemctl status zabbix-agent2 และยืนยันสถานะ ListenPort=10050 หากพบข้อความ timeout แทนที่จะเป็น "connection refused" แสดงว่าไฟร์วอลล์กำลังบล็อกพอร์ต 10050 ข้อความ Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. ที่เกี่ยวข้องหมายความว่าเอเจนต์สามารถติดต่อได้ แต่บรรทัด Server= ไม่ได้ระบุ IP ของ Zabbix server ให้เพิ่ม IP ลงไปแล้วรีสตาร์ทเอเจนต์
หน้าต้อนรับเริ่มต้นของ nginx หรือ 502 Bad Gateway หน้าต้อนรับหมายความว่าเว็บไซต์เริ่มต้น (default site) ยังคงเปิดใช้งานอยู่หรือบล็อกของ Zabbix ยังไม่ได้ถูกเชื่อมโยง ให้ลบ /etc/nginx/sites-enabled/default ออกและตรวจสอบว่า /etc/nginx/conf.d/zabbix.conf มีอยู่จริงตามขั้นตอนที่ 6 ข้อความ 502 หมายความว่า nginx ติดต่อ PHP ได้แล้วแต่ PHP-FPM หยุดทำงานหรือกำลังฟังบน socket อื่น ให้เริ่มการทำงานของ php8.3-fpm และตรวจสอบว่า socket fastcgi_pass ในบล็อกของ Zabbix ตรงกับ pool ที่กำลังทำงานอยู่
การสำรองข้อมูล การอัปเกรด และ TLS
ฐานข้อมูลคือประวัติทั้งหมดของระบบ ดังนั้นให้สำรองข้อมูลด้วย mysqldump ตามกำหนดเวลาและเก็บไฟล์ดัมพ์ไว้นอกเซิร์ฟเวอร์:
mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gzไฟล์คอนฟิกของ /etc/zabbix มีขนาดเล็กและควรสำรองไว้เช่นกัน แต่ไฟล์เหล่านี้สามารถสร้างใหม่ได้ ในขณะที่ข้อมูลไม่สามารถกู้คืนได้หากสูญหาย การกู้คืนข้อมูลทำได้โดยการย้อนขั้นตอน คือสร้างฐานข้อมูลใหม่ นำเข้าไฟล์ดัมพ์ และตั้งค่าคอนฟิกให้ชี้ไปยังฐานข้อมูลนั้น
การอัปเกรดภายในสายการพัฒนา 7.0 เป็นการรัน apt update && apt upgrade ตามปกติ โดยเซิร์ฟเวอร์จะทำการปรับปรุง schema (schema migrations) ในการเริ่มทำงานครั้งถัดไป ดังนั้นให้ทำการอัปเกรดแพ็กเกจและรีสตาร์ท zabbix-server สำหรับการเปลี่ยนเวอร์ชันหลักในอนาคตถือเป็นการตัดสินใจที่สำคัญ โปรดอ่านบันทึกการอัปเกรด ดัมพ์ฐานข้อมูลก่อนเริ่ม และเตรียมรับมือกับการเปลี่ยนแปลง schema แบบทางเดียว (one-way) ซึ่งการเปลี่ยนแปลงแบบทางเดียวนี้เองคือเหตุผลที่คุณควรล็อกเวอร์ชันไว้ที่สาย LTS และใช้งานในสายนั้นต่อไป
อย่าปล่อยให้หน้าเว็บส่วนหน้า (frontend) ทำงานบน HTTP ปกติ เมื่อ DNS ชี้มาที่เซิร์ฟเวอร์แล้ว ให้ติดตั้งใบรับรองด้วย Certbot และ Let's Encrypt บน nginx สำหรับ Ubuntu 24.04 ซึ่งจะเขียนไฟล์ server block ใหม่เพื่อให้ฟังพอร์ต 443 และเปลี่ยนเส้นทางจากพอร์ต 80 ในขณะที่คุณกำลังเพิ่มความปลอดภัยให้กับเซิร์ฟเวอร์ที่ใช้ล็อกอินเพื่อตรวจสอบเซิร์ฟเวอร์อื่นทั้งหมดที่คุณดูแลอยู่ ให้จำกัดสิทธิ์ SSH ด้วย fail2ban เพื่อแบนการพยายามเดารหัสผ่าน SSH ข้อมูลการล็อกอินเพื่อตรวจสอบระบบไม่ควรส่งผ่านในรูปแบบข้อความธรรมดา (cleartext) และประตูหน้าของระบบไม่ควรเปิดทิ้งไว้ให้ผู้ที่พยายามเดารหัสผ่านเข้ามาได้
FAQ
ฉันจำเป็นต้องใช้ Zabbix agent หรือไม่ หรือสามารถตรวจสอบโดยไม่มีมันได้?
ทำได้ทั้งสองวิธี ตัว agent (agent2) ให้ข้อมูลเชิงลึกรายโฮสต์ เช่น CPU, หน่วยความจำ, ดิสก์, กระบวนการทำงาน, บริการ และไฟล์ log ซึ่งเป็นตัวเลือกปกติสำหรับเซิร์ฟเวอร์ที่คุณดูแลเอง ส่วนการตรวจสอบแบบไร้ agent (agentless) จะครอบคลุมอุปกรณ์ที่คุณไม่สามารถติดตั้งซอฟต์แวร์ได้ เช่น SNMP สำหรับสวิตช์และเครื่องพิมพ์, ICMP ping สำหรับตรวจสอบการเข้าถึง, HTTP checks สำหรับ endpoint และ IPMI สำหรับสถานะฮาร์ดแวร์ การใช้งานจริงส่วนใหญ่จะผสมผสานทั้งสองวิธีเข้าด้วยกัน
ทำไมหน้าเว็บ frontend ถึงแจ้งว่า Zabbix server ไม่ทำงาน?
หน้าเว็บ frontend ทำงานได้ปกติแต่ไม่สามารถเชื่อมต่อกับกระบวนการ zabbix-server ที่กำลังทำงานอยู่ได้ โดยปกติแล้วเซิร์ฟเวอร์อาจเริ่มทำงานแล้ว แต่ล้มเหลวในการล็อกอินเนื่องจาก DBPassword ใน zabbix_server.conf ไม่ถูกต้องหรือว่างเปล่า ทำให้กระบวนการหยุดทำงานทันที ให้รันคำสั่ง systemctl status zabbix-server และอ่านไฟล์ /var/log/zabbix/zabbix_server.log โดยบรรทัดที่มี [Z3001] connection to database ... failed จะช่วยยืนยันสาเหตุได้ ให้แก้ไขรหัสผ่านและเริ่มบริการใหม่ ข้อความแจ้งเตือนจะหายไปภายในหนึ่งนาที
ฉันต้องใช้ MySQL หรือสามารถใช้ PostgreSQL ได้?
รองรับทั้งสองอย่างเต็มรูปแบบ: zabbix-server-mysql กับ MariaDB หรือ MySQL ตามที่คู่มือนี้แนะนำ หรือ zabbix-server-pgsql กับ PostgreSQL สำหรับการติดตั้งขนาดเล็ก ตัวเลือกนี้แทบไม่มีผลต่างกัน สำหรับการติดตั้งขนาดใหญ่ PostgreSQL ที่ใช้ส่วนขยาย TimescaleDB จะช่วยแบ่งพาร์ทิชันตารางประวัติข้อมูล ทำให้การจัดการข้อมูล (housekeeping) มีประสิทธิภาพสูงขึ้นมาก ซึ่งเป็นเหตุผลที่ไซต์ขนาดใหญ่เลือกใช้ ให้เลือกอย่างใดอย่างหนึ่งและใช้ต่อไป เพราะการย้ายฐานข้อมูลในภายหลังต้องทำผ่านการ export และ re-import ข้อมูลทั้งหมด ไม่ใช่แค่การเปลี่ยนค่า config
Zabbix all-in-one server ต้องการ RAM เท่าไหร่?
สำหรับเซิร์ฟเวอร์ที่ตรวจสอบโฮสต์จำนวนไม่กี่เครื่อง RAM ขนาด 2 GB คือขั้นต่ำที่ใช้งานได้จริง และ 4 GB จะช่วยให้ทำงานได้อย่างราบรื่นเมื่อมีโฮสต์เกินกว่าหลักสิบเครื่อง หน่วยความจำส่วนใหญ่จะถูกใช้ไปกับ database cache และตัว pollers ของเซิร์ฟเวอร์ VPS ขนาด 1 GB สามารถทำงานได้แต่จะทำให้ฐานข้อมูลขาดแคลนทรัพยากรเมื่อประวัติข้อมูลเพิ่มขึ้น หากมีโฮสต์เกินกว่าหนึ่งร้อยเครื่อง ให้แยกฐานข้อมูลไปไว้บนเซิร์ฟเวอร์ต่างหากและปรับแต่ง buffer pool แทนการเพิ่ม RAM เข้าไปในเครื่องเดียว
Zabbix เกินความจำเป็นสำหรับเซิร์ฟเวอร์เพียงไม่กี่เครื่องหรือไม่?
อาจจะเป็นเช่นนั้น หากสิ่งที่คุณต้องการเพียงแค่ตรวจสอบว่า "เซิร์ฟเวอร์ยังทำงานอยู่หรือไม่" และต้องการหน้าเว็บที่แชร์ได้ เครื่องมือที่มีน้ำหนักเบากว่าอย่าง Uptime Kuma สำหรับการตรวจสอบสถานะ uptime จะติดตั้งได้เร็วกว่าและดูสถานะได้ง่ายกว่าในทันที ให้เลือกใช้ Zabbix เมื่อคุณต้องการกำหนดเกณฑ์สำหรับตัวชี้วัดรายตัว, กราฟประวัติข้อมูล, การใช้ template สำหรับโฮสต์ และกฎการแจ้งเตือนแบบลำดับขั้น ซึ่งเป็นสิ่งที่เครื่องมือ ping ทั่วไปไม่สามารถมอบให้ได้เมื่อต้องดูแลเซิร์ฟเวอร์จำนวนมาก