2 Requirements

Hardware

Memory

Zabbix requires both physical and disk memory. The amount of required disk memory obviously depends on the number of hosts and parameters that are being monitored. If you’re planning to keep a long history of monitored parameters, you should be thinking of at least a couple of gigabytes to have enough space to store the history in the database. Each Zabbix daemon process requires several connections to a database server. The amount of memory allocated for the connection depends on the configuration of the database engine.

The more physical memory you have, the faster the database (and therefore Zabbix) works.

CPU

Zabbix and especially Zabbix database may require significant CPU resources depending on number of monitored parameters and chosen database engine.

Other hardware

A serial communication port and a serial GSM modem are required for using SMS notification support in Zabbix. USB-to-serial converter will also work.

Examples of hardware configuration

The table provides examples of hardware configuration, assuming a Linux/BSD/Unix platform.

These are size and hardware configuration examples to start with. Each Zabbix installation is unique. Make sure to benchmark the performance of your Zabbix system in a staging or development environment, so that you can fully understand your requirements before deploying the Zabbix installation to its production environment.

Installation sizeMonitored metrics1CPU/vCPU coresMemory
(GiB)
DatabaseAmazon EC22
Small1 00028MySQL Server,
Percona Server,
MariaDB Server,
PostgreSQL
m6i.large/m6g.large
Medium10 000416MySQL Server,
Percona Server,
MariaDB Server,
PostgreSQL
m6i.xlarge/m6g.xlarge
Large100 0001664MySQL Server,
Percona Server,
MariaDB Server,
PostgreSQL,
Oracle
m6i.4xlarge/m6g.4xlarge
Very large1 000 0003296MySQL Server,
Percona Server,
MariaDB Server,
PostgreSQL,
Oracle
m6i.8xlarge/m6g.8xlarge

1 1 metric = 1 item + 1 trigger + 1 graph
2 Example with Amazon general purpose EC2 instances, using ARM64 or x86_64 architecture, a proper instance type like Compute/Memory/Storage optimised should be selected during Zabbix installation evaluation and testing before installing in its production environment.

Actual configuration depends on the number of active items and refresh rates very much (see database size section of this page for details). It is highly recommended to run the database on a separate box for large installations.

Supported platforms

Due to security requirements and the mission-critical nature of the monitoring server, UNIX is the only operating system that can consistently deliver the necessary performance, fault tolerance, and resilience. Zabbix operates on market-leading versions.

Zabbix components are available and tested for the following platforms:

PlatformServerAgentAgent2
Linuxxxx
IBM AIXxx-
FreeBSDxx-
NetBSDxx-
OpenBSDxx-
HP-UXxx-
Mac OS Xxx-
Solarisxx-
Windows-xx

Zabbix server/agent may work on other Unix-like operating systems as well. Zabbix agent is supported on all Windows desktop and server versions since XP.

Zabbix disables core dumps if compiled with encryption and does not start if the system does not allow disabling of core dumps.

Required software

Zabbix is built around modern web servers, leading database engines, and PHP scripting language.

Third-party external surrounding software

Mandatory requirements are needed always. Optional requirements are needed for the support of the specific function.

SoftwareMandatory statusSupported versionsComments
MySQL/PerconaOne of8.0.30 and newerRequired if MySQL (or Percona) is used as Zabbix backend database. InnoDB engine is required.

We recommend using the C API (libmysqlclient) library for building server/proxy.
MariaDB10.5.00-10.11.XInnoDB engine is required.

We recommend using the MariaDB Connector/C library for building server/proxy.

Added support for MariaDB versions:
- 10.11.X since Zabbix 6.4.1.

See also: Possible deadlocks with MariaDB.
Oracle19c - 21cRequired if Oracle is used as Zabbix backend database.
PostgreSQL13.0-15.XRequired if PostgreSQL is used as Zabbix backend database.
TimescaleDB for PostgreSQL2.0.1-2.10Required if TimescaleDB is used as a PostgreSQL database extension. Make sure to install TimescaleDB Community Edition, which supports compression.

Note that PostgreSQL 15 is supported since TimescaleDB 2.10.

Added support for TimescaleDB versions:
- 2.10 since Zabbix 6.4.1.
SQLiteOptional3.3.5-3.34.XSQLite is only supported with Zabbix proxies. Required if SQLite is used as Zabbix proxy database.
smartmontools7.1 or laterRequired for Zabbix agent 2.
whoRequired for the user count plugin.
dpkgRequired for the system.sw.packages plugin.
pkgtoolRequired for the system.sw.packages plugin.
rpmRequired for the system.sw.packages plugin.
pacmanRequired for the system.sw.packages plugin.

Although Zabbix can work with databases available in the operating systems, for the best experience, we recommend using databases installed from the official database developer repositories.

Frontend

The minimum supported screen width for Zabbix frontend is 1200px.

Mandatory requirements are needed always. Optional requirements are needed for the support of the specific function.

SoftwareMandatory statusVersionComments
Apacheyes1.3.12 or later
PHP7.4.0 - 8.2.XIt is recommended to use PHP 8.0 or newer, because PHP 7.4 is no longer supported by the vendor.
PHP extensions:
gdyes2.0.28 or laterPHP GD extension must support PNG images (—with-png-dir), JPEG (—with-jpeg-dir) images and FreeType 2 (—with-freetype-dir).
bcmathphp-bcmath (—enable-bcmath)
ctypephp-ctype (—enable-ctype)
libXML2.6.15 or laterphp-xml, if provided as a separate package by the distributor.
xmlreaderphp-xmlreader, if provided as a separate package by the distributor.
xmlwriterphp-xmlwriter, if provided as a separate package by the distributor.
sessionphp-session, if provided as a separate package by the distributor.
socketsphp-net-socket (—enable-sockets). Required for user script support.
mbstringphp-mbstring (—enable-mbstring)
gettextphp-gettext (—with-gettext). Required for translations to work.
ldapNophp-ldap. Required only if LDAP authentication is used in the frontend.
opensslphp-openssl. Required only if SAML authentication is used in the frontend.
mysqliRequired if MySQL is used as Zabbix backend database.
oci8Required if Oracle is used as Zabbix backend database.
pgsqlRequired if PostgreSQL is used as Zabbix backend database.

Third-party frontend libraries that are supplied with Zabbix:

LibraryMandatory statusMinimum versionComments
jQuery JavaScript LibraryYes3.6.0JavaScript library that simplifies the process of cross-browser development.
jQuery UI1.12.1A set of user interface interactions, effects, widgets, and themes built on top of jQuery.
OneLogin’s SAML PHP Toolkit4.0.0A PHP toolkit that adds SAML 2.0 authentication support to be able to sign in to Zabbix.
Symfony Yaml Component5.1.0Adds support to export and import Zabbix configuration elements in the YAML format.

Zabbix may work on previous versions of Apache, MySQL, Oracle, and PostgreSQL as well.

For other fonts than the default DejaVu, PHP function imagerotate might be required. If it is missing, these fonts might be rendered incorrectly when a graph is displayed. This function is only available if PHP is compiled with bundled GD, which is not the case in Debian and other distributions.

Third-party libraries used for writing and debugging Zabbix frontend code:

LibraryMandatory statusMinimum versionDescription
ComposerNo2.4.1An application-level package manager for PHP that provides a standard format for managing dependencies of PHP software and required libraries.
PHPUnit8.5.29A PHP unit testing framework for testing Zabbix frontend.
SASS3.4.22A preprocessor scripting language that is interpreted and compiled into Cascading Style Sheets (CSS).
Web browser on client side

Cookies and JavaScript must be enabled.

The latest stable versions of Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari, and Opera are supported.

The same-origin policy for IFrames is implemented, which means that Zabbix cannot be placed in frames on a different domain.

Still, pages placed into a Zabbix frame will have access to Zabbix frontend (through JavaScript) if the page that is placed in the frame and Zabbix frontend are on the same domain. A page like http://secure-zabbix.com/cms/page.html, if placed into dashboards on http://secure-zabbix.com/zabbix/, will have full JS access to Zabbix.

Server/proxy

Mandatory requirements are needed always. Optional requirements are needed for the support of the specific function.

RequirementMandatory statusDescription
libpcre/libpcre2One ofPCRE/PCRE2 library is required for Perl Compatible Regular Expression (PCRE) support.
The naming may differ depending on the GNU/Linux distribution, for example ‘libpcre3’ or ‘libpcre1’. PCRE v8.x and PCRE2 v10.x (from Zabbix 6.0.0) are supported.
libeventYesRequired for inter-process communication. Version 1.4 or higher.
libevent-pthreadsRequired for inter-process communication.
libpthreadRequired for mutex and read-write lock support (could be part of libc).
libresolvRequired for DNS resolution (could be part of libc).
libiconvRequired for text encoding/format conversion (could be part of libc). Mandatory for Zabbix server on Linux.
libzRequired for compression support.
libmMath library. Required by Zabbix server only.
libmysqlclientOne ofRequired if MySQL is used.
libmariadbRequired if MariaDB is used.
libclntshRequired if Oracle is used; libclntsh version must match or be higher than the version of the Oracle database used.
libpq5Required if PostgreSQL is used; libpq5 version must match or be higher than the version of the PostgreSQL database used.
libsqlite3Required if Sqlite is used. Required for Zabbix proxy only.
libOpenIPMINoRequired for IPMI support. Required for Zabbix server only.
libssh2 or libsshRequired for SSH checks. Version 1.0 or higher (libssh2); 0.9.0 or higher (libssh).
libssh is supported since Zabbix 4.4.6.
libcurlRequired for web monitoring, VMware monitoring, SMTP authentication, web.page.* Zabbix agent items, HTTP agent items and Elasticsearch (if used). Version 7.28.0 or higher is recommended.
Libcurl version requirements:
- SMTP authentication: version 7.20.0 or higher
- Elasticsearch: version 7.28.0 or higher
libxml2Required for VMware monitoring and XML XPath preprocessing.
libnetsnmpRequired for SNMP support. Version 5.3.0 or higher.
libunixodbcRequired for database monitoring.
libgnutls or libopensslRequired when using encryption.
Minimum versions: libgnutls - 3.1.18, libopenssl - 1.0.1
libldapRequired for LDAP support.
fpingRequired for ICMP ping items.
Agent
RequirementMandatory statusDescription
libpcre/libpcre2One ofPCRE/PCRE2 library is required for Perl Compatible Regular Expression (PCRE) support.
The naming may differ depending on the GNU/Linux distribution, for example ‘libpcre3’ or ‘libpcre1’. PCRE v8.x and PCRE2 v10.x (from Zabbix 6.0.0) are supported.
Required for log monitoring. Also required on Windows.
libpthreadYesRequired for mutex and read-write lock support (could be part of libc). Not required on Windows.
libresolvRequired for DNS resolution (could be part of libc). Not required on Windows.
libiconvRequired for text encoding/format conversion to UTF-8 in log items, file content, file regex and regmatch items (could be part of libc). Not required on Windows.
libgnutls or libopensslNoRequired if using encryption.
Minimum versions: libgnutls - 3.1.18, libopenssl - 1.0.1
On Microsoft Windows OpenSSL 1.1.1 or later is required.
libldapRequired if LDAP is used. Not supported on Windows.
libcurlRequired for web.page.* Zabbix agent items. Not supported on Windows.
Version 7.28.0 or higher is recommended.
libmodbusOnly required if Modbus monitoring is used.
Version 3.0 or higher.

Starting from version 5.0.3, Zabbix agent will not work on AIX platforms below versions 6.1 TL07 / AIX 7.1 TL01.

Agent 2
RequirementMandatory statusDescription
libpcre/libpcre2One ofPCRE/PCRE2 library is required for Perl Compatible Regular Expression (PCRE) support.
The naming may differ depending on the GNU/Linux distribution, for example ‘libpcre3’ or ‘libpcre1’. PCRE v8.x and PCRE2 v10.x (from Zabbix 6.0.0) are supported.
Required for log monitoring. Also required on Windows.
libopensslNoRequired when using encryption.
OpenSSL 1.0.1 or later is required on UNIX platforms.
The OpenSSL library must have PSK support enabled. LibreSSL is not supported.
On Microsoft Windows systems OpenSSL 1.1.1 or later is required.

Golang libraries

RequirementMandatory statusMinimum versionDescription
git.zabbix.com/ap/plugin-supportYes1.X.XZabbix own support library. Mostly for plugins.
github.com/BurntSushi/locker0.0.0Named read/write locks, access sync.
github.com/chromedp/cdproto0.0.0Generated commands, types, and events for the Chrome DevTools Protocol domains.
github.com/chromedp/chromedp0.6.0Chrome DevTools Protocol support (report generation).
github.com/dustin/gomemcached0.0.0A memcached binary protocol toolkit for go.
github.com/eclipse/paho.mqtt.golang1.2.0A library to handle MQTT connections.
github.com/fsnotify/fsnotify1.4.9Cross-platform file system notifications for Go.
github.com/go-ldap/ldap3.0.3Basic LDAP v3 functionality for the GO programming language.
github.com/go-ole/go-ole1.2.4Win32 ole implementation for golang.
github.com/godbus/dbus4.1.0Native Go bindings for D-Bus.
github.com/go-sql-driver/mysql1.5.0MySQL driver.
github.com/godror/godror0.20.1Oracle DB driver.
github.com/mattn/go-sqlite32.0.3Sqlite3 driver.
github.com/mediocregopher/radix/v33.5.0Redis client.
github.com/memcachier/mc/v33.0.1Binary Memcached client.
github.com/miekg/dns1.1.43DNS library.
github.com/omeid/go-yarn0.0.1Embeddable filesystem mapped key-string store.
github.com/goburrow/modbus0.1.0Fault-tolerant implementation of Modbus.
golang.org/x/sys0.0.0Go packages for low-level interactions with the operating system.
Also used in plugin support lib. Used in MongoDB plugin.
github.com/Microsoft/go-winioOn Windows.
Yes, indirect1
0.6.0Windows named pipe implementation.
Also used in plugin support lib. Used in MongoDB plugin.
github.com/goburrow/serialYes, indirect10.1.0Serial library for Modbus.
golang.org/x/xerrors0.0.0Functions to manipulate errors.
gopkg.in/asn1-ber.v11.0.0Encoding/decoding library for ASN1 BER.
github.com/go-stack/stackNo, indirect11.8.0
github.com/golang/snappy0.0.1
github.com/klauspost/compress1.13.6
github.com/xdg-go/pbkdf21.0.0
github.com/xdg-go/scram1.0.2
github.com/xdg-go/stringprep1.0.2
github.com/youmark/pkcs80.0.0
golang.org/x/sys0.0.0

1 “Indirect” means that it is used in one of the libraries that the agent uses. It’s required since Zabbix uses the library that uses the package.

See also dependencies for loadable plugins:

Java gateway

If you obtained Zabbix from the source repository or an archive, then the necessary dependencies are already included in the source tree.

If you obtained Zabbix from your distribution’s package, then the necessary dependencies are already provided by the packaging system.

In both cases above, the software is ready to be used and no additional downloads are necessary.

If, however, you wish to provide your versions of these dependencies (for instance, if you are preparing a package for some Linux distribution), below is the list of library versions that Java gateway is known to work with. Zabbix may work with other versions of these libraries, too.

The following table lists JAR files that are currently bundled with Java gateway in the original code:

LibraryMandatory statusMinimum versionComments
android-jsonYes4.3r1JSON (JavaScript Object Notation) is a lightweight data-interchange format. This is the org.json compatible Android implementation extracted from the Android SDK.
logback-classic1.2.9
logback-core1.2.9
slf4j-api1.7.32

Java gateway can be built using either Oracle Java or open-source OpenJDK (version 1.6 or newer). Packages provided by Zabbix are compiled using OpenJDK. The table below provides information about OpenJDK versions used for building Zabbix packages by distribution:

DistributionOpenJDK version
RHEL 81.8.0
RHEL 71.8.0
SLES 1511.0.4
SLES 121.8.0
Debian 1011.0.8
Ubuntu 20.0411.0.8
Ubuntu 18.0411.0.8

Default port numbers

The following list of open ports per component is applicable for default configuration:

Zabbix componentPort numberProtocolType of connection
Zabbix agent10050TCPon demand
Zabbix agent 210050TCPon demand
Zabbix server10051TCPon demand
Zabbix proxy10051TCPon demand
Zabbix Java gateway10052TCPon demand
Zabbix web service10053TCPon demand
Zabbix frontend80HTTPon demand
443HTTPSon demand
Zabbix trapper10051TCPon demand

The port numbers should be open in firewall to enable Zabbix communications. Outgoing TCP connections usually do not require explicit firewall settings.

Database size

Zabbix configuration data require a fixed amount of disk space and do not grow much.

Zabbix database size mainly depends on these variables, which define the amount of stored historical data:

  • Number of processed values per second

This is the average number of new values Zabbix server receives every second. For example, if we have 3000 items for monitoring with a refresh rate of 60 seconds, the number of values per second is calculated as 3000/60 = 50.

It means that 50 new values are added to Zabbix database every second.

  • Housekeeper settings for history

Zabbix keeps values for a fixed period of time, normally several weeks or months. Each new value requires a certain amount of disk space for data and index.

So, if we would like to keep 30 days of history and we receive 50 values per second, the total number of values will be around (30*24*3600)* 50 = 129.600.000, or about 130M of values.

Depending on the database engine used, type of received values (floats, integers, strings, log files, etc), the disk space for keeping a single value may vary from 40 bytes to hundreds of bytes. Normally it is around 90 bytes per value for numeric items2. In our case, it means that 130M of values will require 130M * 90 bytes = 10.9GB of disk space.

The size of text/log item values is impossible to predict exactly, but you may expect around 500 bytes per value.

  • Housekeeper setting for trends

Zabbix keeps a 1-hour max/min/avg/count set of values for each item in the table trends. The data is used for trending and long period graphs. The one hour period can not be customized.

Zabbix database, depending on the database type, requires about 90 bytes per each total. Suppose we would like to keep trend data for 5 years. Values for 3000 items will require 3000*24*365* 90 = 2.2GB per year, or 11GB for 5 years.

  • Housekeeper settings for events

Each Zabbix event requires approximately 250 bytes of disk space1. It is hard to estimate the number of events generated by Zabbix daily. In the worst-case scenario, we may assume that Zabbix generates one event per second.

For each recovered event, an event_recovery record is created. Normally most of the events will be recovered so we can assume one event_recovery record per event. That means additional 80 bytes per event.

Optionally events can have tags, each tag record requiring approximately 100 bytes of disk space1. The number of tags per event (#tags) depends on configuration. So each will need an additional #tags * 100 bytes of disk space.

It means that if we want to keep 3 years of events, this would require 3*365*24*3600* (250+80+#tags*100) = ~30GB+#tags*100B disk space2.

1 More when having non-ASCII event names, tags and values.
2 The size approximations are based on MySQL and might be different for other databases.

The table contains formulas that can be used to calculate the disk space required for Zabbix system:

ParameterFormula for required disk space (in bytes)
Zabbix configurationFixed size. Normally 10MB or less.
Historydays(items/refresh rate)243600bytes
items : number of items
days : number of days to keep history
refresh rate : average refresh rate of items
bytes : number of bytes required to keep single value, depends on database engine, normally ~90 bytes.
Trendsdays(items/3600)243600bytes
items : number of items
days : number of days to keep history
bytes : number of bytes required to keep single trend, depends on the database engine, normally ~90 bytes.
Eventsdaysevents243600bytes
events : number of event per second. One (1) event per second in worst-case scenario.
days : number of days to keep history
bytes : number of bytes required to keep single trend, depends on the database engine, normally ~330 + average number of tags per event * 100 bytes.

So, the total required disk space can be calculated as:
Configuration + History + Trends + Events
The disk space will NOT be used immediately after Zabbix installation. Database size will grow then it will stop growing at some point, which depends on housekeeper settings.

Time synchronization

It is very important to have precise system time on the server with Zabbix running. ntpd is the most popular daemon that synchronizes the host’s time with the time of other machines. It’s strongly recommended to maintain synchronized system time on all systems Zabbix components are running on.

Network requirements

A following list of open ports per component is applicable for default configuration.

PortComponents
Frontendhttp on 80, https on 443
Server10051 (for use with active proxy/agents)
Active Proxy10051
Passive Proxy10051
Agent210050
Trapper
JavaGateway10053
WebService10053

The port numbers should be opened in the firewall to enable external communications with Zabbix. Outgoing TCP connections usually do not require explicit firewall settings.