Zabbix 7.0 LTS installeren op Ubuntu 24.04
Installeer Zabbix 7.0 LTS op Ubuntu 24.04. Volg de stappen voor de MariaDB database, nginx configuratie en Zabbix agent2. Los direct veelvoorkomende foutmeldingen bij de setup op.
Wat u bouwt
Eén Ubuntu 24.04 VPS waarop de volledige Zabbix 7.0 LTS stack draait: de zabbix-server daemon die pollt en waarschuwt, een MariaDB/MySQL database die elke metriek opslaat, een PHP frontend geserveerd door nginx, en zabbix-agent2 dat metrieken van de server zelf verzamelt. Zodra het systeem actief is, koppelt u een tweede server, voegt u een template toe en ontvangt u een e-mail zodra een schijf volloopt of een service uitvalt.
Zabbix is zwaarder dan een status-page tool: het is een volwaardig time-series systeem met templates, triggers, escalatie en historie-retentie. Vrijwel alle problemen ontstaan in drie stappen die vaak worden overgeslagen: het importeren van het database-schema, het instellen van het database-wachtwoord dat de server daadwerkelijk leest, en het uitcommentariëren van twee regels in de nginx-configuratie. Als u deze correct uitvoert, is de rest eenvoudig. Als u alleen up/down-checks en een deelbare statuspagina wilt, dan is een lichtgewicht Uptime Kuma status monitor in één container voldoende; Zabbix bewijst zijn waarde wanneer u per-metriek drempelwaarden en escalatie over vele hosts nodig heeft.
Gebruik de 7.0 LTS-lijn: de server, frontend, agent2 en het schema zijn op elkaar afgestemd en ontvangen jarenlang beveiligingsupdates. Voordat u de onderstaande repository-bestandsnaam kopieert, bekijkt u de officiële Zabbix-downloadpagina. Het latest release-pakket verwijst altijd naar de nieuwste 7.0 point release, maar als u liever een specifieke 7.0-N build vastzet, vermeldt de pagina ook die bestandsnaam. Elk ander commando in deze handleiding is stabiel voor de gehele 7.0-lijn.
Dimensionering, poorten en vereisten
Ga uit van een schone Ubuntu 24.04 KVM VPS met root- of sudo-toegang. Wees realistisch over de benodigde resources: 2 GB RAM en twee vCPU's vormen de ondergrens voor een server, database, Nginx en PHP op één machine die een handvol hosts monitort. Een 1 GB-server start wel op, maar de database komt tekort naarmate de historie groeit; reken op 4 GB bij enkele tientallen hosts, en verplaats de database naar een eigen server zodra u de honderd overschrijdt. De schijfruimte groeit naarmate u meer items verzamelt en de historie langer bewaart; reserveer enkele gigabytes om te beginnen, waarbij de housekeeper oude data verwijdert op basis van de door u ingestelde retentieperiodes.
Poorten: 80 en 443 voor de frontend, openbaar of beperkt tot uw eigen IP-adres. De server luistert op TCP 10051 voor actieve agents die data pushen, en elke agent luistert op TCP 10050 voor de server die deze polt. Open alleen wat u blootstelt als er een firewall voor staat. Een DNS A-record voor de frontend is aan te raden, omdat u een geldig certificaat wilt gebruiken. Een Zabbix-server monitort elke andere service die u draait, dus deze hoort thuis in de bredere stack voor zelfhosting die in 2026 de moeite waard is in plaats van er achteraf aan te worden toegevoegd.
Stap 1, Voeg de officiële Zabbix 7.0 repository toe
Het zabbix-release-pakket doet één ding: het plaatst de apt-bronnenlijst en de ondertekeningssleutel op uw systeem. Installeer dit pakket en ververs 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 updateAls wget de melding 404 Not Found geeft, is de bestandsnaam gewijzigd. Open de Zabbix-downloadpagina, kies Ubuntu 24.04 en kopieer de exacte zabbix-release-URL die daar wordt weergegeven. Een geslaagde apt update toont een repo.zabbix.com-regel zonder waarschuwing over de sleutel; The following signatures couldn't be verified because the public key is not available betekent dat het releasepakket de sleutel niet heeft geïnstalleerd. Voer in dat geval dpkg -i opnieuw uit en werk de lijst nogmaals bij.
Stap 2, Installeer de server, frontend en agent
Installeer in één keer de server die is gebouwd voor MySQL, de PHP-frontend, de nginx-configuratie, de SQL-schemabestanden en agent2.
sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2zabbix-server-mysql is de server die is gecompileerd voor MySQL/MariaDB; installeer voor PostgreSQL in plaats daarvan zabbix-server-pgsql en pas de onderstaande database-stappen aan. zabbix-sql-scripts bevat het schema dat u hierna importeert; dit is een apart pakket in 7.0 en het vergeten hiervan is precies de reden waarom het importpad later niet gevonden kan worden. Geen van deze pakketten installeert automatisch een database-engine, dus installeer MariaDB nu als de server er nog geen heeft.
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadbStap 3, De database aanmaken met de juiste tekenset
Zabbix is strikt wat betreft collation: de database moet utf8mb4 zijn met utf8mb4_bin, anders stopt de import voortijdig met foreign-key-fouten. Open een root-shell met sudo mysql en voer het volgende 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;Die SET GLOBAL-regel is een veiligheidsklep voor de import. Het Zabbix-schema maakt opgeslagen functies aan, en een niet-SUPER-account zoals zabbix kan deze niet aanmaken terwijl binary logging is ingeschakeld. MySQL 8 schakelt binary logging standaard in, en sommige beheerde MariaDB-builds doen dit ook (standaard MariaDB niet). Sla deze vlag over op een server met ingeschakelde binary logging en de import stopt met ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. Dit instellen als root verhelpt dit; u zet het na de import weer uit. Noteer het wachtwoord exact; de serverconfiguratie heeft exact dezelfde tekenreeks nodig.
Stap 4, het schema importeren (de stap die vaak wordt overgeslagen)
Dit is de meest voorkomende reden waarom een nieuwe frontend niet wil laden: de database die u heeft aangemaakt is leeg. Laad het schema dat wordt meegeleverd in zabbix-sql-scripts in de database.
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -uzabbix -p zabbixHet systeem vraagt om het zabbix-wachtwoord, voert het proces gedurende dertig tot zestig seconden uit op een kleine VPS en geeft bij succes geen output; stilte is hier de juiste bevestiging. 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 (keer terug naar stap 2). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' betekent dat het wachtwoord of de rechten uit stap 3 onjuist zijn. Zodra het proces is voltooid, schakelt u de veiligheidsvlag weer uit:
sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"Bevestig het laden met sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;"; een getal, en geen doesn't exist-foutmelding, betekent dat het schema correct is geladen.
Stap 5, Het databasewachtwoord instellen in zabbix_server.conf
De server leest zijn database-inloggegevens uit /etc/zabbix/zabbix_server.conf. Alleen het wachtwoord moet worden ingesteld; DBName en DBUser staan standaard al op zabbix. Verwijder het commentaarteken voor de regel # DBPassword= en stel deze in:
DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-passwordHet wachtwoord moet exact overeenkomen met het wachtwoord uit stap 3. Een leeg of onjuist DBPassword is de meest voorkomende oorzaak van de melding "Zabbix server is not running" die u later kunt tegenkomen: de daemon start, slaagt er niet in om in te loggen en sluit af. Er verschijnt geen melding op het scherm; alleen het logbestand bevat de foutmelding.
Stap 6, Nginx koppelen aan de frontend
Het zabbix-nginx-conf-pakket installeert een serverblok op /etc/zabbix/nginx.conf en koppelt dit in nginx vanuit /etc/nginx/conf.d/zabbix.conf, maar het wordt geleverd met de regels listen en server_name in commentaar, waardoor nginx niets voor Zabbix serveert totdat u deze bewerkt:
server {
listen 80;
server_name zabbix.example.com;
...
}Gebruik uw domein, of het publieke IP-adres van de server als u nog geen DNS heeft. Let op twee valkuilen. De standaard welkomstpagina van nginx op Ubuntu luistert ook op poort 80 en is gemarkeerd als de default server; deze wint daarom bij elk verzoek waarvan de naam niet overeenkomt. Verwijder deze, anders wordt de verkeerde pagina geladen: sudo rm -f /etc/nginx/sites-enabled/default. En als /etc/nginx/conf.d/zabbix.conf om een of andere reden ontbreekt (een bekende eigenaardigheid van het pakket), maak de koppeling dan handmatig aan met sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf. Test daarna en herlaad:
sudo nginx -t
sudo systemctl reload nginxnginx -t zou test is successful moeten weergeven. Als het in plaats daarvan nginx: [emerg] a duplicate default server for 0.0.0.0:80 weergeeft, claimen zowel de standaard site als het Zabbix-blok default_server; verwijder de standaard site en test opnieuw. Vaker slaagt de test met slechts een conflicting server name-waarschuwing, maar toont de browser nog steeds de standaard welkomstpagina: dit komt doordat de standaard site wint bij een niet-overeenkomende naam, en het verwijderen ervan lost dit op.
Stap 7, Services starten en inschakelen
Start de server, de agent, PHP-FPM en nginx, en schakel ze in zodat ze na een herstart automatisch opstarten.
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpmUbuntu 24.04 levert PHP 8.3, dus de FPM-service is php8.3-fpm; het zabbix-nginx-conf-pakket voert de frontend uit onder diezelfde master. Controleer of de server is gestart en actief blijft:
sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.logEen correct logbestand eindigt met de melding dat de server is gestart en dat de housekeeper-, poller- en trapper-processen actief zijn. 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 deze en herstart de service. Een [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist-regel betekent dat u de schema-import in Stap 4 heeft overgeslagen, waardoor de server geen gegevens kan inlezen.
Stap 8, Voltooi de web-installatiewizard
Navigeer naar http://your-domain-or-ip. De Zabbix-installatiewizard opent. Doorloop de volgende stappen:
- Welcome, kies een taal.
- Check of pre-requisites, elke rij hoort standaard op OK te staan; de meegeleverde
/etc/zabbix/php-fpm.conf-pool verhoogt automatisch de PHP-limieten die Zabbix vereist. - Configure DB connection, kies als databasetype MySQL, host
localhost, poort0(dit staat voor de standaardpoort of socket), databasenaamzabbix, gebruikerzabbixen het wachtwoord uit stap 3. Onjuiste inloggegevens of een ontbrekend schema worden hier direct zichtbaar. - Settings, laat de Zabbix server host op
localhost, poort10051staan en geef de installatie een naam. - Pre-installation summary, klik daarna op Install; de wizard schrijft nu
/etc/zabbix/web/zabbix.conf.php. - Finish, log in als
Admin(met een hoofdletter A) met wachtwoordzabbixen wijzig dit wachtwoord direct onder Users.
Als de wizard Cannot create the configuration file meldt, kan de webgebruiker niet naar /etc/zabbix/web/ schrijven. Download in dat geval het zabbix.conf.php-bestand dat wordt aangeboden, plaats dit handmatig op de locatie met sudo en klik op Finish.
Stap 9, De lokale host toevoegen en een template koppelen
Zabbix monitort zichzelf niet automatisch. Ga naar Data collection → Hosts → Create host, stel de hostnaam in op zabbix-server, voeg deze toe aan de groep Linux servers en voeg een Agent-interface toe met IP 127.0.0.1 en poort 10050. Koppel onder Templates de template Linux by Zabbix agent (de variant voor passief pollen; Linux by Zabbix agent active zorgt ervoor dat de agent zelf gegevens pusht). Sla de instellingen op.
Binnen een minuut verschijnt er een groen ZBX-label bij de host en komen de statistieken binnen onder Monitoring → Latest data. Een rood ZBX-label betekent dat de server de agent niet kan bereiken. Dit is een foutmodus die hieronder wordt behandeld en geen fout in deze stap.
Stap 10, Een nuttige trigger en een e-mailwaarschuwing
Het Linux by Zabbix agent-template bevat standaard triggers voor hoog CPU-gebruik, weinig geheugen en volle schijven, zodat u direct waarschuwingen ontvangt zodra u het koppelt. Om te zien hoe een trigger wordt opgebouwd, voegt u er zelf een toe: open de host, ga naar Triggers → Create trigger, noem deze Root filesystem over 90% full on {HOST.NAME}, stel de ernst in op High en gebruik de volgende expressie:
last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90vfs.fs.dependent.size[/,pused] is het item voor het gebruikspercentage dat de filesystem discovery van het template aanmaakt voor het root-bestandssysteem (het Linux-template van 7.0 verzamelt vfs.fs.get één keer en leidt daarvan afhankelijke items per mount af), waardoor de trigger afgaat zonder extra gegevensverzameling. Sla deze op.
Een trigger kleurt alleen een rij op het dashboard totdat een action iemand op de hoogte stelt. Stel onder Alerts → Media types → Email de SMTP-server, poort, afzenderadres, verbindingsbeveiliging (meestal STARTTLS) en eventuele relay-inloggegevens in. Gebruik daarna Test; een foutmelding hier betekent dat het SMTP-pad onjuist is voordat er enige echte waarschuwing van afhangt. Geef de Admin-gebruiker een adres onder Users → Users → Admin → Media → Add en kies welke ernstniveaus een melding moeten triggeren. Koppel dit vervolgens onder Alerts → Actions → Trigger actions → Create action: voeg een voorwaarde toe zoals Trigger severity >= Warning en stuur onder Operations een bericht naar Admin via Email. Sla de actie op en schakel deze in. Geeft u de voorkeur aan chat? Zabbix 7.0 levert webhook-mediatypes voor Slack, Discord en Telegram; configureer er een op exact dezelfde wijze als Email en wijs deze toe aan een gebruiker.
Een tweede server monitoren met de agent
Om een andere server te monitoren, voegt u daar ook de Zabbix-repository toe. Ubuntu 24.04 levert zelf geen Zabbix-pakketten. Installeer vervolgens alleen de 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-agent2Bewerk /etc/zabbix/zabbix_agent2.conf, stel Server in op het IP-adres van de Zabbix-server (voor passieve polling) en, voor actieve checks, ServerActive plus 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-01Voer 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 die machine wijst, koppel het Linux-template en de rapportage start binnen een minuut.
Foutmodi en de bijbehorende meldingen
De 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 GRANT nooit is uitgevoerd. Als de database wel verbinding maakt maar de frontend rapporteert The frontend does not match Zabbix database of Table 'zabbix.users' doesn't exist, dan is het importeren van het schema in Stap 4 overgeslagen of mislukt; voer dit opnieuw uit in een vers aangemaakte database.
Oranje banner: Zabbix server is not running: the information displayed may not be current. De frontend is actief maar kan de live-server niet bereiken. Er zijn drie oorzaken, gerangschikt op waarschijnlijkheid. De service is gestopt; controleer systemctl status zabbix-server en start deze. De service draait wel maar kan de database niet bereiken; het logbestand toont [Z3001] connection to database 'zabbix' failed: [1045] Access denied, wat wijst op een onjuist of leeg DBPassword. Of de frontend wijst naar de verkeerde server, opgeslagen als host localhost poort 10051 in /etc/zabbix/web/zabbix.conf.php. Op Ubuntu is standaard geen SELinux aanwezig, dus de oorzaak met de SELinux-socket die in RHEL-handleidingen wordt genoemd, is hier niet van toepassing; in dit geval is het bijna altijd het databasewachtwoord of een gestopte service.
Host toont een rood ZBX-label; itemfout 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 dat 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 standaardwebsite nog is ingeschakeld of dat het Zabbix-blok niet is gekoppeld; verwijder /etc/nginx/sites-enabled/default en bevestig dat /etc/nginx/conf.d/zabbix.conf bestaat, zoals beschreven in Stap 6. Een 502 betekent dat nginx PHP heeft bereikt, maar dat PHP-FPM niet draait of op een andere socket luistert; start php8.3-fpm en controleer of de fastcgi_pass-socket in het Zabbix-blok overeenkomt met de actieve pool.
Backups, upgrades en TLS
De database bevat de volledige geschiedenis. Maak daarom volgens een schema een back-up met mysqldump en bewaar de dump buiten de server:
mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gzDe /etc/zabbix-configuratiebestanden zijn klein en het is zinvol om deze ook op te slaan, maar ze zijn opnieuw op te bouwen; de data niet. Herstellen is het omgekeerde proces: maak de database aan, importeer de dump en verwijs de configuratie ernaar.
Upgrades binnen de 7.0-reeks zijn reguliere apt update && apt upgrade-runs; de server past eventuele schema-migraties toe bij de volgende start. Upgrade daarom de pakketten en herstart zabbix-server. Een toekomstige hoofdversie is een bewuste stap; lees de upgrade-notities, maak eerst een dump van de database en houd rekening met een eenrichtingswijziging in het schema. Die eenrichtingswijziging is precies de reden waarom u zich aan een LTS-reeks bindt en daarop blijft.
Laat de frontend niet op onversleutelde HTTP staan. Zodra DNS naar de server wijst, plaatst u een certificaat met Certbot en Let's Encrypt op nginx voor Ubuntu 24.04. Dit herschrijft het serverblok om op poort 443 te luisteren en poort 80 door te sturen. Terwijl u een server beveiligt die inlogt om alle andere servers die u beheert te monitoren, moet u ook de SSH-toegang beperken met fail2ban voor het blokkeren van brute-force SSH-pogingen. Een monitoring-login mag niet in leesbare tekst worden verzonden en de toegangspoort mag niet openstaan voor wachtwoordraders.
FAQ
Heb ik de Zabbix agent nodig, of kan ik monitoren zonder?
Beide opties werken. De agent (agent2) levert gedetailleerde statistieken per host, zoals CPU, geheugen, schijfgebruik, processen, services en logbestanden; dit is de standaardkeuze voor servers die u zelf beheert. Agentless monitoring is bedoeld 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 productieomgevingen gebruiken een combinatie van beide.
Waarom geeft de frontend aan dat de Zabbix server niet draait?
De frontend functioneert, maar kan het actieve zabbix-server-proces niet bereiken. Meestal is de server gestart, maar kon deze niet inloggen omdat DBPassword in zabbix_server.conf onjuist of leeg is, waarna het proces direct is afgesloten. 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 herstart de service; de melding verdwijnt binnen een minuut.
Moet ik MySQL gebruiken, of kan ik PostgreSQL gebruiken?
Beide worden 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 nauwelijks uit. Voor grote omgevingen partitioneert PostgreSQL met de TimescaleDB-extensie de geschiedenistabellen, wat het onderhoud aanzienlijk efficiënter maakt; daarom kiezen grote sites vaak voor PostgreSQL. Kies één database en blijf daarbij; migratie achteraf vereist een volledige export en import, het is geen kwestie van een configuratiewijziging.
Hoeveel RAM heeft een Zabbix all-in-one server nodig?
Voor één server die een handvol hosts monitort, is 2 GB een realistisch minimum en 4 GB is comfortabel voor enkele tientallen hosts; het geheugen wordt grotendeels verbruikt door de databasecache en de pollers van de server. Een VPS met 1 GB werkt wel, maar de database krijgt te weinig middelen naarmate de geschiedenis groeit. Bij meer dan honderd hosts kunt u de database beter op een aparte server plaatsen en de buffer pool daarop afstemmen, in plaats van meer RAM aan één machine toe te voegen.
Is Zabbix overkill voor een paar servers?
Dat kan zo zijn. Als u alleen wilt weten of een server "up" is en een statuspagina wilt delen, is een lichtere tool zoals Uptime Kuma voor uptime en statusmonitoring sneller opgezet en overzichtelijker. Kies voor Zabbix wanneer u drempelwaarden per metriek, historische grafieken, templates voor hosts en escalatieregels nodig heeft; zaken die een eenvoudige pinger niet kan bieden voor een heel serverpark.