SSD Nodes Learn
Mga Gabay Matt ConnorNi Matt Connor · Na-update 2026-07-24

Paano mag-install ng Zabbix 7.0 sa Ubuntu 24.04

Step-by-step guide para sa Zabbix 7.0 LTS sa Ubuntu 24.04. Matutunan ang pag-setup ng MySQL schema, nginx frontend, at agent2 nang walang error sa config.

Ang iyong bubuuin

Isang Ubuntu 24.04 VPS na nagpapatakbo ng buong Zabbix 7.0 LTS stack: ang zabbix-server daemon para sa polling at alerts, isang MariaDB/MySQL database para sa pag-store ng metrics, isang PHP frontend na sineserbisyo ng nginx, at zabbix-agent2 para sa pag-collect ng metrics mula sa mismong machine. Kapag tapos na ito, ituturo mo ito sa pangalawang server, maglalagay ng template, at makakatanggap ng email sa oras na mapuno ang disk o mamatay ang isang service.

Mas mabigat ang Zabbix kaysa sa mga status-page tool: isa itong real time-series system na may templates, triggers, escalation, at history retention. Halos lahat ng error ay nanggagaling sa tatlong hakbang na madalas makalimutan — ang pag-import ng database schema, ang pag-set ng database password na binabasa ng server, at ang pag-uncomment ng dalawang linya sa nginx config. Kapag nagawa ito nang tama, madali na ang lahat. Kung up/down checks at shareable status page lang ang kailangan mo, ang lightweight Uptime Kuma status monitor ay kayang gawin iyan sa isang container; ang Zabbix ay para sa mga nangangailangan ng per-metric thresholds at escalation sa maraming hosts.

Gamitin ang 7.0 LTS line: ang server, frontend, agent2, at schema nito ay magkakasama ang version, at makakatanggap ito ng security fixes sa loob ng maraming taon. Bago i-copy ang repository filename sa ibaba, tingnan muna ang official Zabbix download page — ang latest release package ay laging ang pinakabagong 7.0 point release, pero kung gusto mong i-pin ang isang eksaktong 7.0-N build, nakalista rin ang filename na iyon sa page. Ang lahat ng iba pang command dito ay stable sa buong 7.0 line.

Sizing, ports at prerequisites

I-assume na mayroon kang bagong Ubuntu 24.04 KVM VPS na may root o sudo access. Maging tapat sa resources: ang 2 GB na RAM at dalawang vCPU ang realistic na minimum para sa server, database, nginx, at PHP sa isang machine na nagmo-monitor ng ilang hosts. Gumagana ang 1 GB na machine pero magkukulang ang resources ng database habang lumalaki ang history; maglaan ng 4 GB kapag lumampas na sa ilang dose nang hosts, at kapag higit sa isang daan na, ilipat ang database sa sarili nitong server. Lalaki ang disk depende sa dami ng items na kinokolekta mo at kung gaano katagal ang history; maglaan ng ilang gigabytes sa simula, at magtatanggal ang housekeeper ng lumang data base sa retention windows na itinakda mo.

Ports: 80 at 443 para sa frontend, pwedeng public o restricted sa sarili mong IP. Nakikinig ang server sa TCP 10051 para sa mga active agents na nagpapadala ng data, at ang bawat agent ay nakikinig sa TCP 10050 para sa server polling. Buksan lamang ang mga kailangang i-expose kung may firewall sa harap. Makakatulong ang DNS A record para sa frontend dahil kakailanganin mo ng totoong certificate dito — binabantayan ng Zabbix box ang bawat serbisyong pinapatakbo mo, kaya dapat itong bahagi ng wider self-hosting stack worth running in 2026 sa halip na idugtong lang bilang afterthought.

Step 1 — Idagdag ang official Zabbix 7.0 repository

Ang zabbix-release package ay may isang function: inilalagay nito ang apt source list at signing key sa iyong system. I-install ito, pagkatapos ay i-refresh ang 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

Kung ang wget ay nagbalik ng 404 Not Found, lumipat na ang filename — buksan ang Zabbix download page, piliin ang Ubuntu 24.04, at i-copy ang eksaktong zabbix-release URL na nakalagay. Ang malinis na apt update ay nagpapakita ng repo.zabbix.com line at walang key warning; ang The following signatures couldn't be verified because the public key is not available ay nangangahulugang hindi na-install ng release package ang key nito, kaya i-run muli ang dpkg -i at i-update muli.

Step 2 — I-install ang server, frontend, at agent

I-install nang sabay-sabay ang server na built para sa MySQL, ang PHP frontend, ang nginx config, ang mga SQL schema files, at ang agent2.

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

Ang zabbix-server-mysql ay ang server na compiled para sa MySQL/MariaDB; para sa PostgreSQL, i-install ang zabbix-server-pgsql at i-adjust ang mga database steps sa ibaba. Ang zabbix-sql-scripts ang naglalaman ng schema na i-iimport mo; hiwalay na package ito sa 7.0, at ang hindi pag-install nito ang dahilan kung bakit magkakaroon ng error sa import path mamaya. Walang kasamang database engine ang mga ito, kaya i-install ang MariaDB ngayon kung wala pang database ang server.

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

Step 3 — I-create ang database gamit ang tamang character set

Mahigpit ang Zabbix sa collation: dapat ay utf8mb4 ang database na may utf8mb4_bin, kung hindi ay magkakaroon ng foreign-key errors sa gitna ng import. Mag-open ng root shell gamit ang sudo mysql at i-run ang:

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;

Ang SET GLOBAL line ay nagsisilbing safety valve para sa import. Gumagawa ang Zabbix schema ng mga stored function, at ang isang non-SUPER account gaya ng zabbix ay hindi makakagawa nito habang naka-on ang binary logging — default ang binary logging sa MySQL 8, at ang ilang managed MariaDB builds ay naka-on din ito (hindi ito default sa stock MariaDB). Kapag ni-skip ang flag na ito sa server na may naka-enable na binary logging, hihinto ang import dahil sa ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. Ang pag-set nito bilang root ang solusyon; i-off itong muli pagkatapos ng import. Tandaan nang maigi ang password — kailangang eksaktong string ang gamitin sa server config.

Step 4 — I-import ang schema (ang step na madalas makalimutan)

Ito ang pinakakaraniwang dahilan kung bakit hindi naglo-load ang bagong frontend: walang laman ang database na ginawa mo. I-load ang schema na kasama sa zabbix-sql-scripts sa loob nito.

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

Hihingi ito ng zabbix password, tatagal ng tatlumpu hanggang animnapung segundo sa maliit na VPS, at walang lalabas na output kapag successful — normal lang ang walang lumabas. Ang zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory ay nangangahulugang hindi naka-install ang zabbix-sql-scripts package (bumalik sa Step 2). Ang ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' ay nangangahulugang mali ang password o grant mula sa Step 3. Kapag tapos na, i-off muli ang safety flag:

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

I-confirm ang load gamit ang sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" — kung numero ang lumabas at hindi doesn't exist error, ibig sabihin ay nasa loob na ang schema.

Step 5 — I-set ang database password sa zabbix_server.conf

Binabasa ng server ang database credentials mula sa /etc/zabbix/zabbix_server.conf. Password lang ang kailangang i-set — ang DBName at DBUser ay default na sa zabbix. I-uncomment ang # DBPassword= line at i-set ito:

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

Dapat ay eksaktong byte-for-byte ang password gaya ng ginawa sa Step 3. Ang blanko o maling DBPassword ang pangunahing sanhi ng "Zabbix server is not running" na error na makikita mo mamaya: magsisimula ang daemon, mabibigong mag-log in, at mag-eexit. Walang lalabas na error sa screen — sa log lang ito makikita.

Step 6 — Ituro ang nginx sa frontend

Inilalagay ng zabbix-nginx-conf package ang isang server block sa /etc/zabbix/nginx.conf at ini-link ito sa nginx mula sa /etc/nginx/conf.d/zabbix.conf. Gayunpaman, naka-comment ang listen at server_name na mga linya, kaya walang ise-serve ang nginx para sa Zabbix hangga't hindi mo ito ina-edit:

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

Gamitin ang iyong domain, o ang public IP ng server kung wala ka pang DNS. May dalawang dapat bantayan. Ang default nginx welcome site ng Ubuntu ay nakikinig din sa port 80 at naka-set bilang default server, kaya ito ang laging lumalabas kung hindi tugma ang request name — tanggalin ito para hindi maling page ang ma-load: sudo rm -f /etc/nginx/sites-enabled/default. At kung ang /etc/nginx/conf.d/zabbix.conf ay nawawala (isang kilalang packaging quirk), gumawa ng link nang manual gamit ang sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf. Pagkatapos ay i-test at i-reload:

sudo nginx -t
sudo systemctl reload nginx

Dapat mag-print ang nginx -t ng test is successful. Kung nginx: [emerg] a duplicate default server for 0.0.0.0:80 ang lumabas, parehong inaangkin ng default site at ng Zabbix block ang default_server — tanggalin ang default site at i-test muli. Mas madalas na pumapasa ang test kahit may conflicting server name warning pero ang welcome page pa rin ang nakikita sa browser: nangyayari ito dahil ang default site ang nananalo sa unmatched name, at maaayos ito sa pagtanggal sa default site.

Step 7 — Simulan at i-enable ang mga service

I-start ang server, agent, PHP-FPM, at nginx. I-enable ang mga ito para mag-start sila nang kusa pagkatapos ng reboot.

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

Ang Ubuntu 24.04 ay may kasamang PHP 8.3, kaya ang FPM service ay php8.3-fpm; ang zabbix-nginx-conf package ay pinapatakbo ang frontend nito sa ilalim ng parehong master. I-verify kung nag-start ang server at nanatiling tumatakbo:

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

Ang isang healthy na log ay dapat nagtatapos sa "server started" at ang mga prosesong housekeeper, poller, at trapper ay running. Kung makakakita ka ng [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost', hindi tugma ang DBPassword mula sa Step 5 — ayusin ito at i-restart. Ang [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist na linya ay nangangahulugang nalaktawan ang schema import sa Step 4, kaya walang mababasa ang server.

Step 8 — Tapusin ang web setup wizard

Pumunta sa http://your-domain-or-ip. Bubukas ang Zabbix setup wizard. Sundin ang mga hakbang na ito:

  1. Welcome — pumili ng wika.
  2. Check of pre-requisites — dapat ay OK ang lahat ng row; ang packaged /etc/zabbix/php-fpm.conf pool ay sapat na para sa PHP limits na kailangan ng Zabbix.
  3. Configure DB connection — gamitin ang database type na MySQL, host na localhost, port na 0 (ang default port o socket), database name na zabbix, user na zabbix, at ang password mula sa Step 3. Lalabas ang error dito kung mali ang credentials o kulang ang schema.
  4. Settings — iwanan ang Zabbix server host na localhost at port na 10051, at magbigay ng pangalan para sa install.
  5. Pre-installation summary, pagkatapos ay Install — isusulat ng wizard ang /etc/zabbix/web/zabbix.conf.php.
  6. Finish — mag-log in bilang Admin (capital A) gamit ang password na zabbix, at agad na palitan ang password na iyon sa ilalim ng Users.

Kung mag-report ang wizard ng Cannot create the configuration file, hindi makakapag-write ang web user sa /etc/zabbix/web/ — i-download ang zabbix.conf.php na ibibigay nito, ilagay ito nang manual gamit ang sudo, at i-click ang Finish.

Step 9 — Idagdag ang local host at i-attach ang isang template

Hindi awtomatikong minomonitor ng Zabbix ang sarili nito. Pumunta sa Data collection → Hosts → Create host, i-set ang host name sa zabbix-server, idagdag ito sa Linux servers group, at magdagdag ng Agent interface na may IP na 127.0.0.1 at port na 10050. Sa ilalim ng Templates, i-link ang Linux by Zabbix agent (ito ang passive-poll variant; ang Linux by Zabbix agent active ay gumagamit ng agent push). I-save ang configuration.

Sa loob ng isang minuto, lalabas ang green na ZBX label sa host row at darating ang mga metrics sa ilalim ng Monitoring → Latest data. Ang red na ZBX label ay nangangahulugang hindi ma-reach ng server ang agent — ang error na ito ay tatalakayin sa ibaba at hindi pagkakamali sa step na ito.

Step 10 — Isang kapaki-pakinabang na trigger at email alert

Ang Linux by Zabbix agent template ay may kasama nang mga trigger para sa high CPU, low memory, at full disks, kaya may mga alert ka na agad pagka-link nito. Para makita kung paano gumawa ng isa, subukan ang sarili mong trigger: buksan ang host, pumunta sa Triggers → Create trigger, pangalanan itong Root filesystem over 90% full on {HOST.NAME}, i-set ang severity sa High, at gamitin ang expression na ito:

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

Ang vfs.fs.dependent.size[/,pused] ay ang percent-used item na ginagawa ng filesystem discovery ng template para sa root filesystem (ang Linux template ng 7.0 ay kumukuha ng vfs.fs.get nang isang beses lang at gumagawa ng mga dependent items bawat mount), kaya gagana ang trigger nang walang dagdag na data collection. I-save ito.

Ang trigger ay nagpapabago lamang ng kulay sa row sa dashboard hangga't walang action na nagpapadala ng notification. Sa ilalim ng Alerts → Media types → Email, i-set ang SMTP server, port, sender address, connection security (karaniwang STARTTLS), at anumang relay credentials, pagkatapos ay gamitin ang Test — ang failure dito ay nangangahulugang mali ang SMTP path bago pa man umasa sa totoong alert. Bigyan ang Admin user ng address sa ilalim ng Users → Users → Admin → Media → Add at piliin kung anong mga severity ang magno-notify. Pagkatapos ay i-wire ito sa ilalim ng Alerts → Actions → Trigger actions → Create action: magdagdag ng condition gaya ng Trigger severity >= Warning, at sa ilalim ng Operations ay i-send ito sa Admin via Email. I-save at i-enable ito. Mas gusto ang chat? Ang Zabbix 7.0 ay may kasama nang webhook media types para sa Slack, Discord, at Telegram — i-configure ang isa gaya ng Email at i-assign ito sa isang user.

Pag-monitor ng pangalawang server gamit ang agent

Para i-monitor ang isa pang server, i-add din ang Zabbix repository doon — walang kasamang Zabbix packages ang Ubuntu 24.04 — pagkatapos ay i-install ang agent lamang:

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

I-edit ang /etc/zabbix/zabbix_agent2.conf, i-set ang Server sa IP ng Zabbix server (para sa passive polling) at, para sa active checks, i-set ang ServerActive kasama ang isang natatanging Hostname na tugma sa host na gagawin mo sa frontend:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

I-run ang sudo systemctl enable --now zabbix-agent2 at i-open ang TCP 10050 mula sa Zabbix server patungo sa machine na ito. Bumalik sa frontend, gumawa ng host kung saan ang Agent interface ay nakaturo sa IP ng machine na iyon, i-link ang Linux template, at magre-report ito sa loob ng isang minuto.

Failure modes, kasama ang mga string na makikita mo

Nagpapakita ang Frontend ng Error connecting to database o database error. Sa DB step ng wizard, ang Access denied for user 'zabbix'@'localhost' (using password: YES) ay nangangahulugang hindi tugma ang password sa Step 3 o hindi tumakbo ang GRANT. Kung connected ang database pero The frontend does not match Zabbix database o Table 'zabbix.users' doesn't exist ang report ng frontend, na-skip o nabigo ang schema import sa Step 4 — i-run itong muli sa isang bagong database.

Orange banner: Zabbix server is not running: the information displayed may not be current. Umaandar ang frontend pero hindi maabot ang live server. May tatlong sanhi, at ang una ang pinakamadalas. Patay ang service — i-check ang systemctl status zabbix-server at i-start ito. Umaandar ang service pero hindi maabot ang database — ang log ay nagpapakita ng [Z3001] connection to database 'zabbix' failed: [1045] Access denied, na nangangahulugang mali o blanko ang DBPassword. O kaya ay nakaturo ang frontend sa maling server, na naka-store bilang host localhost port 10051 sa /etc/zabbix/web/zabbix.conf.php. Sa Ubuntu, walang SELinux by default, kaya hindi applicable ang SELinux-socket cause na nasa mga RHEL guide; dito, halos laging database password o nakahintong service ang sanhi.

Nagpapakita ang Host ng red ZBX label; item error Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. Hindi tumatakbo ang agent o hindi nakikinig (not listening). I-check ang systemctl status zabbix-agent2 at i-confirm ang ListenPort=10050. Ang timeout sa halip na "connection refused" ay nangangahulugang may firewall na nagba-block sa port 10050. Ang kaugnay na Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. ay nangangahulugang reachable ang agent pero ang Server= line nito ay walang listahan ng IP ng Zabbix server — i-add ito at i-restart ang agent.

Plain nginx welcome page, o 502 Bad Gateway. Ang welcome page ay nangangahulugang enabled pa ang default site o hindi naka-link ang Zabbix block — i-remove ang /etc/nginx/sites-enabled/default at i-confirm na may /etc/nginx/conf.d/zabbix.conf gaya ng nasa Step 6. Ang 502 ay nangangahulugang naabot ng nginx ang PHP pero down ang PHP-FPM o nakikinig sa ibang socket — i-start ang php8.3-fpm at i-check kung ang fastcgi_pass socket sa Zabbix block ay tugma sa running pool.

Backups, upgrades, and TLS

Ang database ang kabuuan ng history, kaya i-back up ito gamit ang mysqldump nang naka-schedule at i-save ang dump sa labas ng server:

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

Maliit lang ang mga /etc/zabbix config files kaya mainam din itong i-save, pero maaari naman itong i-rebuild; ang data ay hindi. Ang pag-restore ay kabaligtaran ng backup — i-create ang database, i-import ang dump, at i-point ang config dito.

Ang mga upgrade sa loob ng 7.0 line ay ordinaryong apt update && apt upgrade runs lamang; awtomatikong gagawin ng server ang anumang schema migrations sa susunod nitong pag-start, kaya i-upgrade ang mga packages at i-restart ang zabbix-server. Ang paglipat sa isang major line ay isang sadyang hakbang — basahin ang upgrade notes nito, i-dump muna ang database, at asahan ang isang one-way schema change. Ang one-way jump na ito ang dahilan kung bakit kailangang mag-pin sa isang LTS line at manatili dito.

Huwag iwanan ang frontend sa plain HTTP. Kapag nakaturo na ang DNS sa server, lagyan ito ng certificate gamit ang Certbot at Let's Encrypt sa nginx para sa Ubuntu 24.04, na magre-rewrite sa server block para makinig sa 443 at mag-redirect sa 80. Habang pini-pribado (hardening) ang isang server na naglo-log in para i-monitor ang iba pang server, i-lock down din ang SSH nito gamit ang fail2ban para sa pag-ban ng brute-force SSH attempts. Ang monitoring login ay hindi dapat dumadaan sa cleartext, at ang access nito ay hindi dapat bukas sa mga password-guessers.

FAQ

Kailangan ko ba ang Zabbix agent, o maaari akong mag-monitor nang wala ito?

Parehong gumagana ang mga ito. Ang agent (agent2) ay nagbibigay ng detalyadong metrics bawat host — CPU, memory, disks, processes, services, log files — at ito ang standard na opsyon para sa mga server na kontrolado mo. Ang agentless monitoring ay para sa mga device na hindi mo maaaring i-install ng software: SNMP para sa mga switch at printer, ICMP ping para sa reachability, HTTP checks para sa mga endpoint, at IPMI para sa hardware health. Karaniwang pinagsasama ang dalawang ito sa mga real deployment.

Bakit sinasabi ng frontend na hindi tumatakbo ang Zabbix server?

Gumagana ang frontend pero hindi nito maabot ang live na zabbix-server process. Karaniwan, nagsimula ang server pero nabigong mag-log in dahil mali o walang laman ang DBPassword sa zabbix_server.conf, kaya bumalik ito agad sa error state. Patakbuhin ang systemctl status zabbix-server at basahin ang /var/log/zabbix/zabbix_server.log; isang [Z3001] connection to database ... failed line ang magpapatunay nito. Ayusin ang password at i-restart ang server; mawawala ang banner sa loob ng isang minuto.

Kailangan ko bang gumamit ng MySQL, o maaari akong gumamit ng PostgreSQL?

Parehong supported ang mga ito: zabbix-server-mysql gamit ang MariaDB o MySQL gaya ng nasa guide na ito, o zabbix-server-pgsql gamit ang PostgreSQL. Para sa maliliit na install, hindi gaanong mahalaga ang pagpili. Para sa malalaking deployment, ang PostgreSQL na may TimescaleDB extension ay nagpa-partition ng history tables at nagpapagaan sa housekeeping, kaya ito ang mas pinipili ng malalaking site. Pumili ng isa at manatili doon — ang pag-migrate sa huli ay nangangailangan ng full export at re-import, hindi lang simpleng pagpapalit ng config.

Gaano karaming RAM ang kailangan ng isang Zabbix all-in-one server?

Para sa isang machine na nagmo-monitor ng iilang hosts, ang 2 GB ay realistic na minimum at ang 4 GB ay sapat na para sa higit sa ilang dosenang hosts; ang memory ay napupunta sa database cache at sa mga pollers ng server. Ang 1 GB VPS ay tatakbo pero magkukulang sa resources ang database habang lumalaki ang history. Kapag lumampas na sa isang daang hosts, ihiwalay ang database sa sarili nitong server at i-tune ang buffer pool nito sa halip na dagdagan lang ang RAM sa iisang machine.

Overkill ba ang Zabbix para sa iilang servers lang?

Maaari itong maging overkill. Kung ang kailangan mo lang ay "is it up?" at isang page na maaari mong i-share, ang mas magaan na tool gaya ng Uptime Kuma para sa uptime at status monitoring ay mas mabilis i-setup at mas madaling basahin. Gamitin ang Zabbix kung kailangan mo ng per-metric thresholds, historical graphs, templated hosts, at escalation rules — ang mga bagay na hindi kayang ibigay ng isang simpleng pinger para sa maraming server.