Powering Technologies

Zabbix is an enterprise-grade open source monitoring tool designed to monitor and track applications, systems, and Network devices status.

Zabbix architecture uses the Server/Client model. The server communicates to the native software agents available for various Operating systems like Linux, NIX, and Windows. For systems without an agent, generic monitoring protocols such as Simple Network Management Protocol (SNMP) or Intelligent Platform Management Interface (IPMI) can be used.

Install Zabbix Server on Ubuntu 20.04

Installation of Zabbix has a number of steps and Prerequisites that we need to fulfill first. Among the dependencies required are:

  • Apache httpd web service
  • PHP
  • MySQL/ MariaDB database server

Step 1: Install and Configure Apache httpd server

Upgrade system:

sudo apt update
sudo apt install apache2

After installing Apache, configure basic security by allowing Prod ServerTokens only.

sudo vim /etc/apache2/conf-enabled/security.conf

Change line 26

ServerTokens Prod

This directive configures what you return as the Server HTTP response. Valid options are Full | OS | Minimal | Minor | Major | Prod.

Set ServerName:

$ sudo vim /etc/apache2/apache2.conf
ServerName zabbix.example.com

Set Server Admin to receive an email in case of issues.

$ sudo vim /etc/apache2/apache2.conf
ServerAdmin admin@example.com

You need to restart apache web service after making these changes:

sudo systemctl restart apache2

Step 2: Install PHP and required modules

Install all required PHP extensions using the commands below.

sudo apt -y install php8.0 php8.0-cgi php8.0-common libapache2-mod-php php8.0-mbstring php8.0-net-socket php8.0-gd php8.0-xml-util php8.0-mysql php8.0-bcmath

This will install php v7.x on Ubuntu , you can confirm using the command php -v

# php -v
PHP 8.1.7 (cli) (built: Jun 25 2022 08:12:59) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.7, Copyright (c), by Zend Technologies

Configure Apache:

sudo  a2enconf php8.*-cgi

Ensure you set correct timezone:

$ sudo vim /etc/php/*/apache2/php.ini 
; http://php.net/date.timezone
date.timezone = "Asia/Kolkata"

Restart apache2 after this change:

sudo systemctl restart apache2

Step 3: Install Mysql Database Server

Run the commands below to install Mysql database server:

sudo apt update
sudo apt install mysql-server

Once Database server installation is done open MySQL terminal

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1824
Server version: 8.0.29-0ubuntu0.20.04.3 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Create a database and user for Zabbix:

CREATE DATABASE zabbix character set utf8 collate utf8_bin;;
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@'localhost' IDENTIFIED BY 'StronDBPassw0rd';
FLUSH PRIVILEGES; 
QUIT 

Step 4: Install Zabbix Server on Ubuntu 20.04

We need to add Zabbix repositories to get the latest release of Zabbix Server installed on Ubuntu 20.04

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

Do system update and install Zabbix server packages

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

Import database data using the command:

sudo su -
zcat /usr/share/doc/zabbix-proxy-mysql/schema.sql.gz | mysql -uzabbix -p 'StronDBPassw0rd'

Step 5: Configure and Start Zabbix Server on Ubuntu

Zabbix configuration file is located under  /etc/zabbix/zabbix_server.conf. Ensure the following lines are configured correctly.

DBName=zabbix
DBUser=zabbix
DBPassword=StronDBPassw0rd

Restart Zabbix server after modifying this file:

sudo systemctl restart zabbix-server

Edit /etc/php/*/apache2/php.ini to set php requirements for Zabbix server.

$ sudo vim /etc/php/*/apache2/php.ini
max_execution_time = 300
max_input_time = 300
post_max_size = 16M

Configure Zabbix agent to monitor Zabbix server itself.

$ sudo vim /etc/zabbix/zabbix_agentd.conf
Hostname=zabbix-server.computingforgeeks.com

Start and enable Zabbix Server:

sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache

Configure Firewall

If you have ufw firewall installed and running on your system, ensure you allow port 5000 and port 5001

sudo ufw allow proto tcp from any to any port 10050,10051

Step 6: Perform Zabbix initial setup on Ubuntu 20.04

Access “http://(Zabbix server’s hostname or IP address)/zabbix/”  to begin Zabbix initial setup.

Step 1 is a welcome page, click “Next step” to proceed.

Confirm that all prerequisites are satisfied.

Configure DB settings as added before:

Verify all settings and click Next step to finish the initial setup.

You’ll then get the login page. Default logins are:

Username: "admin"
Password: "zabbix"

Install and Configure Zabbix Agent on Ubuntu 20.04

How Zabbix agent works

Zabbix agent can do both passive (polling) and active checks (trapping). The checks can be performed at an interval or based on a specific time schedule. Here is the difference between passive and active checks:

Passive checks (polling):

  • Zabbix server (or proxy) requests a value from Zabbix agent
  • Agent processes the request and returns the value to Zabbix server (or proxy)

Active checks (trapping):

  • Zabbix agent requests from Zabbix server (or proxy) a list of active checks
  • The agent sends the results in periodically

The image below from Zabbix may help visualise passive and active checks in action:

Step 1: Install and Configure Zabbix Agent

sudo apt update
sudo apt install zabbix-agent

Zabbix agent configuration is /etc/zabbix/zabbix_agentd.conf. Edit

$ sudo vim /etc/zabbix/zabbix_agentd.conf
#Specify Zabbix server IP Address
Server=192.168.10.2

#Specify Zabbix server ( For active checks)
ServerActive=192.168.10.2

# Set this server hostname reported by Zabbix agent
Hostname=ZabbixServer

Restart zabbix-agent after making the change:

sudo systemctl restart zabbix-agent
sudo systemctl status zabbix-agent

If you have ufw enabled, allow port 10050 on the firewall. This is used by Zabbix agent daemon.

sudo ufw allow 10050/tcp

Step 2: Add host to Zabbix Server

Login to admin Zabbix server interface, and go to Configuration > Hosts > Create host

You’ll need to fill out the following information:

  • Host name of the server to be monitored
  • Visible name for the server to be monitored.
  • Select the group or add a new group for “Groups” field.
  • IP address
  • Zabbix agent service port -default is 10050

Then to the Templates tab.

1. Click the select button and Link new templates section

2. Once you have selected the templates click on the Add link to link templates to your target systemAfter the templates are linked, they’ll appear on under Linked templates section

Update the setting using the Update button. After a few minutes, monitoring data will be collected and you can visualise them using Zabbix graphs. Default host graphs can be accessed on

Monitoring > Graphs > <Host|Graph>