Zabbix is an Open Source, high-level enterprise software designed to monitor and keep track of networks, servers, and applications in real-time. Build in a server-client model, Zabbix can collect different types of data that are used to create historical graphics and output performance or load trends of the monitored targets.
The server has the ability to check standard networking services (HTTP, FTP, SMTP, IMAP, etc) without the need to install extra software on the monitored hosts.
However, in order to gather data and create statistics about local services or other specific system resources that run on remote instances, such as CPU, disks, internal system process, RAM, etc, you need to install and configure a Zabbix agent.
Following are the 4-article series about the Zabbix Monitoring application:
This tutorial will focus on how to install the latest version of the Zabbix Server on Debian/Ubuntu and RHEL/CentOS /Fedora/Rocky Linux/AlmaLinux with MySQL/MariaDB backend database to store collected data, PHP and Apache Web Server as the mainly web interface.
Important: The given Zabbix instructions also work on all Debian derivatives and RedHat-based distros like RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux.
Step 1: Install Apache Web Server and PHP
1. First, update the software packages and then install Apache Web Server alongside PHP and its extensions in order to provide the web-backed functionality for Zabbix Server by issuing the following command.
--------------- On Debian/Ubuntu --------------- $ sudo apt update && sudo apt upgrade $ sudo apt install apache2 php php-mysql php-mysqlnd php-ldap php-bcmath php-mbstring php-gd php-pdo php-xml libapache2-mod-php --------------- On RHEL-based Distros --------------- # yum update && yum upgrade # yum -y install epel-release # yum install httpd php php-mysqlnd php-ldap php-bcmath php-mbstring php-gd php-xml
2. Next, you need to tune the PHP interpreter and adjust some values in order to run Zabbix Server. So, open Apache
php.ini configuration file for editing by issuing the following command:
$ sudo nano /etc/php/7.X/apache2/php.ini [On Debian/Ubuntu] # vi /etc/php.ini [On RHEL/CentOS/]
Now, search with CTRL+C and replace the following PHP values as it follows:
post_max_size = 16M upload_max_filesize = 2M max_execution_time 300 max_input_time = 300 memory_limit 128M session.auto_start = 0 mbstring.func_overload = 0 date.timezone = Europe/Bucharest
Replace the date.timezone variable according to your server’s geographical location. A list of PHP-supported Timezones can be found here http://php.net/manual/en/timezones.php.
3. After updating the PHP configuration file, restart Apache daemon to reflect changes by issuing the following command.
$ sudo systemctl restart apache2.service [On Debian/Ubuntu] # systemctl restart httpd.service [On RHEL/CentOS]
Step 2: Install MariaDB Database and Library
4. On the next step install the MariaDB database and MySQL development library from binary packages. As MariaDB installs on your system you will be asked to set a password for the database root user during installation (Only on Debian). Choose a strong password, repeat it and wait for the installation to finish.
$ sudo apt-get install mariadb-server mariadb-client libmysqld-dev [On Debian/Ubuntu] # yum install mariadb-server mariadb-client mariadb-devel [On RHEL/CentOS]
5. When the installation of Mariadb finishes, start and secure the database by issuing mysql_secure_installation command with system root privileges ( answer with yes for removing anonymous users, disable root login remotely, remove test database and access to it and apply all changes).
$ sudo systemctl start mariadb $ sudo mysql_secure_installation OR # systemctl start mariadb # mysql_secure_installation
Use the below screenshot as a guide.
6. The next requirement for Zabbix is setting up an RDBMS database. Log in to your LAMP stack database component (MySQL or MariaDB) and create a Zabbix database and the credentials required to manage the database, by issuing the following commands.
Make sure you replace the database name, user, and password to match your own settings.
# mysql -u root -p MariaDB [(none)]> create database zabbixdb character set utf8 collate utf8_bin; MariaDB [(none)]> grant all privileges on zabbixdb.* to 'zabbixuser'@'localhost' identified by 'password1'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> exit
Step 3: Install Zabbix Server
7. Now, start to install the Zabbix server and Zabbix PHP frontend application by adding the official Zabbix repositories to your system package manager by issuing the following commands with root privileges.
Install Zabbix on Debian
--------------- On Debian 11 --------------- $ sudo wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian11_all.deb $ sudo dpkg -i zabbix-release_5.4-1+debian11_all.deb $ sudo apt update $ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent --------------- On Debian 10 --------------- $ sudo wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian10_all.deb $ sudo dpkg -i zabbix-release_5.4-1+debian10_all.deb $ sudo apt update $ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
Install Zabbix on Ubuntu
--------------- On Ubuntu 20.04 --------------- $ sudo wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_all.deb $ sudo dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb $ sudo apt update $ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent --------------- On Ubuntu 18.04 --------------- $ sudo wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu18.04_all.deb $ sudo dpkg -i zabbix-release_5.4-1+ubuntu18.04_all.deb $ sudo apt update $ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
Install Zabbix on RHEL-based Distros
# rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm # dnf clean all # dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent
If you want to download and compile an older version, please visit Zabbix official Sourceforge repositories.
8. On the next step, restart the Apache HTTP server in order to apply the Zabbix configuration file installed for Apache.
$ sudo systemctl restart apache2 [On Debian/Ubuntu] # systemctl restart httpd [On RHEL/CentOS] # setenforce 0 [Disable SELinux on RHEL/CentOS]
Step 4: Configure Zabbix Server and Agent
9. Before configuring the server, first, import Zabbix’s initial database schema to the MySQL database. Import the schema against the database created for the Zabbix application, by issuing the below command.
$ sudo zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -u zabbixuser zabbixdb -p OR # zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -u zabbixuser zabbixdb -p
10. On the next step, set up the Zabbix server by opening the main configuration file for editing with the following command.
$ sudo nano /etc/zabbix/zabbix_server.conf OR # nano /etc/zabbix/zabbix_server.conf
In zabbix_server.conf file search and modify the following lines as presented in the below excerpt. Update the variables to reflect your own database settings.
DBHost=localhost DBName=zabbixdb DBUser=zabbixuser DBPassword=password1
11. Finally, save and close the Zabbix server configuration file by pressing Ctrl+o and Ctrl+x file and restarting the Zabbix daemon to apply changes by issuing the below command.
# systemctl restart zabbix-server.service
12. Next, configure the Zabbix Agent configuration file by updating the following lines. First, open the file for editing.
# nano /etc/zabbix/zabbix_agentd.conf
Zabbix agent configuration file excerpt:
13. Save and close the Zabbix agent configuration file and restart Zabbix Agent to reflect changes by issuing the following command.
# systemctl restart zabbix-agent.service
Step 5: Install and Configure Zabbix Frontend Interface
15. Now it’s time to install the Zabbix Server Frontend web interface. In order to accomplish this step open a browser and navigate to your server IP Address using HTTP or HTTPS protocol and the welcome screen should appear. Hit the Next button to move forward.
http://192.168.1.151/zabbix/setup.php OR https://192.168.1.151/zabbix/setup.php
On the first welcome screen, just hit the Next step button to move to the new step of the installation process.
16. After a series of checks, if all pre-requires values are satisfied, hit the Next button to proceed further.
17. On the next step provide the settings for the MySQL database, hit the Test connection button to test MySQL connectivity, and move to the step by pressing the Next button.
18. Next, supply the Host (or IP Address) and the Port of the Zabbix server (use the host localhost and the port 10051 because Zabbix server is configured to run on the same host as the Zabbix frontend web interface in this tutorial) and a Name for Zabbix frontend installation. When you’re done hit Next to continue.
19. Next, check all the configurations parameters, enter the command line, and issue the following command to grant Zabbix permissions to write the apache web configuration file in the conf directory.
Then switch back to the web interface and hit the Next button to write the Zabbix configuration file.
$ sudo chown -R www-data /var/www/html/conf/ [on Debian/Ubuntu] # chown -R apache /var/www/html/conf/ [on RHEL/CentOS]
20. After the installation process completes, a congratulations message will appear in your browser. Hit on the Finish button to exit the Zabbix frontend installer.
21. Finally, navigate to your server IP address or domain name by appending /zabbix URL address and log in to the Zabbix web admin panel with the default credentials presented below.
https://your_domain.tld/zabbix/ Username: Admin Password: zabbix
22. After you’ve logged in to the Zabbix admin panel, you can start to configure Zabbix and add new network resources to be monitored by the Zabbix server.
23. To change the Zabbix frontend admin account password, navigate to Administration -> Users –> User and hit on the Change password button and add your new password, as illustrated in the below screenshot. Finally, hit on the bottom Update button in order to save the admin account’s new password.
That’ll! The next series concerning the Zabbix monitoring system will discuss how to set up the server further using the web interface and how to install and configure Zabbix agents on different Linux distributions or even Windows systems.