How to Install Zabbix on Ubuntu 24.04 — Complete Monitoring Stack Guide
Infrastructure monitoring is no longer optional. If you are running production servers, web apps, databases, or network gear, you need a unified view of health, performance, and availability — and you need alerts the moment something drifts from normal. This tutorial walks you through installing Zabbix 7.0 LTS on Ubuntu 24.04, from a fresh VPS to a hardened, TLS-secured monitoring server complete with agents, auto-registration, Grafana dashboards, and Slack/email notifications.
Zabbix is the most widely deployed open-source enterprise monitoring platform in the world. Unlike SaaS tools that charge per host or per metric, a self-hosted Zabbix instance on a single VPS can comfortably monitor hundreds of hosts and tens of thousands of metrics — for the flat cost of the server itself.
Skip the manual work? CloudCore VPS plans give you the headroom Zabbix needs to collect, store, and graph metrics at scale. Launch a Professional VPS and follow this guide end to end in under an hour.
Table of Contents
What is Zabbix?
Zabbix is an open-source, enterprise-grade monitoring platform that collects metrics, logs, and events from servers, network devices, applications, databases, containers, and cloud services. Originally released in 2001, it is now maintained by Zabbix LLC under the GPLv2 licence and has a massive global community of sysadmins, MSPs, and enterprise IT teams.
At its core, Zabbix is composed of four parts: a server that collects and processes data, a database (MySQL/MariaDB, PostgreSQL, or TimescaleDB) that stores metrics and configuration, a web frontend that provides dashboards and admin UI, and agents that run on monitored hosts to collect system-level data. Optional proxies let you scale collection across datacenters or monitor hosts behind firewalls.
Zabbix supports an unusually wide range of monitoring techniques out of the box: native agents for Linux, Windows, macOS, FreeBSD, AIX, and Solaris; agentless collection via SNMP v1/v2c/v3, IPMI, JMX, ODBC, SSH, and Telnet; HTTP/HTTPS web scenario checks; synthetic transaction monitoring; log file parsing; and over 300 pre-built integration templates covering everything from PostgreSQL and Redis to Cisco routers, VMware ESXi, AWS CloudWatch, and Kubernetes. The built-in auto-discovery engine can scan IP ranges, detect new hosts automatically, and apply monitoring templates without manual intervention.
The platform scales from a single-server install monitoring a dozen hosts to large clustered deployments tracking tens of thousands of hosts and millions of metrics per minute. Version 7.0, released in 2024, is the current long-term support (LTS) release with support through 2029, and it introduces proxy load balancing, a redesigned dashboard engine, and a substantially faster history syncer.
Why Self-Host Zabbix vs Datadog or New Relic?
Commercial observability platforms are excellent products — but they are priced for budgets that most small teams, MSPs, and individual operators do not have. Before you sign a six-figure annual contract, it is worth understanding what self-hosted Zabbix gives you in exchange for a few hours of setup time.
- Flat, predictable cost — A Professional VPS at EUR 19.99/month can monitor 200+ hosts. Datadog charges per host, per container, per custom metric, per log line ingested, per APM trace, and per synthetic check. Real-world bills routinely land between USD 15–40 per host per month once all modules are enabled.
- No metric or host caps — Zabbix does not count your interfaces, containers, or custom items. Collect every metric your agents can produce without a line item appearing on next month's invoice.
- Full data ownership — Every data point stays on your server. For GDPR, HIPAA, SOC 2, or ISO 27001 audits, this simplifies compliance dramatically compared to shipping production telemetry to a US-based SaaS vendor.
- No retention cliffs — SaaS platforms charge extra for anything beyond 15–30 days of raw metric history. Zabbix keeps history and trends for as long as your disk allows, with configurable per-item housekeeping and built-in trend aggregation.
- Custom everything — Write your own UserParameters, external scripts, webhooks, and trigger expressions. Extend the system with custom modules. No vendor gatekeeping on what you are allowed to monitor or alert on.
- Offline and air-gapped support — Zabbix works without any outbound internet connection. Critical for regulated environments and on-premises industrial monitoring.
Cost Comparison: Zabbix vs SaaS Observability
| Scenario (50 hosts, standard metrics + logs) | Datadog | New Relic | Self-Hosted Zabbix |
|---|---|---|---|
| Monthly cost | ~USD 1,500–2,500 | ~USD 1,200–2,000 | EUR 19.99 (VPS only) |
| Per-host pricing | Yes (tiered) | Yes (tiered) | No |
| Custom metrics surcharge | Yes | Yes | No |
| Log retention 30 days | Included (capped) | Included (capped) | Unlimited (disk-bound) |
| Data leaves your infrastructure? | Yes | Yes | No |
| Alerting channels | Email, Slack, PagerDuty | Email, Slack, PagerDuty | Any (webhook-extensible) |
| Annual cost at this scale | ~USD 24,000+ | ~USD 18,000+ | EUR 240 |
Prerequisites
Before you begin, make sure you have:
- A VPS running Ubuntu 24.04 LTS with root or sudo access
- SSH access to the server
- A fully qualified domain name pointing to the server (required for Let's Encrypt TLS)
- At least 4 GB of RAM (8 GB+ recommended for > 50 monitored hosts)
- At least 40 GB of disk space (metric history grows quickly — plan for 80 GB+ in production)
- Ports 80, 443, and 10051/tcp open (agent connections use 10051 outbound from agents to server)
Recommended Plan: CloudCore Professional>
Zabbix is CPU-light but RAM-hungry and disk-I/O-sensitive once you cross a few dozen hosts. For a production monitoring server, we recommend the CloudCore Professional plan:>
- 6 vCPU cores
- 12 GB RAM
- 100 GB NVMe SSD
- Unmetered bandwidth
- EUR 19.99/month>
This comfortably handles 150–200 hosts with full history retention, the Nginx frontend, MariaDB, and a co-located Grafana instance on the same box.
Connect to your server via SSH to start:
ssh root@your-server-ipStep 1: Update System Packages
Bring the system up to date before installing anything.
sudo apt update && sudo apt upgrade -yInstall a few utilities that the rest of this guide depends on:
sudo apt install -y curl wget gnupg2 ca-certificates lsb-release software-properties-common ufwIf the kernel was upgraded, reboot:
sudo rebootReconnect after a minute.
Step 2: Install MariaDB
Zabbix 7.0 supports MySQL 8.0+ and MariaDB 10.5+. MariaDB is the lighter, faster option for most single-server deployments, and it is what we will use here.
sudo apt install -y mariadb-server mariadb-clientEnable and start the service:
sudo systemctl enable --now mariadbRun the interactive hardening script and accept the safe defaults (set a root password, remove anonymous users, disable remote root, drop the test database):
sudo mysql_secure_installationVerify it is running:
sudo systemctl status mariadb --no-pagerExpected output:
● mariadb.service - MariaDB 10.11.x database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-04-16 10:00:00 UTC; 30s agoStep 3: Add the Zabbix 7.0 LTS Repository
Zabbix ships an official Ubuntu 24.04 repository package that configures APT sources and GPG keys in one step.
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_7.0-2+ubuntu24.04_all.deb
sudo apt updateExpected output (abbreviated):
Get:1 https://repo.zabbix.com/zabbix/7.0/ubuntu noble InRelease [7,502 B]
Get:2 https://repo.zabbix.com/zabbix/7.0/ubuntu noble/main amd64 Packages [...]
Reading package lists... DoneStep 4: Install Zabbix Server, Frontend, and Agent
Install the four key packages: the server (with MySQL driver), the PHP frontend, the Nginx config package, and the agent to monitor this host itself.
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2Each package serves a specific role:
zabbix-server-mysql— The Zabbix server daemon compiled with MySQL/MariaDB driver support.zabbix-frontend-php— The PHP 8.3 web frontend with all dashboards and admin UI.zabbix-nginx-conf— Pre-built Nginx server block for the frontend.zabbix-sql-scripts— The SQL schema and initial data dumps used to seed the database.zabbix-agent2— The modern Go-based agent that replaces the legacy C agent with better plugin support.
Step 5: Create Database and Import Schema
Log in to MariaDB as root:
sudo mysql -uroot -pCreate the Zabbix database, a dedicated user, and grant privileges. Use a strong password of your own:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ChangeThisStrongPassword123!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EXIT;The log_bin_trust_function_creators = 1 flag is required so that the schema import can define stored functions. We will disable it again after the import.
Import the Zabbix schema and initial data. The SQL dump is shipped compressed — pipe it directly through zcat:
sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | sudo mysql --default-character-set=utf8mb4 -uzabbix -p zabbixEnter the zabbix user password you just created. The import takes 30–90 seconds depending on disk speed.
Disable the log_bin flag now that the import is done:
sudo mysql -uroot -p -e "SET GLOBAL log_bin_trust_function_creators = 0;"Step 6: Configure Zabbix Server
Tell the Zabbix server daemon how to reach the database. Edit /etc/zabbix/zabbix_server.conf:
sudo nano /etc/zabbix/zabbix_server.confFind and set these lines (uncomment if needed):
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=ChangeThisStrongPassword123!
CacheSize=256M
HistoryCacheSize=128M
TrendCacheSize=32M
ValueCacheSize=128M
StartPollers=10
StartTrappers=5
StartPingers=5
LogFileSize=10Save and exit. These defaults comfortably handle 100+ hosts on a 12 GB RAM server — tune them upward as your deployment grows (see Performance Tuning).
Step 7: Configure PHP and Nginx
The zabbix-nginx-conf package installs a server block at /etc/zabbix/nginx.conf. Edit it to set the listen port, server name, and PHP timezone.
sudo nano /etc/zabbix/nginx.confUncomment and set:
listen 80;
server_name zabbix.yourdomain.com;Next, set the PHP timezone in /etc/zabbix/php-fpm.conf:
sudo nano /etc/zabbix/php-fpm.confUncomment and set the timezone to match your region (full list: php.net/timezones):
php_value[date.timezone] = Europe/BerlinThe default Nginx config on Ubuntu 24.04 ships an enabled default server block on port 80 that will conflict with Zabbix. Remove it:
sudo rm -f /etc/nginx/sites-enabled/defaultTest the Nginx config:
sudo nginx -tExpected output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulStep 8: Start Services and Complete the Web Installer
Enable and start all four daemons:
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpmConfirm the Zabbix server is running:
sudo systemctl status zabbix-server --no-pagerExpected output:
● zabbix-server.service - Zabbix Server
Loaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-04-16 10:15:00 UTC; 5s agoOpen your browser to http://zabbix.yourdomain.com/ (or your server IP if DNS is not yet propagated). You should see the Zabbix welcome wizard.
Click through the installer:
/etc/zabbix/php-fpm.conf and bump them to 256M and 32M respectively.Database type: MySQL, Database host: localhost, Database port: 0, Database name: zabbix, User: zabbix, Password: (your password), Database TLS encryption: no.Zabbix server name: something memorable like prod-monitor. Choose your default timezone and theme./etc/zabbix/web/zabbix.conf.php and completes.Step 9: First Login and Initial Hardening
Log in with the default credentials:
- Username:
Admin - Password:
zabbix
Super admin, assign to group Zabbix administrators, and give it a strong password. Log out, log back in as the new user, then go back to Users > Users, click on the original Admin, and set Enabled: No.While you are in the admin area, also:
- Set a global URL under Administration > General > GUI:
https://zabbix.yourdomain.com(we will add TLS in Step 14). - Configure SMTP under Alerts > Media types > Email — fill in your SMTP host, port, credentials, and a
Fromaddress.
Step 10: Install and Register zabbix-agent2 on Client Hosts
On each host you want to monitor, install the agent. Add the Zabbix repo just like you did on the server (Step 3), then install the agent:
sudo apt install -y zabbix-agent2Edit /etc/zabbix/zabbix_agent2.conf:
sudo nano /etc/zabbix/zabbix_agent2.confSet:
Server=1.2.3.4 # IP of your Zabbix server
ServerActive=1.2.3.4 # Same IP, for active checks
Hostname=web01.example.com # Unique hostname for this monitored host
HostMetadata=linux-webserverRestart and enable:
sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2Back in the Zabbix UI, go to Data collection > Hosts > Create host, enter the hostname exactly as in the agent config, add the Linux servers by Zabbix agent template, and save. Within 60 seconds the dashboard should show green for agent availability.
Step 11: Auto-Registration and Discovery Rules
Registering dozens or hundreds of hosts by hand is not scalable. Zabbix has two complementary mechanisms for this: active-agent auto-registration (agent calls home, server creates the host) and network discovery (server scans an IP range and creates hosts for responders).
Active Agent Auto-Registration
In the UI, go to Alerts > Actions > Autoregistration actions > Create action.
- Name:
Auto-register Linux hosts - Conditions:
Host metadata contains linux-webserver - Operations:
Add host
- Add to host groups: Linux servers
- Link to templates: Linux by Zabbix agentNow any new host you install with HostMetadata=linux-webserver in its agent config will auto-register, be added to the right group, and inherit the right template the first time it phones home. No manual UI clicks needed.
Network Discovery
For agentless devices (switches, printers, IPMI), use Data collection > Discovery > Create discovery rule:
- Name:
Office LAN sweep - IP range:
192.168.1.1-254 - Checks:
ICMP ping,SNMPv2 agent sysName {.1.3.6.1.2.1.1.5.0} - Update interval:
1h
Generic SNMP template.Step 12: Triggers, Actions, and Notifications
Zabbix separates what is wrong (triggers) from what to do about it (actions).
Triggers
Triggers are boolean expressions over collected items. Most come pre-built in templates, but creating custom ones is straightforward. To alert when a host's 5-minute load average exceeds 4 on a 4-core box, go to Configuration > Hosts > [your host] > Triggers > Create trigger:
- Name:
High CPU load on {HOST.NAME} - Severity:
High - Expression:
last(/web01/system.cpu.load[percpu,avg5]) > 1.0
Actions
Actions wire triggers to media types. Go to Alerts > Actions > Trigger actions > Create action:
- Name:
Notify ops on any high+ severity - Conditions:
Trigger severity is greater than or equals High - Operations:
Send message to user group: Ops TeamviaEmailandSlack - Recovery operations:
Send recovery message
Slack Notifications
Zabbix 7.0 ships a built-in Slack webhook media type. Go to Alerts > Media types > Slack > Update, paste a Slack incoming webhook URL (create one at api.slack.com/apps), and assign the media type to users via Users > Users > [your user] > Media.
Within seconds of saving, any high-severity trigger fires a rich Slack message with the host name, trigger, severity, and a direct link back to the Zabbix UI.
Email Notifications
Under Alerts > Media types > Email, set your SMTP server, credentials, and a From address. Assign this media type to users the same way you did for Slack. For Gmail/Google Workspace, use an app password — not your account password — and smtp.gmail.com:587 with TLS.
Step 13: Connect Grafana with the Zabbix Plugin
Zabbix has a solid built-in UI, but many teams prefer Grafana for polished dashboards and cross-datasource correlation. The Alexander Zobnin Zabbix plugin turns Grafana into a first-class Zabbix frontend.
If you do not yet have Grafana installed, follow our companion guide: how-to-install-grafana-ubuntu. Then install the Zabbix plugin:
sudo grafana-cli plugins install alexanderzobnin-zabbix-app
sudo systemctl restart grafana-serverIn Grafana, go to Connections > Add new connection > Zabbix > Enable, then Add data source:
- URL:
https://zabbix.yourdomain.com/api_jsonrpc.php - Username: a dedicated read-only Zabbix user (create one in the Zabbix UI with role
User) - Password: the user's password
- Trends:
Enabled
Save & test. On success, import one of the community dashboards — Zabbix Server Dashboard (ID 1451) and Linux Servers with Zabbix agent (ID 10047) are excellent starting points.Step 14: Secure the Frontend with Let's Encrypt TLS
Running Zabbix over plain HTTP is fine for an internal network but unacceptable on the public internet. Certbot can provision and auto-renew a free TLS certificate from Let's Encrypt.
Install Certbot:
sudo apt install -y certbot python3-certbot-nginxMake sure your firewall allows HTTP and HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10051/tcp
sudo ufw enableRun Certbot against the Zabbix Nginx config:
sudo certbot --nginx -d zabbix.yourdomain.comWhen prompted, enter your email, accept the ToS, and choose option 2 (Redirect) so that plain HTTP requests are automatically upgraded to HTTPS. Certbot rewrites the Nginx config in place, reloads the service, and registers a systemd timer that renews the cert automatically every 60 days.
Verify:
sudo certbot renew --dry-runExpected output:
Congratulations, all simulated renewals succeeded.Visit https://zabbix.yourdomain.com/ — the padlock should be green, and the TLS grade on ssllabs.com/ssltest should come back as A or A+ on the default Certbot config.
Performance Tuning
Once you cross 50 monitored hosts or 100,000 items, a few tweaks pay big dividends.
MariaDB
Edit /etc/mysql/mariadb.conf.d/50-server.cnf and set:
innodb_buffer_pool_size = 4G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
max_connections = 200Restart MariaDB:
sudo systemctl restart mariadbThe single biggest win is making innodb_buffer_pool_size roughly 50% of your server RAM — Zabbix's workload is extremely read-heavy on recent rows.
Zabbix Server
In /etc/zabbix/zabbix_server.conf, scale these based on host count:
| Parameter | 50 hosts | 200 hosts | 500 hosts |
|---|---|---|---|
StartPollers | 10 | 20 | 50 |
StartPollersUnreachable | 1 | 5 | 10 |
StartTrappers | 5 | 10 | 20 |
StartPingers | 5 | 10 | 20 |
CacheSize | 256M | 1G | 4G |
HistoryCacheSize | 128M | 512M | 2G |
ValueCacheSize | 128M | 512M | 2G |
sudo systemctl restart zabbix-serverHousekeeping
The built-in housekeeper deletes old history rows. For servers with more than a million items, switch to partitioning via TimescaleDB (PostgreSQL) or enable HousekeepingFrequency=24 and MaxHousekeeperDelete=20000 in the server config to spread the work overnight.
Troubleshooting
| Problem | Cause | Solution |
|---|---|---|
| Frontend shows "Zabbix server is not running" | Server daemon down or wrong port in zabbix.conf.php | sudo systemctl status zabbix-server; check /var/log/zabbix/zabbix_server.log; verify ZBX_SERVER_PORT=10051 in /etc/zabbix/web/zabbix.conf.php |
Database error: Access denied for user 'zabbix'@'localhost' | Wrong password in zabbix_server.conf or zabbix.conf.php | Re-set the MariaDB password and update both config files; restart zabbix-server and nginx |
| Hosts show red agent status | Firewall blocking port 10050 (passive) or 10051 (active) | On the agent host: sudo ufw allow from ZABBIX_SERVER_IP to any port 10050. On the server: allow 10051 inbound |
| Web installer says "required PHP extension missing" | PHP extensions not installed or wrong PHP version active | sudo apt install -y php8.3-{mbstring,gd,xml,bcmath,ldap,mysql,gettext}; restart php8.3-fpm |
| Schema import hangs or errors out | log_bin_trust_function_creators not set | sudo mysql -uroot -p -e "SET GLOBAL log_bin_trust_function_creators = 1;" before re-running the import |
| High memory usage, OOM kills | Buffer pool too large, or too many pollers for RAM | Drop innodb_buffer_pool_size and CacheSize; monitor via ps aux --sort=-%mem |
| Slack alerts not firing | Webhook URL wrong, user has no media assigned, or action condition never matches | Check /var/log/zabbix/zabbix_server.log for action-execution lines; test webhook manually with curl |
Viewing Logs
The two most useful log files:
sudo tail -f /var/log/zabbix/zabbix_server.log
sudo tail -f /var/log/nginx/error.logFAQ
Is Zabbix free for commercial use?
Yes. Zabbix is released under the GPLv2 licence, which permits commercial use, modification, and redistribution with no per-host fees. Zabbix LLC sells optional paid support, training, and certified templates, but none of these are required to run a fully featured production deployment. The 7.0 LTS release is supported through 2029 with free security and bugfix updates from the official repositories.
How does Zabbix compare to Prometheus?
Zabbix and Prometheus solve overlapping problems with different philosophies. Prometheus is pull-based (scrapes metrics endpoints on a schedule), excels at ephemeral cloud-native workloads (Kubernetes, containers), uses PromQL as a query language, and pairs with Alertmanager for routing. Zabbix is push- and pull-capable, ships with a rich web UI out of the box, stores configuration and history in a relational database, and covers use cases Prometheus does not (agentless SNMP, IPMI, log file parsing, synthetic web monitoring). Many teams run both: Prometheus for containers and microservices, Zabbix for VMs, network gear, and business-level checks.
Can Zabbix monitor logs like Graylog or Loki?
Zabbix has native log-file item types that tail files on agent hosts and trigger alerts on regex matches — excellent for targeted monitoring of a handful of log patterns. For full-text search, aggregation, and retention of millions of log events, pair Zabbix with a dedicated log platform like Graylog. The two tools complement each other: Zabbix handles metrics and availability, Graylog handles log search and audit trails.
How many hosts can a single Zabbix server handle?
On the CloudCore Professional plan (6 vCPU, 12 GB RAM, 100 GB NVMe), a well-tuned Zabbix 7.0 server comfortably monitors 150–200 hosts with full history retention for 90 days. The practical ceiling on a single server is roughly 1,000 hosts and 500 new values per second, after which you should introduce Zabbix proxies to distribute collection, or move the database to TimescaleDB for better long-term scalability.
Does Zabbix replace a SIEM like Wazuh?
No — the tools overlap only slightly. Zabbix tracks infrastructure health (CPU, disk, services, network latency) and triggers on thresholds. Wazuh is a SIEM/XDR that focuses on security events: file integrity monitoring, rootkit detection, authentication log analysis, compliance reporting, and threat intelligence feeds. For a complete stack, run Zabbix for operational monitoring and Wazuh for security monitoring — they coexist happily on the same hosts with different agents.
How do I back up Zabbix configuration and data?
Two things need backing up: the MariaDB database (which contains both configuration and historical metrics) and the /etc/zabbix/ directory (config files and custom scripts). A simple nightly cron job does the trick:
mysqldump --single-transaction -uzabbix -p'password' zabbix | gzip > /backups/zabbix-$(date +%F).sql.gz
tar czf /backups/zabbix-conf-$(date +%F).tar.gz /etc/zabbix/Ship the resulting files off-server (to S3, Backblaze B2, or another VPS) and you have a recoverable deployment.
Can I upgrade from Zabbix 6.0 LTS to 7.0 LTS in place?
Yes. Stop the server, update the zabbix-release package to the 7.0 variant, run apt update && apt upgrade, and restart the server. The daemon detects the old schema on first start and runs in-place migrations automatically (this can take a few minutes on larger databases). Always take a full database dump before upgrading, and read the official 7.0 upgrade notes for version-specific caveats.
Next Steps
Your Zabbix server is now live, secured, and collecting metrics. Recommended follow-ups:
- Install Grafana for richer dashboards — Follow our Grafana install guide and connect it to Zabbix via the plugin installed in Step 13.
- Add Prometheus for container metrics — If you are running Docker or Kubernetes, deploy Prometheus alongside Zabbix and use node-exporter + cadvisor for per-container visibility.
- Centralize logs with Graylog — Pipe all your systemd, Nginx, and application logs into Graylog for unified search, alerting, and retention.
- Harden with Wazuh SIEM — Install Wazuh agents alongside your Zabbix agents to add security event monitoring, FIM, and compliance reporting.
- Build a status page — Expose a public-facing status page by scraping Zabbix problems via the
api_jsonrpc.phpendpoint into a lightweight tool like Cachet or Statusfy.
- Read the official docs — The Zabbix documentation is extensive and kept current. The template reference and API reference are particularly worth bookmarking.
Run Zabbix on CloudCore Professional>
Our Professional VPS plan is the sweet spot for self-hosted monitoring: enough RAM for the InnoDB buffer pool, enough NVMe for months of metric history, and enough vCPU to run Zabbix, MariaDB, Nginx, and Grafana side by side.>
- 6 vCPU cores
- 12 GB RAM
- 100 GB NVMe SSD
- Unmetered bandwidth
- Deploys in under 60 seconds>
Launch Your Monitoring VPS — Plans start at EUR 19.99/month.