Install and Setup Zabbix on Ubuntu 20.04

Install and Setup Zabbix on Ubuntu 20.04 is the process of deploying an open-source monitoring tool to track servers, applications, and network devices. It involves installing the Zabbix server, configuring a database, setting up the web interface, and installing agents on monitored hosts to collect and secure performance data.

🤖AI Overview:

Install and Setup Zabbix on Ubuntu 20.04 enables monitoring of applications, servers, and network devices by collecting performance data securely. The process involves installing Zabbix server, setting up a MySQL database, configuring web interface and PHP, and deploying Zabbix agents on monitored machines. This setup helps track system health and troubleshoot issues effectively.

Prerequisites to Install Zabbix on Ubuntu 20.04

To let this installation work correctly, consider the below prerequisites and then move on to learn to Install and Setup Zabbix on Ubuntu 20.04 in the following of this article.

  • A system running Ubuntu 20.04.
  • TLS/SSL certificate installed (Optional but recommended)
  • A non-root user with sudo privileges and firewall configured with ufw.
  • A server with Apache httpd, MySQL/MariaDB database, Zabbix, and PHP version 7.2+ or > installed.

Note: PHP and httpd must be installed on the Zabbix server, but MySQL/MariaDB can be a remote server.

Tutorial Install and Setup Zabbix on Ubuntu 20.04

Installing Zabbix on your server guarantees the health of your IT infrastructure to clarify potential problems. Also, Zabbix enables information to be stored in a database to let you analyze data over time. In this way, the quality of provided services would be improved, and upgrading your equipment can be planned. Zabbix employs a variety of methods for gathering metrics, including client-server architecture and agentless monitoring of user services. It employs a small agent on the monitored client to acquire data and send it to the Zabbix server to collect server metrics. Your data is protected as it is transferred over insecure networks thanks to Zabbix’s support for encrypted communication between the server and connected clients.

Stay with us to go through this guide and review all the required steps to install and set up Zabbix on your Ubuntu server if you have provided all mentioned prerequisites. Install and Setup Zabbix on Ubuntu 20.04 helps you to monitor remote servers securely.

Step 1

Once you log in to your machine as your non-root server, run the following command to install the Zabbix server.

ssh opera@zabbix_server_ip_address

While the available Zabbix in the package manager of Ubuntu is outdated, you need to install the latest stable version which exists on the Official Zabbix repository. To download and install the repository configuration package, run:

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
sudo dpkg -i zabbix-release_5.0-1+focal_all.deb

Now, you need to update the package index and install Zabbix server packages.

sudo apt update
sudo apt install zabbix-server-mysql zabbix-frontend-php
sudo apt install zabbix-agent

In this way, the Zabbix server and web frontend with MySQL database support will be installed. And the installing Zabbix agent helps you to collect data about the Zabbix server status.

Step 2

To start using Zabbix, you need to set up a database to hold the data that the Zabbix server collects from its agents. To do this, we are going to create a new MySQL database. So, create a specific user for this database and its required basic information. This account should not be logged in to MySQL with the root account.

To set up the MySQL database for Zabbix, log in to MySQL as the root user and type:

sudo mysql

Then, use the command below to create the Zabbix database with UTF-8 characters support.

create database zabbix character set utf8 collate utf8_bin;

It is time to create a user that the Zabbix server can use it. Also, give it access to the new database, and set the password for the user.

create user zabbix@localhost identified by 'your_zabbix_mysql_password';
grant all privileges on zabbix.* to zabbix@localhost;

In this way, the user and the database will be protected. Then, exit out of the database console.

quit;

When Zabbix is installed, you will have a file that sets the initial schema and data. So, to set up the schema and import the data into the Zabbix database.

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

zcat is used because the data in the file is compressed.

Now, you need to enter the password for zabbix MySQL user. Set the database password in the Zabbix server configuration file to let the Zabbix server use the database. To do this, open the configuration file in your favorite text editor. Here, we use nano.

sudo nano /etc/zabbix/zabbix_server.conf

The following section of the file must be shown.

/etc/zabbix/zabbix_server.conf

...
### Option: DBPassword                           
#       Database password. Ignored for SQLite.   
#       Comment this line if no password is used.
#                                                
# Mandatory: no                                  
# Default:                                       
# DBPassword=
...

Set the DBPassword value in the file to the password for your database user. Commands in the file explain the way you can connect to the database. To set up the database, Add this line after those commands.

/etc/zabbix/zabbix_server.conf

...
DBPassword=<span style="color: #0000ff;">your_zabbix_mysql_password</span>
...

If you used nano too, press CTRL+X , followed by Y, and then ENTER to save and close zabbix_server.conf .

Step 3

In this step, you are ready to set up Nginx for Zabbix. To do this automatically, you need to install the automatic configuration package. So, run:

sudo apt install zabbix-nginx-conf

Once you get the configuration file, make changes to that. So, open it to do this.

sudo nano /etc/zabbix/nginx.conf

An automatically generated Nginx server block configuration is present in the file. Two lines in it specify the server name and the port on which it is listening:

/etc/zabbix/nginx.conf

server {
<span style="color: #0000ff;">#        listen          80;</span>
<span style="color: #0000ff;">#        server_name     example.com;
</span>...

Uncomment the two lines and substitute your domain name for example.com. Your settings will appear as follows:

/etc/zabbix/nginx.conf

server {
        listen          80;
        server_name     <span style="color: #0000ff;">your_domain</span>;
...

Save the document, then exit. Next, verify that none of your Nginx files contain syntax problems, then reload the configuration:

sudo nginx -t
sudo nginx -s reload

You will need to adjust your PHP configuration after setting up Nginx to serve the Zabbix frontend for the web interface to function properly.

Step 4

It is time to Set up/Configure PHP for Zabbix. The PHP-based Zabbix web interface needs particular PHP server settings. These settings are stored in a PHP-FPM configuration file that was created during the Zabbix installation procedure. It is loaded automatically by PHP-FPM and can be found in the directory/etc/zabbix. This file needs a minor modification, so open it by doing the following:

sudo nano /etc/zabbix/php-fpm.conf

The PHP configurations in the file are appropriate for the Zabbix web interface. The timezone option, however, is by default uncommented. You must select the proper timezone for Zabbix for it to use the correct time:

/etc/zabbix/php-fpm.conf

...
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
<span style="color: #0000ff;">; php_value[date.timezone] = Europe/Riga</span>

Uncomment the timezone line that was marked in the code block before it, then replace it with your timezone. Then save and close the file.

To apply these new settings, restart PHP-FPM.

sudo systemctl restart php7.4-fpm.service

To start the Zabbix server, run:

sudo systemctl start zabbix-server

Then verify the appropriate operation of the Zabbix server to view active (running) in your output. In the end, enable the server to start at boot time, set up the server, and connect to the database.

sudo systemctl enable zabbix-server

Step 5

When the required steps to install and Setup Zabbix on Ubuntu 20.04 are complete, you can set up settings for the Zabbix web interface. The web interface requires some basic setup before you can use it, but it allows you to view reports and add hosts that you want to monitor. Open your browser and navigate tohttp://zabbix server nameorhttps://zabbix server name if Let’s Encrypt has been configured. An introduction message will appear on the first screen. To proceed, select Next.

You may find the table with a list of all the requirements to run Zabbix on the next screen.

prerequisites to run Zabbix

Verify that all the values in this table are OK. Make sure to scroll down and review each need. After making sure everything is prepared, move on by clicking the Next step.

On the following screen, a database connection request is made.

database connection information

Although you informed the Zabbix server about your database, the web interface for managing hosts and reading data also requires access to the database. Enter the MySQL login information that you set up in Step 2 as a result. To continue, click Next step.

You can leave the selections on the following screen’s default values.

zabbix server details

To advance to the last screen, click Next step. The time zone and Zabbix GUI theme can be defined when we click Next Step (the timezone was previously changed in the apache.conf file).

Before we begin the installation, we get to examine all previous configurations after selecting Next Step.

setup-zabbix on ubuntu

Once you do everything correctly, the installation is complete. After the installation, a screen with a congratulations message will appear. The procedure for installing Zabbix on Ubuntu 20.04 was as follows.

setup zabbix on ubuntu

After that, we will be directed to the Zabbix monitoring login screen, where we must enter the password Zabbix and the username Admin.

main Zibbax dashboard

Create a new user with admin privileges, or change a default password for the Admin account to begin exploring and configuring Zabbix.

The destination path is Administration->Users and there you change the password or create a new user.

Step 6

Here is the last step to need to pass to Install and Setup Zabbix on Ubuntu 20.04. Since this step asks you to install and set up the Zabbix agent, you need to configure the agent software that will send monitoring data to the Zabbix server. To do this, log in to the second Ubuntu server first.

ssh opera@second_ubuntu_server_ip_address

Run the commands listed below to install the repository configuration package, the same as you would on the Zabbix server:

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
sudo dpkg -i zabbix-release_5.0-1+focal_all.deb

And, to update the package index:

sudo apt update

Then, use the command below to install the Zabbix agent:

sudo apt install zabbix-agent

Although Zabbix supports certificate-based encryption, this tutorial does not cover how to set up a certificate authority. Pre-shared keys (PSK), however, can be used to secure the link between the server and the agent.

Create a PSK first:

sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

Show the key by using cat, so you can copy it somewhere:

cat /etc/zabbix/zabbix_agentd.psk

Save the output to use it to configure the host later.

Edit the Zabbix agent settings to set up its secure connection to the Zabbix server. To do this, open the agent configuration file in your favorite text editor:

sudo nano /etc/zabbix/zabbix_agentd.conf

Then, edit the IP address of the Zabbix server and change the default value to the IP of your Zabbix server:

/etc/zabbix/zabbix_agentd.conf

...
### Option: Server
#       List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
#       Incoming connections will be accepted only from the hosts listed here.
#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally
#       and '::/0' will allow any IPv4 or IPv6 address.
#       '0.0.0.0/0' can be used to allow any IPv4 address.
#       Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
#
# Mandatory: yes, if StartAgents is not explicitly set to 0
# Default:
# Server=

Server=127.0.0.1
...

Change the default value to the IP of your Zabbix server:

/etc/zabbix/zabbix_agentd.conf

...
Server=<span style="color: #0000ff;">zabbix_server_ip_address</span>
...

The Zabbix server connects to the agent by default, but for monitoring the logs you need a reverse connection. Specify the Zabbix server address and a unique hostname for correct operation.

/etc/zabbix/zabbix_agentd.conf

...
##### Active checks related

### Option: ServerActive
#       List of comma delimited IP:port (or DNS name:port) pairs of Zabbix servers and Zabbix proxies for active checks.
#       If port is not specified, default port is used.
#       IPv6 addresses must be enclosed in square brackets if port for that host is specified.
#       If port is not specified, square brackets for IPv6 addresses are optional.
#       If this parameter is not specified, active checks are disabled.
#       Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
#
# Mandatory: no
# Default:
# ServerActive=

ServerActive=<span style="color: #0000ff;">zabbix_server_ip_address
</span>
### Option: Hostname
#       Unique, case sensitive hostname.
#       Required for active checks and must match hostname as configured on the server.
#       Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=

Hostname=<span style="color: #0000ff;">Second Ubuntu Server</span>
...

At this part, you need to, find the section that configures the secure connection to the Zabbix server and enables pre-shared key support. To find TLSConnect section, have a look at the below screen.

/etc/zabbix/zabbix_agentd.conf

...
### Option: TLSConnect
#       How the agent should connect to server or proxy. Used for active checks.
#       Only one value can be specified:
#               unencrypted - connect without encryption
#               psk         - connect using TLS and a pre-shared key
#               cert        - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSConnect=unencrypted
...

Add this line to configure pre-shared key support:

/etc/zabbix/zabbix_agentd.conf

...
TLSConnect=<span style="color: #0000ff;">psk</span>
...

If you locate the TLSAcceptsection, it will look like this:

/etc/zabbix/zabbix_agentd.conf

...
### Option: TLSAccept
#       What incoming connections to accept.
#       Multiple values can be specified, separated by comma:
#               unencrypted - accept connections without encryption
#               psk         - accept connections secured with TLS and a pre-shared key
#               cert        - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSAccept=unencrypted
...

 

Configure incoming connections to support pre-shared keys by adding this line:

/etc/zabbix/zabbix_agentd.conf

...
TLSAccept=<span style="color: #0000ff;">psk</span>
...

Then, find the TLSPSKIdentity section as it is shown below.

/etc/zabbix/zabbix_agentd.conf

...
### Option: TLSPSKIdentity
#       Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=
...

Choose a unique name to identify your pre-shared key by adding this line:

/etc/zabbix/zabbix_agentd.conf

...
<span style="color: #0000ff;">TLSPSKIdentity=PSK 001</span>
...

When you add your host through the Zabbix web interface, you will use this as the PSK ID. So, set the option that points to your previously created pre-shared key. Locate the TLSPSKFileoption:

/etc/zabbix/zabbix_agentd.conf

...
### Option: TLSPSKFile
#       Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=
...

To point the Zabbix agent to the PSK file you created, add this line.

/etc/zabbix/zabbix_agentd.conf

...
TLSPSKFile=<span style="color: #0000ff;">/etc/zabbix/zabbix_agentd.psk</span>
...

Now, you can save and close the file. Then, restart the Zabbix agent and set it to start at boot time:

sudo systemctl restart zabbix-agent
sudo systemctl enable zabbix-agent

Use the command below to check whether the Zabbix agent is running properly or not. Once you view the active (running) in the output, you’re all set.

sudo systemctl status zabbix-agent

The agent will listen on port 10050 for connections from the server. Configure UFW to allow connections to this port:

sudo ufw allow 10050/tcp

Conclusion

This guide described step-by-step how to install and setup Zabbix on Ubuntu 20.04 to provide robust IT infrastructure monitoring.

By carefully following each step, beginners can successfully deploy Zabbix, secure it, and start monitoring their network and server environments effectively.

The key to successful monitoring lies in proper installation, initial configuration, and continuous maintenance.

By mastering the installation and setup of Zabbix on Ubuntu 20.04, you empower yourself with a vital skill to manage and maintain modern IT infrastructures confidently and proactively.

FAQ

You install the Zabbix server, frontend, and agent by first adding the official Zabbix repository, updating package lists, and then using apt commands to install zabbix-server-mysql, zabbix-frontend-php, and zabbix-agent packages.

Create a MySQL database with UTF-8 support, then create a dedicated MySQL user with privileges for the Zabbix database. Import the initial schema and data using zcat and set the database password in the Zabbix server configuration file.

Configure your web server (Apache or Nginx) properly, set the correct PHP timezone in the Zabbix PHP configuration file, then access the Zabbix frontend in a browser to complete the web-based setup wizard with database and server details.

Zabbix supports encrypted communication using TLS and pre-shared keys (PSK). You generate a PSK on the agent machine, configure the agent with this key and the Zabbix server IP, and enable TLS settings for secure data transfer.

Add the official Zabbix repository, install the agent package, edit the agent configuration file to point to your Zabbix server IP, configure TLS with PSK if desired, and then start and enable the agent service.

Common issues include incorrect database credentials, firewall blocking required ports like 10050, PHP misconfiguration, and web server setup errors. Verifying configuration files and logs helps identify and resolve these problems.

Use the Zabbix web frontend to change the default Admin password or create new users with specific privileges. This ensures secure access and management of your monitoring environment.

Yes, by installing and configuring Zabbix agents on remote servers and securing connections with TLS and pre-shared keys, you can monitor remote Ubuntu 20.04 servers securely using Zabbix.

Zabbix is an open-source, enterprise-grade monitoring tool that helps track hardware, software, network, and system metrics on Ubuntu 20.04. It offers encrypted data transfer, multiple monitoring methods, and a user-friendly web interface to ensure your IT infrastructure runs smoothly.

Leave a Reply

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