Zabbix is a free to use monitoring solution that can be installed on most Linux distribution servers. Zabbix gives you a powerful monitoring stack for your Server, Network devices, Web and Desktop applications, IoT appliances, various hardware appliances among many other customized use cases. Here we will be performing installation and configuration of Zabbix Server 5 on Amazon Linux 2.

The Zabbix monitoring solution uses a server/client architecture where an agent software is installed on machines to be monitored. This agent will collect and send metrics to the server, which stores the data in a database – MySQL, PostgreSQL, SQLite, Oracle or IBM DB2 database management system.

Install Zabbix 5 on Amazon Linux 2

We will install Zabbix 5 on Amazon Linux 2 using MySQL database as storage backend. We will also be configuring Apache httpd web server as reverse proxy to Zabbix server.

Before starting the installation of Zabbix 5 on Amazon Linux 2 ensure the system is updated,

sudo yum -y update

Once updated perform a system reboot.

sudo systemctl reboot

Step 1: Add EPEL repository

Start an SSH session to your Amazon Linux server.

$ ssh [email protected]
Warning: Permanently added 'serverip' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/jkmutai/.ssh/id_rsa':

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
10 package(s) needed for security, out of 26 available
Run "sudo yum update" to apply all updates.
[[email protected] ~]$

We’ll add EPEL repository to the server by running the following commands:

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 

The EPEL repository contains some packages which are dependents in the installation of Zabbix 5 on Amazon Linux 2 server.

Step 2: Install and Configure MariaDB Database

Add MariaDB repository to Amazon Linux 2 server:

sudo tee /etc/yum.repos.d/mariadb.repo<<EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

Before you begin installaton update OS package cache index:

sudo yum makecache 

Install MariaDB Database server on Amazon Linux 2:

sudo yum -y install MariaDB-server MariaDB-client

Enable and start mariadb with the below commands

sudo systemctl enable mariadb
sudo systemctl start mariadb

Secure MariaDB database server by setting a root user account password, removing anonymous users, disallowing root remote logins and removing test databases:

$ sudo mysql_secure_installation
Enter current password for root (enter for none): Just press Enter
Set root password? [Y/n] Y 
New password:  New-root-password
Re-enter new password: Re-enter New-root-password
Remove anonymous users? [Y/n] Y 
Disallow root login remotely? [Y/n] Y 
Remove test database and access to it? [Y/n] Y 
Reload privilege tables now? [Y/n] Y 
Thanks for using MariaDB!

Connect to MariaDB and set up a database and a user

$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> SELECT VERSION ();
+----------------+
| VERSION ()     |
+----------------+
| 10.5.8-MariaDB |
+----------------+
1 row in set (0.000 sec)

MariaDB [(none)]> \q
Bye

Login with the password set above and run the following commands to create a database and a user.

CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; 
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '[email protected]'; 
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'; 
FLUSH PRIVILEGES; 
EXIT

Step 3: Install Httpd Web Server

Run the following command to install httpd web server:

 sudo yum -y install httpd vim bash-completion

Enable and start httpd service

sudo systemctl enable httpd
sudo systemctl start httpd

Confirm httpd service is in running state:

$ systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-01-10 07:25:39 UTC; 5s ago
     Docs: man:httpd.service(8)
 Main PID: 2771 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           ├─2771 /usr/sbin/httpd -DFOREGROUND
           ├─2772 /usr/sbin/httpd -DFOREGROUND
           ├─2773 /usr/sbin/httpd -DFOREGROUND
           ├─2774 /usr/sbin/httpd -DFOREGROUND
           ├─2775 /usr/sbin/httpd -DFOREGROUND
           └─2776 /usr/sbin/httpd -DFOREGROUND

Set ServerName:

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

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

$ sudo vim /etc/httpd/conf/httpd.conf
ServerAdmin [email protected]

Restart apache web service after making the changes:

sudo systemctl restart httpd

Step 4: Install Zabbix server on Amazon Linux 2

Add Zabbix YUM repository in your Amazon Linux 2 server with the following commands:

sudo yum -y install https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

Also install zabbix packages using the below command:

sudo yum -y install zabbix-server-mysql zabbix-agent zabbix-get

Install Zabbix Frontend:

Add CentOS SCL repository:

sudo tee /etc/yum.repos.d/centos-scl.repo<<EOF
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://mirror.centos.org/centos/7/sclo/x86_64/sclo/
gpgcheck=0
enabled=1

[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://mirror.centos.org/centos/7/sclo/x86_64/rh/
gpgcheck=0
enabled=1
EOF

Update yum repository list after adding the repository.

$ sudo yum makecache
Loaded plugins: langpacks, priorities, update-motd
amzn2-core                                                                                                                                 | 3.7 kB  00:00:00
amzn2extra-docker                                                                                                                          | 3.0 kB  00:00:00
amzn2extra-php7.4                                                                                                                          | 3.0 kB  00:00:00
centos-sclo-rh                                                                                                                             | 3.0 kB  00:00:00
centos-sclo-sclo                                                                                                                           | 3.0 kB  00:00:00
epel/x86_64/metalink                                                                                                                       |  17 kB  00:00:00
mariadb                                                                                                                                    | 2.9 kB  00:00:00
zabbix                                                                                                                                     | 2.9 kB  00:00:00
zabbix-frontend                                                                                                                            | 2.9 kB  00:00:00
zabbix-non-supported                                                                                                                       |  951 B  00:00:00
(1/6): centos-sclo-rh/primary_db                                                                                                           | 2.9 MB  00:00:00
(2/6): centos-sclo-rh/other_db                                                                                                             | 1.4 MB  00:00:00
(3/6): centos-sclo-rh/filelists_db                                                                                                         |  10 MB  00:00:01
(4/6): centos-sclo-sclo/primary_db                                                                                                         | 300 kB  00:00:00
(5/6): centos-sclo-sclo/other_db                                                                                                           | 185 kB  00:00:00
(6/6): centos-sclo-sclo/filelists_db                                                                                                       | 935 kB  00:00:00
Metadata Cache Created

Enable Frontend Zabbix repository and install packages:

sudo yum-config-manager --enable zabbix-frontend
sudo yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl

Import Zabbix Server database schema

Import initial schema and data for the server with MySQL:

sudo zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p'[email protected]' zabbix

Once the packages are installed proceed to start and enable the service:

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

Status of the two services should be running:

$ systemctl status zabbix-server zabbix-agent
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-01-10 06:56:18 UTC; 12s ago
 Main PID: 31843 (zabbix_server)
   CGroup: /system.slice/zabbix-server.service
           └─31843 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf

Jan 10 06:56:18 amazon-linux systemd[1]: Starting Zabbix Server...
Jan 10 06:56:18 amazon-linux systemd[1]: PID file /run/zabbix/zabbix_server.pid not readable (yet?) after start.
Jan 10 06:56:18 amazon-linux systemd[1]: Started Zabbix Server.

● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-01-10 06:56:18 UTC; 12s ago
 Main PID: 31836 (zabbix_agentd)
   CGroup: /system.slice/zabbix-agent.service
           ├─31836 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
           ├─31837 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
           ├─31838 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
           ├─31839 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
           ├─31840 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
           └─31841 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]

Jan 10 06:56:18 amazon-linux systemd[1]: Starting Zabbix Agent...
Jan 10 06:56:18 amazon-linux systemd[1]: PID file /run/zabbix/zabbix_agentd.pid not readable (yet?) after start.
Jan 10 06:56:18 amazon-linux systemd[1]: Started Zabbix Agent.

By default, Zabbix-server runs on pot 10050 while Zabbix-agent runs on 10051. You can confirm if this is the case by running the following commands:

$ sudo ss -tlnup | grep 10050
$ sudo ss -tnlup | grep 10051

Step 5: Configure Zabbix Server on Amazon Linux 2

Edit the zabbix_server.conf configuration file to set Zabbix database credentials:

sudo vim /etc/zabbix/zabbix_server.conf

Add the credentials set when creating Zabbix database

DBHost=localhost 
DBName=zabbix 
DBUser=zabbix 
[email protected]

Set correct PHP timezone:

$ sudo vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Africa/Nairobi

Start and enable services:

sudo systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
sudo systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

Step 6: Initiate Zabbix 5 Web configuration

Open your web browser and access “http://(Zabbix server’s hostname or IP address)/zabbix/”  to initiate Zabbix server initial setup.

Click on next step to go to the next page where pre-requisites status are shown.

Click Next step to set database connection details – database name, user and password.

In the next page configure server details including server Name.

Confirm installation summary and hit “Next Step” to complete installation.

If the installation was successful you should get the message shown below.

Click finish to be directed to the Zabbix login page. The default login details:

Username: "Admin"
Password: "zabbix"

Login with user Admin and password zabbix. Once you login, you should see a page as shown below:

Step 7: Change Admin Password

You’ll need to change the default Admin user password by navigating to:

Administration > Users > Admin > Password > Change Password

Enter the new password and confirm.

You now have a running instance of Zabbix server on Amazon Linux 2 system. The next steps will be to setup your agents to be monitored and create graphs, alerts and much more.

More on Amazon Linux:

How To Install Jenkins on Amazon Linux 2

How To Install Memcached on Amazon Linux 2

How To Install PostgreSQL 13 on Amazon Linux 2

How To Install Tomcat 9 on Amazon Linux 2

2 COMMENTS

LEAVE A REPLY

Please enter your comment!
Please enter your name here