Install Zabbix with PostgreSQL Database on RHEL 9 | CentOS 9: A Comprehensive Guide

Install Zabbix with PostgreSQL on RHEL 9

Learn how to install Zabbix with PostgreSQL on RHEL 9 | CentOS 9 with our comprehensive step-by-step guide. Follow clear instructions with CLI examples and configuration tips to set up a powerful monitoring solution.

Introduction

Zabbix is one of the most popular open-source monitoring tools available, providing comprehensive real-time monitoring of systems, networks, and applications. When coupled with a PostgreSQL database, Zabbix becomes a powerful solution that can handle large-scale monitoring with excellent performance. In this guide, we’ll walk through the installation of Zabbix with PostgreSQL as the backend on RHEL 9 and CentOS 9.

Prerequisites

Before we begin, ensure you have the following in place:

RequirementDescription
Operating SystemA server running RHEL 9 or CentOS 9
PrivilegesRoot or sudo privileges
NetworkA stable internet connection (IPv4 address and Hostname for this demonstration: 192.168.1.212, zabbix.dev.naijalabs.net)
Install Zabbix with PostgreSQL on RHEL 9

Photo by admingeek from Infotechys

Install Zabbix with PostgreSQL Database on RHEL 9 | CentOS 9:

To start, ensure that your server is up to date by running:

sudo dnf update -y

Step 1: Install PostgreSQL

The first step is to install PostgreSQL, which will be the database server for Zabbix.

Install PostgreSQL

sudo dnf install -y postgresql-server postgresql-contrib

Initialize the Database

sudo postgresql-setup --initdb

Start and Enable PostgreSQL

sudo systemctl enable --now postgresql.service

After starting PostgreSQL, secure it by setting a password for the PostgreSQL user:

sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'your_password';"

Step 2: Add Zabbix Repository

To install Zabbix, we need to add its official repository to your system.

Add Zabbix Repository

sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest.el9.noarch.rpm

This repository contains the necessary packages to install Zabbix and its dependencies. Run this command to update your system’s repository:

sudo dnf clean all

Step 3: Install Zabbix Server

With the repository added, we can now install the Zabbix server, frontend, and agent.

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

These packages install the Zabbix server (which will use PostgreSQL as its database), the web interface, and the Zabbix agent.

Step 4: Configure PostgreSQL for Zabbix

Next, we need to set up PostgreSQL to work with Zabbix. This involves creating a database and user for Zabbix.

Create Zabbix Database and User

Create a Zabbix user with a password:

sudo -u postgres createuser --pwprompt zabbix

Create the Zabbix database:

sudo -u postgres createdb -O zabbix zabbix

Grant the user necessary privileges:

sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;"

Exit the PostgreSQL shell:

\q

Step 5: Configure Zabbix Server

Now that we’ve set up the PostgreSQL database, the next step is to configure the Zabbix server to connect to it.

Import the Zabbix Schema

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

Edit Zabbix Configuration File

Open the Zabbix server configuration file for editing:

sudo vim /etc/zabbix/zabbix_server.conf

Make the following changes:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=your_actual_password
NodeAddress=localhost:10051

These lines configure the Zabbix server to connect to the PostgreSQL database using the user and password you created earlier.

Step 6: Install and Configure Zabbix Frontend

The Zabbix frontend is a web-based interface that allows you to manage and monitor your environment.

Install Apache and PHP

sudo dnf install -y httpd php php-pgsql

Start and Enable Apache

sudo systemctl enable --now httpd

Configure PHP for Zabbix

Zabbix requires specific PHP settings. Edit the PHP configuration file used by Zabbix:

sudo vim /etc/php-fpm.d/zabbix.conf

Set the timezone and other necessary values (e.g. America/New_York) :

php_value[date.timezone] = Your/Timezone

Restart PHP-FPM to apply the changes:

sudo systemctl restart php-fpm

Step 7: Start Zabbix Services

Now that everything is set up, we can start the Zabbix services.

Start and Enable Zabbix Server and Agent

sudo systemctl enable --now zabbix-server zabbix-agent httpd php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service → /usr/lib/systemd/system/zabbix-agent.service.
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

Restart Apache to ensure everything is running smoothly:

sudo systemctl restart httpd

We also want to account for the firewall and ensure the necessary ports are open to allow traffic:

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

If SELinux is enabled (it should be btw), enter the following command to allow the Zabbix frontend to connect to the server:

sudo setsebool -P httpd_can_network_connect on

Step 8: Access the Zabbix Frontend

To access the Zabbix frontend, open a web browser and go to your server’s IP address followed by /zabbix. For example (http://your_server_ip/zabbix):

Install Zabbix with PostgreSQL on RHEL 9

Photo by admingeek from Infotechys

The Zabbix setup wizard will appear. Follow the prompts and enter the PostgreSQL database details you configured earlier.

Conclusion

You’ve now successfully installed Zabbix with PostgreSQL on RHEL 9 or CentOS 9. This setup allows you to monitor your IT infrastructure efficiently while taking advantage of PostgreSQL’s robust and scalable database features.

By following this guide, you’ve laid the foundation for a powerful monitoring system. Zabbix, combined with PostgreSQL, ensures that your monitoring infrastructure can handle large amounts of data with optimal performance. Don’t forget to explore the additional features Zabbix offers, such as custom alerts, notifications, and integrations with other IT tools.

Did you find this article useful? Your feedback is invaluable to us! Please feel free to share your thoughts in the comments section below.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *