You can get the very latest version of Zabbix by compiling it from the sources.
A step-by-step tutorial for installing Zabbix from the sources is provided here.
Go to the Zabbix download page and download the source archive. Once downloaded, extract the sources, by running:
$ tar -zxvf zabbix-4.0.0.tar.gz
Enter the correct Zabbix version in the command. It must match the name of the downloaded archive.
For all of the Zabbix daemon processes, an unprivileged user is required. If a Zabbix daemon is started from an unprivileged user account, it will run as that user.
However, if a daemon is started from a 'root' account, it will switch to a 'zabbix' user account, which must be present. To create such a user account (in its own group, "zabbix"),
on a RedHat-based system, run:
groupadd --system zabbix useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
on a Debian-based system, run:
addgroup --system --quiet zabbix adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix
Zabbix processes do not need a home directory, which is why we do not recommend creating it. However, if you are using some functionality that requires it (e. g. store MySQL credentials in
$HOME/.my.cnf) you are free to create it using the following commands.
On RedHat-based systems, run:
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix chown zabbix:zabbix /usr/lib/zabbix
On Debian-based systems, run:
mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix chown zabbix:zabbix /var/lib/zabbix
A separate user account is not required for Zabbix frontend installation.
If Zabbix server and agent are run on the same machine it is recommended to use a different user for running the server than for running the agent. Otherwise, if both are run as the same user, the agent can access the server configuration file and any Admin level user in Zabbix can quite easily retrieve, for example, the database password.
Running Zabbix as
bin, or any other account with special rights is a security risk.
SQL scripts are provided for creating database schema and inserting the dataset. Zabbix proxy database needs only the schema while Zabbix server database requires also the dataset on top of the schema.
Having created a Zabbix database, proceed to the following steps of compiling Zabbix.
When configuring the sources for a Zabbix server or proxy, you must specify the database type to be used. Only one database type can be compiled with a server or proxy process at a time.
To see all of the supported configuration options, inside the extracted Zabbix source directory run:
To configure the sources for a Zabbix server and agent, you may run something like:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
For virtual machine monitoring
--with-libxml2 configuration options are required;
--with-libcurl is also required for SMTP authentication and
web.page.* Zabbix agent items. Note that cURL 7.20.0 or higher is required with the
--with-libcurl configuration option.
Since version 3.4.0, Zabbix will always compile with the PCRE library; installing it is not optional.
--with-libpcre=[DIR] only allows pointing to a specific base install directory, instead of searching through a number of common places for the libpcre files.
To configure the sources for a Zabbix server (with PostgreSQL etc.), you may run:
./configure --enable-server --with-postgresql --with-net-snmp
To configure the sources for a Zabbix proxy (with SQLite etc.), you may run:
./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2
To configure the sources for a Zabbix agent, you may run:
You may use the --enable-static flag to statically link libraries. If you plan to distribute compiled binaries among different servers, you must use this flag to make these binaries work without required libraries. Note that --enable-static does not work under Solaris.
Using --enable-static option is not recommended when building server.
In order to build the server statically you must have a static version of every external library needed. There is no strict check for that in configure script.
If ./configure fails due to missing libraries or some other circumstance, please take a look at the
config.log file for more detailed error description. For example, if we have missing libssl, the error message may be misleading:
checking for main in -lmysqlclient... no configure: error: Not found mysqlclient library
But, if we look at
config.log, it has a more detailed description for configuration failure:
/usr/bin/ld: cannot find -lssl /usr/bin/ld: cannot find -lcrypto
Command-line utilities zabbix_get and zabbix_sender are compiled if --enable-agent option is used.
Add optional path to the MySQL configuration file --with-mysql=/<path_to_the_file>/mysql_config to select the desired MySQL client library when there is a need to use one that is not located in the default location.
It is useful when there are several versions of MySQL installed or MariaDB installed alongside MySQL on the same system.
Use --with-ibm-db2 flag to specify location of the CLI API.
Use --with-oracle flag to specify location of the OCI API.
For encryption support see Compiling Zabbix with encryption support.
See also: known issues with compiling Zabbix agent on HP-UX.
If installing from git, it is required to run first:
$ make dbschema
This step should be run as a user with sufficient permissions (commonly 'root', or by using
make install will by default install the daemon binaries (zabbix_server, zabbix_agentd, zabbix_proxy) in /usr/local/sbin and the client binaries (zabbix_get, zabbix_sender) in /usr/local/bin.
To specify a different location than /usr/local, use a --prefix key in the previous step of configuring sources, for example --prefix=/home/zabbix. In this case daemon binaries will be installed under <prefix>/sbin, while utilities under <prefix>/bin. Man pages will be installed under <prefix>/share.
You need to configure this file for every host with zabbix_agentd installed.
You must specify the Zabbix server IP address in the file. Connections from other hosts will be denied.
You must specify the database name, user and password (if using any).
The rest of the parameters will suit you with their defaults if you have a small installation (up to ten monitored hosts). You should change the default parameters if you want to maximize the performance of Zabbix server (or proxy) though. See the performance tuning section for more details.
You must specify the server IP address and proxy hostname (must be known to the server), as well as the database name, user and password (if using any).
With SQLite the full path to database file must be specified; DB user and password are not required.
Run zabbix_server on the server side.
Make sure that your system allows allocation of 36MB (or a bit more) of shared memory, otherwise the server may not start and you will see "Cannot allocate shared memory for <type of cache>." in the server log file. This may happen on FreeBSD, Solaris 8.
See the "See also" section at the bottom of this page to find out how to configure shared memory.
Run zabbix_agentd on all the monitored machines.
Make sure that your system allows allocation of 2MB of shared memory, otherwise the agent may not start and you will see "Cannot allocate shared memory for collector." in the agent log file. This may happen on Solaris 8.
If you have installed Zabbix proxy, run zabbix_proxy.
Zabbix frontend is written in PHP, so to run it a PHP supported webserver is needed. Installation is done by simply copying the PHP files from frontends/php to the webserver HTML documents directory.
Common locations of HTML documents directories for Apache web servers include:
It is suggested to use a subdirectory instead of the HTML root. To create a subdirectory and copy Zabbix frontend files into it, execute the following commands, replacing the actual directory:
mkdir <htdocs>/zabbix cd frontends/php cp -a . <htdocs>/zabbix
If planning to use any other language than English, see Installation of additional frontend languages for instructions.
In Zabbix 4.0.8 (only) the web server user requires write permissions to the
In your browser, open Zabbix URL: http://<server_ip_or_name>/zabbix
You should see the first screen of the frontend installation wizard.
Make sure that all software prerequisites are met.
|PHP memory_limit option||128MB||In php.ini:
memory_limit = 128M
|PHP post_max_size option||16MB||In php.ini:
post_max_size = 16M
|PHP upload_max_filesize option||2MB||In php.ini:
upload_max_filesize = 2M
|PHP max_execution_time option||300 seconds (values 0 and -1 are allowed)||In php.ini:
max_execution_time = 300
|PHP max_input_time option||300 seconds (values 0 and -1 are allowed)||In php.ini:
max_input_time = 300
|PHP session.auto_start option||must be disabled||In php.ini:
session.auto_start = 0
|Database support||One of: MySQL, Oracle, PostgreSQL, IBM DB2||One of the following modules must be installed:
mysql, oci8, pgsql, ibm_db2
|PHP mbstring.func_overload option||must be disabled||In php.ini:
mbstring.func_overload = 0
|PHP always_populate_raw_post_data option||must be disabled||Required only for PHP versions 5.6.0 or newer.
always_populate_raw_post_data = -1
|sockets||php-net-socket. Required for user script support.|
|gd||2.0 or higher||php-gd. PHP GD extension must support PNG images (--with-png-dir), JPEG (--with-jpeg-dir) images and FreeType 2 (--with-freetype-dir).|
|libxml||2.6.15||php-xml or php5-dom|
Since Zabbix 2.2.1, the PHP gettext extension is not a mandatory requirement for installing Zabbix. If gettext is not installed, the frontend will work as usual, however, the translations will not be available.
Optional pre-requisites may also be present in the list. A failed optional prerequisite is displayed in orange and has a Warning status. With a failed optional pre-requisite, the setup may continue.
If there is a need to change the Apache user or user group, permissions to the session folder must be verified. Otherwise Zabbix setup may be unable to continue.
Enter details for connecting to the database. Zabbix database must already be created.
Enter Zabbix server details.
Entering a name for Zabbix server is optional, however, if submitted, it will be displayed in the menu bar and page titles.
Review a summary of settings.
Download the configuration file and place it under conf/ in the webserver HTML documents subdirectory where you copied Zabbix PHP files to.
Providing the webserver user has write access to conf/ directory the configuration file would be saved automatically and it would be possible to proceed to the next step right away.
Finish the installation.
Zabbix frontend is ready! The default user name is Admin, password zabbix.
Proceed to getting started with Zabbix.
It is required to install Java gateway only if you want to monitor JMX applications. Java gateway is lightweight and does not require a database.
To install from sources, first download and extract the source archive.
To compile Java gateway, run the
./configure script with
--enable-java option. It is advisable that you specify the
--prefix option to request installation path other than the default /usr/local, because installing Java gateway will create a whole directory tree, not just a single executable.
$ ./configure --enable-java --prefix=$PREFIX
To compile and package Java gateway into a JAR file, run
make. Note that for this step you will need
jar executables in your path.
Now you have a zabbix-java-gateway-$VERSION.jar file in src/zabbix_java/bin. If you are comfortable with running Java gateway from src/zabbix_java in the distribution directory, then you can proceed to instructions for configuring and running Java gateway. Otherwise, make sure you have enough privileges and run
$ make install
Proceed to setup for more details on configuring and running Java gateway.