How to Install the Zabbix Monitoring Tool on Rocky Linux by Marouane May 9, 2024 linux

How to Install the Zabbix Monitoring Tool on Rocky Linux

Zabbix is an open source monitoring software for companies. It is not limited to monitoring servers, but can also monitor network devices, cloud services, virtual machines and containers, databases and applications, IoT sensors, etc. The open source monitoring tool Zabbix is built on security: Communication between Zabbix components is encrypted by default. Zabbix is 100% open source and can be used both on-premise and in the cloud. It also supports distributed monitoring and high availability.

Thanks to extensive support from software and hardware providers, Zabbix can be integrated into numerous applications and services. For example, the integration of Zabbix with cloud services such as Google Cloud and Amazon Web Services or the integration of Zabbix with Prometheus and Grafana, etc.

The main component of Zabbix (server and agent) is written in C, the frontend in PHP. You can install Zabbix with different database backends, including MySQL, PostgreSQL, TimescaleDB, Oracle and SQLite. Zabbix is a free monitoring tool released under the GNU GPL v2 license.

In this tutorial you will set up the Zabbix Enterprise Monitoring Solution on the Rocky Linux Server. You will install Zabbix with PostgreSQL as database backend and the web server Apache2/httpd. This will allow you to monitor your server infrastructure with a free and enterprise-grade solution. You can monitor virtual machines, Linux, Windows, applications and services, clouds and also network devices.

Prerequisites

You will need the following infrastructure requirements for this tutorial:

Installing the Zabbix packages

In this first step, you will set up the Zabbix repository for the Rocky Linux system and install some of the basic packages of the Zabbix monitoring tool. The official Zabbix repository provides a repository for several Linux distributions, including Rocky Linux, a CentOS/RHEL-based distribution. You also activate some additional package repositories such as PHP 7.4 and the PostgreSQL database.

Run the following command to add the Zabbix repository to your Rocky Linux system. At the time of writing, we are installing the latest version of Zabbix 6.2. You can also download a different version of Zabbix from the official Zabbix download page.

sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-1.el8.noarch.rpm

Next, run the following dnf command to check and verify the repository list on the Rocky Linux system. Then create a new repository metadata cache.

You should see that the Zabbix repository has been added to the Rocky Linux system.

sudo dnf repolist
sudo dnf makecache

add zabbix repository

Zabbix requires PHP packages that are used for the Zabbix front-end (user dashboard). At the time of writing, PHP v8.0 is not yet supported. Therefore, you need to set up the PHP repository module v7.4.

Execute the following dnf command to enable the PHP repository module for PHP v7.4. Enter y when prompted to configure.

sudo dnf module enable php:7.4

enable php repository

Now install Zabbix with some package dependencies for Zabbix Monitoring Stack with the following dnf command. Enter Y to confirm the installation and press ENTER. The installation of Zabbix should start.

sudo dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

install zabbix

Installation of PostgreSQL Server

Zabbix supports RDBMS like MariaDB/MySQL and PostgreSQL for the database backend. In this example we will install Zabbix with PostgreSQL as database backend. So you install the PostgreSQL server and set up the database and user for Zabbix.

The latest version of Zabbix requires at least PostgreSQL v13. Execute the following dnf command to activate the PostgreSQL repository module for v13.

Enter y to confirm and activate the repository module"postgresql:13".

sudo dnf module enable postgresql:13

enable postgresql repository

Install the PostgreSQL server with the following command. Enter Y to confirm the installation and press ENTER to continue.

sudo dnf install postgresql-server postgresql-contrib

install postgresql

The PostgreSQL server should now be installed on your computer. Now execute the following command to initialize the configuration of the PostgreSQL server.

sudo postgresql-setup --initdb

Start and then activate the PostgreSQL service with the following command. Then check and verify the PostgreSQL service.

initialize postgresql

You should now see that PostgreSQL is"activated" and is automatically executed when the system is started. The current status is "running".

sudo systemctl enable --now postgresql
sudo systemctl status postgresql

check postgresql

To set up PostgreSQL as a database backend for Zabbix, you need to set up the correct authentication for PostgreSQL database users. You can do this by editing the PostgreSQL configurations.

Edit the file"/var/lib/pgsql/data/postgresql.conf" with the following command.

sudo nano /var/lib/pgsql/data/postgresql.conf

Remove the comment character from the option"password_encryption" and change the value to"scram-sha-256". This option activates password encryption for all PostgreSQL users.

password_encryption = scram-sha-256

Save and close the file when you are done.

Next, edit the configuration"/var/lib/pgsql/data/pg_hba.conf" with the command below. Then enable the authentication method for PostgreSQL users.

sudo nano /var/lib/pgsql/data/pg_hba.conf

Change the local authentication for local connections to the method "scram-sha-256".

# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Save and close the file when you are done.

Restart the PostgreSQL service to implement and apply the changes.

sudo systemctl restart postgresql

You have finished configuring the PostgreSQL server authentication methods with"scram-sha-256". You will now create a new PostgreSQL user and a database for Zabbix.

Execute the following command to create a new PostgreSQL user. In the following you will be asked for some configurations:

sudo -u postgres createuser --interactive

Next, run the following command to log in to the PostgreSQL shell as user "zabbix" and connect to the default database "postgres".

sudo -u zabbix psql -U zabbix -d postgres

Execute the following command in the PostgreSQL shell to create a new database with the name "zabbix". Then set the password for the user"zabbix". In this example we use the password"zabbixRocks".

CREATE DATABASE zabbix;
ALTER USER zabbix WITH ENCRYPTED PASSWORD 'zabbixRocks';

Press"Ctrl+d" or simply enter"\q" to exit the PostgreSQL shell and leave.

create database user

Now run the following command to ensure that the new PostgreSQL user"zabbix" can connect to the PostgreSQL database "zabbix". You will be asked for the password for"zabbix", enter the password"zabbixRocks".

sudo -u zabbix psql -U zabbix -d zabbix -h localhost

If you are logged into the PostgreSQL shell of the "zabbix" database, run the following command to check the connection details of the current session.

You should see that you are connected via the PostgreSQL"zabbix" to the PostgreSQL server"localhost" and the database"zabbix".

\conninfo

check postgresql user

Setting up Zabbix with the PostgreSQL database

After you have installed the PostgreSQL server and set up the new database and user. Now set up Zabbix with PostgreSQL as the database backend.

Execute the following command to import the Zabbix database schema into the PostgreSQL database"zabbix".

zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Next, edit the Zabbix server configuration"/etc/zabbix/zabbix_server.conf" with the following command.

sudo nano /etc/zabbix/zabbix_server.conf

Remove the comment in the line"DBPassword" and enter the "zabbix" database password"zabbixRocks".

DBPassword=zabbixRocks

Save and close the file when you are finished.

Before you restart the Zabbix services, you need to set up the SELinux configuration and the propel firewall rules.

Run the following command to set up SELinux for Zabbix. This configuration enables communication between the Zabbix frontend and the server.

sudo setsebool -P httpd_can_connect_zabbix on
sudo setsebool -P httpd_can_network_connect_db on

Now execute the following command to add firewalld rules for Zabbix. The HTTP service is for accessing the Zabbix frontend and the port "10050/tcp" is used by the Zabbix agent.

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=10050/tcp --permanent
sudo firewall-cmd --reload

Finally, execute the following command to start and activate the Zabbix stack services. These include the services zabbix-server, zabbix-agent, httpd, php-fpm and PostgreSQL.

sudo systemctl start zabbix-server zabbix-agent httpd php-fpm postgresql
sudo systemctl enable zabbix-server zabbix-agent httpd php-fpm postgresql

Installing the Zabbix web interface

Open your web browser and call up the IP address of the Zabbix server followed by the path URL "/zabbix" (i.e.: http://192.168.5.100/zabbix). You should see the welcome page of the Zabbix monitoring tool.

Select the default language for your Zabbix installation and click on"Next step".

welcome zabbix installation page

Now the Zabbix web installer will perform a system check for the Zabbix installation. Make sure that the status is"OK" and then click on"Next step" to continue.

zabbix installation checks

For the database configuration, select"PostgreSQL" as the database type. Then enter the database name, the database user and the password. Click on"Next step" to continue.

If your database configuration is correct, you will see a new page. However, if an error occurs, you should check your database details and check the Zabbix log file under"/var/log/zabbix". In addition, you can also check the"auditd" log if an error occurs in connection with SELinux.

setup zabbix postgresql

To configure the Zabbix web interface, enter the Zabbix server and select the time zone. Then click on"Next step" again.

zabbix settings

Check the configuration of your Zabbix installation again. When you are finished, click on "Next step" to start the installation of the Zabbix web interface.

zabbix installation complete

When the Zabbix installation is complete, you will see a message like"Congratulations! You have successfully installed the Zabbix frontend" on your screen. Then click on"Finish" to complete the installation of the web interface.

zabbix installation finished

You will now be redirected to the Zabbix login screen. Enter the Zabbix default user"Admin" and the password"zabbix". Then click on"Login" to log in to the Zabbix administration dashboard.

login to zabbix

You should see the default Zabbix administration dashboard as shown in the screenshot below.

zabbix dashboard

You have completed the installation of the Zabbix web interface.

Adding a Linux host via the Zabbix agent

There are several methods to add and monitor hosts in Zabbix. You can monitor the host on Zabbix via the Zabbix Agent, SNMP protocol, IPMI and JMX. In this example, you will monitor the Linux host via the Zabbix agent.

To install the Zabbix agent, you need to add the Zabbix repository to your Linux host.

For the Debian distribution, add the Zabbix repository using the command below.

wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian11_all.deb
sudo dpkg -i zabbix-release_6.2-1+debian11_all.deb
sudo apt update

The following command applies if you want to monitor an Ubuntu Linux host.

wget https://repo.zabbix.com/zabbix/6.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.2-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.2-1+ubuntu22.04_all.deb
sudo apt update

For RHEL/CentOS-based distributions, add the Zabbix repository with the command below.

sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-1.el8.noarch.rpm
sudo dnf repolist
sudo dnf makecache

Install the"zabbix-agent" package with the command below. Use the apt command for Debian/Ubuntu-based systems or the dnf command for RHEL/CentOS-based distributions.

sudo apt install zabbix-agent
or
sudo dnf install zabbix-agent

When the installation is complete, edit the Zabbix agent configuration file"/etc/zabbix/zabbix_agentd.conf" with the command below.

sudo nano /etc/zabbix/zabbix_agentd.conf

Uncomment the "Server" and"ServerActive" options and enter the IP address of the Zabbix server.

Server=IP-ADDRESS-of-ZABBIX-SERVER
ServerActive=IP-ADDRESS-of-ZABBIX-SERVER

Change the "Hostname" configuration to your Linux host and change the"HostnameItem" to"system.hostname". In this example, the Linux host will use the hostname"linux-host1".

Hostname=linux-host1
HostnameItem=system.hostname

Save and close the file when you are finished.

Now start the service"zabbix-agent" with the following systemctl command.

sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent

You must also open the Zabbix agent port "10050/tcp" on the Linux target computer. For Ubuntu/Debian systems you can use the command ufw, for RHEL/CentOS-based distributions the command "firewall-cmd".

sudo ufw allow 10050/tcp
sudo ufw status

or

sudo firewall-cmd --add-port=10050/tcp --permanent
sudo firewall-cmd --reload

Go to the Zabbix Administration Dashboard. Click on"Monitoring" > "Hosts" > "Create Host".

create host

Enter the host configuration details as described below:

details host

Switch to the "Tags" tab and create a new tag. In this example, we will create a new tag"OS" with the value"RHEL".

os tag

Click on"Add" to confirm and add the host.

You can then see that the host"linux-host1" has been added to Zabbix monitoring via the Zabbix agent.

In the "Availability" section, you will see the green status "ZBX", which means that the host is running without any problems. If an error occurs on your host, the "Availability" section will turn red.

host added

Below you can see the current graphic of the"linux-host1" host.

monitoring success

Conclusion

In this tutorial you have learned how to install and configure the Zabbix Monitoring Solution with PostgreSQL as database backend and Apache2/httpd as web server on Rocky Linux. You also learned the basic configuration of the PostgreSQL server to set up authentication for PostgreSQL users. Finally, you learned how to add and monitor Linux hosts with the Zabbix Monitoring Solution via the Zabbix Agent.

Copyright © Marouane All Rights Reserved

Buy Me a Coffee