SSD Nodes Learn
Gidsen Matt ConnorDoor Matt Connor · Bijgewerkt 2026-07-24

Zabbix 7.0 installeren op Ubuntu 24.04

Installeer Zabbix 7.0 LTS op Ubuntu 24.04. Wij leggen u uit hoe u de MySQL schema importeert en de nginx config correct instelt om fouten te voorkomen.

Wat u bouwt

Een enkele Ubuntu 24.04 VPS met de volledige Zabbix 7.0 LTS stack: de zabbix-server daemon voor polling en alerts, een MariaDB/MySQL database voor alle metrics, een PHP frontend geleverd door nginx, en zabbix-agent2 voor het verzamelen van metrics op de host zelf. Zodra de installatie voltooid is, koppelt u deze aan een tweede server, koppelt u een template, en ontvangt u direct een e-mail wanneer een disk vol raakt of een service stopt.

Zabbix is uitgebreider dan een eenvoudige statuspagina-tool: het is een echt time-series systeem met templates, triggers, escalatie en geschiedenisbewaring. De meeste problemen ontstaan door drie stappen die vaak worden overgeslagen: het importeren van het databaseschema, het instellen van het databasewachtwoord dat de server daadwerkelijk gebruikt, en het decommenteren van twee regels in de nginx config. Als u deze stappen correct uitvoert, is de rest eenvoudig. Als u alleen up/down checks en een deelbare statuspagina nodig heeft, een lichtgewicht Uptime Kuma status monitor doet dit in één container; Zabbix is de beste keuze wanneer u drempelwaarden per metric en escalatie voor meerdere hosts nodig heeft.

Gebruik de 7.0 LTS-versie: de server, frontend, agent2 en het schema zijn gezamenlijk geversioneerd en ontvangen jarenlang beveiligingsupdates. Controleer de officiële Zabbix downloadpagina voordat u de onderstaande repository-bestandsnaam kopieert — het latest releasepakket verwijst altijd naar de nieuwste 7.0 point release, maar als u liever een specifieke 7.0-N build gebruikt, staat die bestandsnaam ook op de pagina vermeld. Alle andere commando's in deze handleiding zijn stabiel voor de gehele 7.0-lijn.

Sizing, ports and prerequisites

Ga uit van een nieuwe Ubuntu 24.04 KVM VPS met root- of sudo-rechten. Wees realistisch over de resources: 2 GB RAM en twee vCPUs zijn de minimale vereisten voor een server met nginx, PHP en een database die een beperkt aantal hosts monitort. Een systeem met 1 GB start wel op, maar de database krijgt te weinig resources naarmate de historie groeit. Reken op 4 GB bij meer dan enkele tientallen hosts. Verplaats de database naar een eigen server als u meer dan honderd hosts beheert. De schijfruimte groeit naarmate u meer items verzamelt en de historie langer bewaart. Reserveer enkele gigabytes voor de start; de housekeeper verwijdert oude data op basis van de ingestelde bewaartermijnen.

Poorten: 80 en 443 voor de frontend, publiek toegankelijk of beperkt tot uw eigen IP. De server luistert op TCP 10051 voor actieve agents die data verzenden. Elke agent luistert op TCP 10050 voor polling door de server. Open alleen de poorten die u nodig heeft als er een firewall actief is. Een DNS A-record voor de frontend is aanbevolen, omdat u een echt certificaat wilt gebruiken. Een Zabbix-server monitort alle andere services die u draait. Daarom maakt het deel uit van de bredere self-hosting stack die het in 2026 waard is in plaats van een achteraf toegevoegde oplossing.

Stap 1 — Voeg de officiële Zabbix 7.0 repository toe

Het zabbix-release pakket voert één actie uit: het plaatst de apt source list en de signing key op uw systeem. Installeer het pakket en vernieuw vervolgens de 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

Als wget 404 Not Found retourneert, is de bestandsnaam gewijzigd. Open de Zabbix downloadpagina, selecteer Ubuntu 24.04 en kopieer de exacte zabbix-release URL die wordt weergegeven. Een correcte apt update toont een repo.zabbix.com regel zonder waarschuwingen over de key; The following signatures couldn't be verified because the public key is not available betekent dat het release pakket de key niet heeft geïnstalleerd. Voer in dat geval de dpkg -i opnieuw uit en voer de update opnieuw uit.

Stap 2 — Installeer de server, frontend en agent

Installeer de op MySQL gebouwde server, de PHP-frontend, de nginx-configuratie, de SQL-schemafiles en agent2 in één keer.

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

zabbix-server-mysql is de server gecompileerd voor MySQL/MariaDB; installeer zabbix-server-pgsql in plaats daarvan voor PostgreSQL en pas de onderstaande database-stappen aan. zabbix-sql-scripts bevat het schema dat u hierna importeert — in versie 7.0 is dit een apart pakket. Als u dit pakket vergeet, is de importmap later niet gevonden. Geen van deze pakketten installeert een database-engine. Installeer MariaDB nu als de machine deze nog niet heeft.

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

Stap 3 — Maak de database aan met de juiste character set

Zabbix stelt strikte eisen aan de collation: de database moet utf8mb4 zijn met utf8mb4_bin. Als dit niet het geval is, mislukt de import halverwege door foreign-key fouten. Open een root shell met sudo mysql en voer uit:

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;

De SET GLOBAL regel dient als veiligheidsmaatregel voor de import. Het Zabbix schema maakt gebruik van stored functions. Een account dat geen SUPER is, zoals zabbix, kan deze niet aanmaken wanneer binary logging is ingeschakeld. MySQL 8 heeft binary logging standaard ingeschakeld; sommige beheerde MariaDB-versies doen dit ook (standaard MariaDB doet dit niet). Als u de flag overslaat op een server waar binary logging aan staat, stopt de import met ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. Het uitvoeren als root lost dit op; schakel het daarna weer uit. Noteer het wachtwoord nauwkeurig — de serverconfiguratie vereist exact dezelfde reeks bytes.

Stap 4 — Importeer het schema (de stap die vaak wordt overgeslagen)

Dit is de meest voorkomende reden waarom een nieuwe frontend niet laadt: de aangemaakte database is leeg. Importeer het schema uit zabbix-sql-scripts in de database.

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

Het systeem vraagt om het zabbix wachtwoord. Op een kleine VPS duurt dit thirty tot sixty seconden. Bij succes wordt er niets weergegeven; stilte is hier het juiste resultaat. zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory betekent dat het zabbix-sql-scripts pakket niet is geïnstalleerd (ga terug naar Stap 2). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' betekent dat het wachtwoord of de grant uit Stap 3 onjuist is. Schakel na voltooiing de safety flag weer uit:

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

Bevestig de import met sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;". Een getal in plaats van een doesn't exist error betekent dat het schema is geïmporteerd.

Stap 5 — Stel het wachtwoord voor de database in in zabbix_server.conf

De server leest de database-gegevens uit /etc/zabbix/zabbix_server.conf. Alleen het wachtwoord moet worden ingesteld — DBName en DBUser staan standaard op zabbix. Haal de # weg bij de # DBPassword= regel en stel deze als volgt in:

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

Het wachtwoord moet exact hetzelfde zijn als in Stap 3. Een leeg of onjuist DBPassword is de hoofdoorzaak van de melding "Zabbix server is not running" die u later ziet: de daemon start, mislukt bij het inloggen en stopt. Er verschijnt geen melding op het scherm — dit staat alleen in het logbestand.

Stap 6 — Wijs nginx toe aan de frontend

Het zabbix-nginx-conf-pakket installeert een server block op /etc/zabbix/nginx.conf en maakt een link naar nginx vanuit /etc/nginx/conf.d/zabbix.conf. De regels listen en server_name staan echter standaard uitgeschakeld. Nginx serveert pas content voor Zabbix nadat u deze regels heeft aangepast:

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

Gebruik uw eigen domeinnaam, of het publieke IP-adres van de server als u nog geen DNS heeft ingesteld. Let op twee zaken. De standaard nginx welcome site op Ubuntu luistert ook naar poort 80 en is ingesteld als de default server. Hierdoor krijgt deze site voorrang bij elke aanvraag waarbij de naam niet overeenkomt. Verwijder deze site om te voorkomen dat de verkeerde pagina wordt geladen: sudo rm -f /etc/nginx/sites-enabled/default. En als /etc/nginx/conf.d/zabbix.conf ontbreekt (een bekend probleem met dit pakket), maak de link dan handmatig aan met sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf. Test en herlaad de configuratie vervolgens:

sudo nginx -t
sudo systemctl reload nginx

nginx -t zou test is successful moeten tonen. Als er in plaats daarvan nginx: [emerg] a duplicate default server for 0.0.0.0:80 wordt getoond, claimen zowel de default site als de Zabbix block poort default_server. Verwijder de default site en voer de test opnieuw uit. Meestal slaagt de test met slechts een conflicting server name waarschuwing, maar toont de browser nog steeds de standaard welcome pagina. Dit gebeurt wanneer de default site voorrang krijgt bij een niet-overeenkomende naam. Het verwijderen van deze site lost dit op.

Stap 7 — Start en activeer de services

Start de server, de agent, PHP-FPM en nginx. Activeer deze services zodat ze automatisch opstarten na een 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 bevat PHP 8.3, dus de FPM-service is php8.3-fpm; het zabbix-nginx-conf pakket draait de frontend onder dezelfde master. Controleer of de server is gestart en blijft draaien:

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

Een correct logbestand eindigt met de melding dat de server is gestart en de housekeeper, poller en trapper processen draaien. Als u [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' ziet, komt de DBPassword uit Stap 5 niet overeen — corrigeer dit en start opnieuw. Een [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist regel betekent dat u de schema-import in Stap 4 hebt overgeslagen, waardoor de server geen gegevens kan lezen.

Stap 8 — Voltooi de web setup wizard

Navigeer naar http://your-domain-or-ip. De Zabbix setup wizard wordt geopend. Volg deze stappen:

  1. Welcome — kies een taal.
  2. Check of pre-requisites — elke regel moet standaard op OK staan; de meegeleverde /etc/zabbix/php-fpm.conf pool heeft de PHP-limieten die Zabbix nodig heeft al aangepast.
  3. Configure DB connection — database type MySQL, host localhost, port 0 (dit is de standaard port of socket), database name zabbix, user zabbix, en het wachtwoord uit Stap 3. Verkeerde credentials of een ontbrekend schema veroorzaken een fout in deze stap.
  4. Settings — laat de Zabbix server host localhost en port 10051 ongewijzigd, en geef de installatie een naam.
  5. Pre-installation summary, daarna Install — de wizard schrijft /etc/zabbix/web/zabbix.conf.php.
  6. Finish — log in als Admin (hoofdletter A) met wachtwoord zabbix, en wijzig dit wachtwoord direct onder Users.

Als de wizard Cannot create the configuration file rapporteert, kan de web user /etc/zabbix/web/ niet schrijven — download de zabbix.conf.php die wordt aangeboden, plaats deze handmatig met sudo, en klik op Finish.

Stap 9 — Voeg de lokale host toe en koppel een template

Zabbix monitort zichzelf niet automatisch. Ga naar Data collection → Hosts → Create host. Stel de host name in op zabbix-server. Voeg de host toe aan de Linux servers groep. Voeg een Agent interface toe met IP 127.0.0.1 en port 10050. Koppel onder Templates de template Linux by Zabbix agent (de passieve variant; Linux by Zabbix agent active gebruikt agent push). Klik op Save.

Binnen één minuut toont de host-regel een groen ZBX label en verschijnen de metrics onder Monitoring → Latest data. Een rood ZBX label betekent dat de server de agent niet kan bereiken. Dit is een foutmelding die hieronder wordt behandeld en is geen fout in deze stap.

Stap 10 — Een nuttige trigger en een e-mailwaarschuwing

De Linux by Zabbix agent template bevat al triggers voor een hoog CPU-gebruik, laag geheugen en volle schijven. U ontvangt dus direct waarschuwingen zodra u de template koppelt. Om te zien hoe een trigger wordt gemaakt, kunt u er zelf een toevoegen: open de host, ga naar Triggers → Create trigger, geef deze de naam Root filesystem over 90% full on {HOST.NAME}, stel de ernst (severity) in op High en gebruik deze expressie:

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

vfs.fs.dependent.size[/,pused] is het item voor het percentage verbruik dat de filesystem discovery van de template aanmaakt voor het root-filesystem (de Linux template van 7.0 verzamelt vfs.fs.get eenmalig en afgeleide items per mountpoint). De trigger wordt dus geactiveerd zonder extra gegevensverzameling. Sla de trigger op.

Een trigger verandert alleen de kleur van een rij op het dashboard totdat een action iemand informeert. Ga naar Alerts → Media types → Email en stel de SMTP-server, poort, afzender, verbindingbeveiliging (meestal STARTTLS) en eventuele relay-gegevens in. Gebruik daarna Test. Als de test mislukt, is het SMTP-pad onjuist voordat een echte waarschuwing hiervan afhankelijk is. Geef de Admin-gebruiker een adres onder Users → Users → Admin → Media → Add en selecteer welke ernstniveaus een melding moeten sturen. Verbind dit vervolgens onder Alerts → Actions → Trigger actions → Create action: voeg een conditie toe zoals Trigger severity >= Warning, en stuur onder Operations een e-mail naar de Admin. Sla de actie op en schakel deze in. Gebruikt u liever chat? Zabbix 7.0 bevat webhook media types voor Slack, Discord en Telegram. Configureer deze op exact dezelfde wijze als e-mail en wijs ze toe aan een gebruiker.

Een tweede server monitoren met de agent

Om een andere server te monitoren, moet u daar ook het Zabbix-repository toevoegen — Ubuntu 24.04 bevat standaard geen Zabbix-pakketten — en vervolgens alleen de agent installeren:

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

Wijzig /etc/zabbix/zabbix_agent2.conf, stel Server in op het IP-adres van de Zabbix-server (voor passive polling) en stel voor active checks ServerActive in samen met een unieke Hostname die overeenkomt met de host die u in de frontend aanmaakt:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

Voer sudo systemctl enable --now zabbix-agent2 uit en open TCP 10050 vanaf de Zabbix-server naar deze machine. Maak in de frontend een host aan waarvan de Agent-interface naar het IP-adres van deze machine verwijst, koppel de Linux-template, en de gegevens worden binnen een minuut gerapporteerd.

Foutmodi, met de strings die u zult zien

Frontend toont Error connecting to database of een databasefout. In de DB-stap van de wizard betekent Access denied for user 'zabbix'@'localhost' (using password: YES) dat het wachtwoord niet overeenkomt met Stap 3 of dat de GRANT nooit is uitgevoerd. Als de database verbinding maakt maar de frontend rapporteert The frontend does not match Zabbix database of Table 'zabbix.users' doesn't exist, dan is de schema-import in Stap 4 overgeslagen of mislukt — voer deze opnieuw uit in een nieuw aangemaakte database.

Oranje banner: Zabbix server is not running: the information displayed may not be current. De frontend is actief maar kan geen live server bereiken. Er zijn drie oorzaken, de eerste is het meest waarschijnlijk. De service is gestopt — controleer systemctl status zabbix-server en start deze. De service draait maar kan de database niet bereiken — het logboek toont [Z3001] connection to database 'zabbix' failed: [1045] Access denied, wat duidt op een foutief of leeg DBPassword. Of de frontend verwijst naar de verkeerde server, opgeslagen als host localhost poort 10051 in /etc/zabbix/web/zabbix.conf.php. Op Ubuntu is SELinux standaard niet aanwezig, dus de SELinux-socket oorzaak die in RHEL-handleidingen wordt genoemd is niet van toepassing; hier is het bijna altijd het wachtwoord van de database of een gestopte service.

Host toont een rode ZBX label; item error Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. De agent draait niet of luistert niet. Controleer systemctl status zabbix-agent2 en bevestig ListenPort=10050. Een timeout in plaats van "connection refused" betekent dat een firewall poort 10050 blokkeert. De gerelateerde Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. betekent dat de agent bereikbaar is, maar de Server= regel het IP-adres van de Zabbix server niet bevat — voeg dit toe en herstart de agent.

Standaard nginx welkomstpagina, of 502 Bad Gateway. De welkomstpagina betekent dat de default site nog is ingeschakeld of dat de Zabbix block niet is gekoppeld — verwijder /etc/nginx/sites-enabled/default en bevestig dat /etc/nginx/conf.d/zabbix.conf bestaat, zoals in Stap 6. Een 502 betekent dat nginx PHP heeft bereikt, maar PHP-FPM is gestopt of luistert op een andere socket — start php8.3-fpm en controleer of de fastcgi_pass socket in de Zabbix block overeenkomt met de actieve pool.

Backups, upgrades, and TLS

De database bevat de volledige geschiedenis. Maak daarom op een vast schema een backup met mysqldump en bewaar de dump buiten de server:

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

De /etc/zabbix config bestanden zijn klein en het is de moeite waard om deze op te slaan, maar ze zijn opnieuw op te bouwen; de data niet. Herstellen werkt in omgekeerde volgorde — maak de database aan, importeer de dump en wijs de config naar de database.

Upgrades binnen de 7.0-versie zijn normale apt update && apt upgrade runs; de server voert schema-migraties uit bij de volgende start. Upgrade de packages en herstart zabbix-server. Een toekomstige major-versie is een bewuste wijziging — lees de upgrade notes, maak eerst een dump van de database en houd rekening met een eenrichtings schema-wijziging. Die eenrichtingswijziging is de reden waarom u vasthoudt aan een LTS-versie en daarop blijft.

Gebruik geen plain HTTP voor de frontend. Zodra DNS naar de server wijst, installeert u een certificaat met Certbot en Let's Encrypt op nginx voor Ubuntu 24.04. Dit wijzigt de server block zodat deze luistert op 443 en verkeer van 80 doorstuurt. Terwijl u een server beveiligt die inlogt om andere servers te monitoren, moet u ook SSH beveiligen met fail2ban om brute-force SSH-pogingen te blokkeren. Een monitoring-login mag niet in cleartext worden verzonden en de toegang mag niet openstaan voor brute-force aanvallen.

FAQ

Heb ik de Zabbix agent nodig, of kan ik monitoren zonder de agent?

Beide opties werken. De agent (agent2) levert uitgebreide statistieken per host — CPU, geheugen, schijven, processen, services, logbestanden — en is de standaardkeuze voor servers waar u controle over heeft. Agentless monitoring is geschikt voor apparaten waarop u geen software kunt installeren: SNMP voor switches en printers, ICMP ping voor bereikbaarheid, HTTP-checks voor endpoints, en IPMI voor hardwarestatus. De meeste echte implementaties combineren beide methoden.

Waarom geeft de frontend aan dat de Zabbix server niet draait?

De frontend werkt, maar kan geen actieve zabbix-server proces bereiken. Meestal is de server gestart, maar mislukte de login omdat DBPassword in zabbix_server.conf onjuist of leeg is, waardoor de verbinding direct wordt verbroken. Voer systemctl status zabbix-server uit en lees /var/log/zabbix/zabbix_server.log; een [Z3001] connection to database ... failed regel bevestigt dit. Herstel het wachtwoord en start opnieuw op; de melding verdwijnt binnen een minuut.

Moet ik MySQL gebruiken, of kan ik PostgreSQL gebruiken?

Beide zijn volledig ondersteund: zabbix-server-mysql met MariaDB of MySQL zoals in deze handleiding, of zabbix-server-pgsql met PostgreSQL. Voor kleine installaties maakt de keuze weinig uit. Voor grote installaties partitioneert PostgreSQL met de TimescaleDB extensie de geschiedenistabellen, wat onderhoud veel efficiënter maakt. Daarom geven grote omgevingen de voorkeur aan deze optie. Kies één database en blijf daarbij — een latere migratie vereist een volledige export en import, geen eenvoudige configuratiewijziging.

Hoeveel RAM heeft een Zabbix all-in-one server nodig?

Voor één machine die een handvol hosts monitort, is 2 GB een realistisch minimum en 4 GB comfortabel bij enkele tientallen hosts; het geheugen gaat voornamelijk naar de database cache en de pollers van de server. Een 1 GB VPS werkt, maar biedt te weinig geheugen voor de database naarmate de geschiedenis groeit. Bij meer dan honderd hosts is het verstandig om de database op een eigen server te plaatsen en de buffer pool te optimaliseren, in plaats van meer RAM aan één machine toe te voegen.

Is Zabbix te zwaar voor slechts enkele servers?

Dat kan zijn. Als u alleen wilt weten of een systeem online is ("is it up?") en een eenvoudige statuspagina nodig heeft, dan is een lichter hulpmiddel zoals Uptime Kuma voor uptime en status monitoring sneller te installeren en makkelijker in één oogopslag te lezen. Kies Zabbix wanneer u drempelwaarden per meting, historische grafieken, host-templates en escalatieregels nodig heeft — functies die een eenvoudige pinger niet kan bieden voor een groot aantal apparaten.