On this tutorial, we will focus on how to install Nagios Server on RHEL 9 / CentOS Stream 9. Monitoring is the process of analyzing the system resources including application servers and databases using monitoring tools. It involves gathering telemetry data on the operation of an IT environment to gauge performance and troubleshoot issues. Monitoring helps in observing how and why different systems behave in a specific way and provide insights to offer advanced analytics. Some of the monitoring tools include Amazon CloudWatch, Nagios, New Relic, Prometheus, InfluxDB, and others.
Nagios
Nagios is a powerful monitoring software that monitors critical IT infrastructure components, including system metrics, network protocols, applications, services, servers, and network infrastructure. It ensures systems are running and functioning properly, alerts technical staff of any identified problem, and allows them to begin remediation processes to fix the issues before any outages occur.
Nagios offers different monitoring solutions including;
- Nagios Core is Open Source system and network monitoring application
- Nagios XI is an enterprise server and Network Monitoring Software.
- Nagios Log Server sets up alerts to notify you when potential threats arise, or simply filters your data to quickly audit your system.
- Nagios Network Analyzer is a commercial-grade network flow data analysis solution.
- Nagios Fusion is designed to scale with your organization.
Nagios Core has a vibrant community with over 1+ million users and 10 years of active development. It is a stable and reliable platform that scales to thousands of nodes with failover capabilities to ensure continuous monitoring of critical IT infrastructure components. Other features include;
- Comprehensive Monitoring of applications, services, networks, and systems.
- Problem remediation by alert acknowledgments and event handlers.
- Centralized view of entire monitored IT infrastructure.
- Availing reports ensure SLAs are being met.
- Customizable Code as it is open-source.
- Parallelized service checks.
- Multi-user access to the web interface to allow users to view infrastructure status.
- Extendable Architecture with the integration of third-party applications.
Install Nagios Server on RHEL 9 / CentOS Stream 9
Set SELinux to permissive mode.
sudo sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
sudo setenforce 0
Install required packages for Nagios installation.
sudo dnf install -y gcc glibc glibc-common perl httpd php wget gd gd-devel
sudo dnf install -y openssl-devel
sudo dnf groupinstall "Development Tools"
sudo dnf update -y
Create the Nagios user and group and add the Nagios and apache user to the Nagios group.
sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagcmd apache
Download the source and compile it with the following command
cd /tmp
wget -O nagioscore.tar.gz https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.7.tar.gz
tar xzf nagioscore.tar.gz
cd /tmp/nagioscore-nagios-4.4.7/
sudo ./configure
sudo make all
Install binaries, and daemon files and also configure them to start on boot.
sudo make install
sudo make install-daemoninit
sudo systemctl enable httpd.service
Install Command-mode, sample configuration files to start Nagios and Apache configuration files
sudo make install-commandmode
sudo make install-config
sudo make install-webconf
Create a Nagios web user with the username nagiosadmin to log in to Nagios. Provide a password for the account.
$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
Install Nagios Plugins on RHEL 9|CentOS 9
Change to the home directory
cd ~
Install required packages
sudo dnf install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils
Download the source
cd /tmp
wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.3.3.tar.gz
tar zxf nagios-plugins.tar.gz
Compile and install the plugins with the following command.
cd /tmp/nagios-plugins-release-2.3.3/
./tools/setup
sudo ./configure
sudo make
sudo make install
Verify Nagios installation has no errors.
$ sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 4.4.7
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2022-04-14
License: GPL
Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...
Running pre-flight check on configuration data...
Checking objects...
Checked 8 services.
Checked 1 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 24 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 1 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
Start Apache service
sudo systemctl start httpd.service
Start and enable the Nagios Core service
sudo systemctl enable nagios.service
sudo systemctl start nagios.service
Check for the service status.
$ sudo systemctl status nagios.service
● nagios.service - Nagios Core 4.4.7
Loaded: loaded (/usr/lib/systemd/system/nagios.service; enabled; vendor pr>
Active: active (running) since Thu 2022-08-25 23:27:43 EAT; 23s ago
Docs: https://www.nagios.org/documentation
Main PID: 71807 (nagios)
Tasks: 6 (limit: 48809)
Memory: 2.7M
CPU: 25ms
In the case you run into an error such as the one below;
× nagios.service - Nagios Core 4.4.7
Loaded: loaded (/usr/lib/systemd/system/nagios.service; enabled; vendor pr>
Active: failed (Result: exit-code) since Thu 2022-10-27 04:09:13 EDT; 2min>
Duration: 673ms
Docs: https://www.nagios.org/documentation
Process: 279599 ExecStartPre=/usr/local/nagios/bin/nagios -v /usr/local/nag>
Process: 279600 ExecStart=/usr/local/nagios/bin/nagios -d /usr/local/nagios>
Process: 279606 ExecStopPost=/bin/rm -f /usr/local/nagios/var/rw/nagios.cmd>
Main PID: 279601 (code=exited, status=254)
CPU: 227ms
Oct 27 04:09:10 centos9 nagios[279601]: qh: echo service query handler register>
Oct 27 04:09:10 centos9 nagios[279601]: qh: help for the query handler register>
Oct 27 04:09:10 centos9 nagios[279601]: wproc: Successfully registered manager >
Oct 27 04:09:11 centos9 nagios[279601]: wproc: Registry request: name=Core Work>
Oct 27 04:09:11 centos9 nagios[279601]: wproc: Registry request: name=Core Work>
Oct 27 04:09:11 centos9 nagios[279601]: wproc: Registry request: name=Core Work>
Oct 27 04:09:11 centos9 nagios[279601]: wproc: Registry request: name=Core Work>
Oct 27 04:09:11 centos9 nagios[279601]: Caught SIGSEGV, shutting down...
Oct 27 04:09:11 centos9 systemd[1]: nagios.service: Main process exited, code=e>
Oct 27 04:09:13 centos9 systemd[1]: nagios.service: Failed with result 'exit-co
Just proceed to your terminal, then run the command;
sudo vi /etc/systemd/system/nagios.service
Then proceed to add the following;
[Unit]
Description=Nagios
BindTo=network.target
[Install]
WantedBy=multi-user.target
[Service]
User=nagios
Group=nagios
Type=simple
ExecStart=/usr/local/nagios/bin/nagios /usr/local/nagios/etc/nagios.cfg
Then proceed to run the following commands;
sudo reboot
sudo systemctl enable /etc/systemd/system/nagios.service
sudo systemctl start nagios
sudo systemctl status nagios.service
Accessing Nagios Web Interface On RHEL 9|CentOS 9
Now head over to your browser on http://[IP/Hostname]/nagios and test Nagios. You will be prompted with Login credentials. Enter the password you created with the username nagiosadmin.

The Start page appears as below.

Click on Hosts to check the systems being monitored. At the moment it is only monitoring the Host system.

Click on Services to view the services being monitored.

Monitor Remote System with Nagios
You can monitor a remote system with the Nagios Remote Plugin Executor (NRPE) plugin that allows you to monitor applications and services running on remote hosts. It helps Nagios to monitor local resources like CPU, Memory, Disk, Swap, etc. of the remote host
Remote System
Install Nagios on the remote system using the Installation Process above.
Enable the EPEL repository on the system to install the NRPE plugin.
Install NRPE and Nagios plugins with the following command.
sudo dnf install -y nrpe nagios-plugins-all
Edit the configuration file to accept connection from the Server.
$ sudo vi /etc/nagios/nrpe.cfg
allowed_hosts=192.168.200.40
Also configure Nagios checks with basic commands to check attributes like CPU, Users, root usage, etc.
# COMMAND DEFINITIONS
command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
command[check_swap]=/usr/lib64/nagios/plugins/check_swap -w 20% -c 10%
command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200
Save and exit the file
Configure the Firewall to allow NRPE service.
sudo firewall-cmd --permanent --add-port=5666/tcp
sudo firewall-cmd --reload
Start and enable the NRPE service.
sudo systemctl start nrpe
sudo systemctl enable nrpe
Host System
Enable the EPEL repository to install the NRPE plugin
Install the NRPE plugin with the following command.
sudo dnf -y install nagios-plugins-nrpe
Create a configuration directory for the configuration files.
sudo mkdir /usr/local/nagios/etc/servers
Edit the Server configuration file to include all .cfg files
sudo vi /usr/local/nagios/etc/nagios.cfg
You can uncomment the following line or just add it to enable the directory
cfg_dir=/usr/local/nagios/etc/servers
Save and exit the file.
Configure Nagios Server to Monitor the remote client. Create a command definition file
sudo vi /usr/local/nagios/etc/objects/commands.cfg
Add the following definition to use the NRPE-check plugin
# .check_nrpe. command definition
define command{
command_name check_nrpe
command_line /usr/lib64/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$
}
Save and exit the file
Add the remote system to the Nagios server by creating a configuration file with service definitions
sudo vi /usr/local/nagios/etc/servers/client.technixleo.com.cfg
Use the following template and modify it to your requirements including the client hostname and IP address.
define host{
use linux-server
host_name client.technixleo.com
alias client.technixleo.com
address 192.168.200.41
}
define hostgroup{
hostgroup_name linux-server
alias Linux Servers
members client.technixleo.com
}
define service{
use local-service
host_name client.technixleo.com
service_description SWAP Uasge
check_command check_nrpe!check_swap
}
define service{
use local-service
host_name client.technixleo.com
service_description Root / Partition
check_command check_nrpe!check_root
}
define service{
use local-service
host_name client.technixleo.com
service_description Current Users
check_command check_nrpe!check_users
}
define service{
use local-service
host_name client.technixleo.com
service_description Total Processes
check_command check_nrpe!check_total_procs
}
define service{
use local-service
host_name client.technixleo.com
service_description Current Load
check_command check_nrpe!check_load
}
Save and Exit the file
Verify the Nagios configuration file for any errors.
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Restart the Nagios service.
sudo systemctl restart nagios.service
Test Remote System Monitoring
On your Nagios Webb Interface, Under Hosts, check to view the added remote host.

Under Services, Check to see the services being monitored.

Conclusion
Nagios Monitoring Solution provides complete monitoring of systems including operating system metrics, service state, network state, process state, file system usage, and more. It has a web interface for viewing current network status, notification and problem history, log files, etc. It watches hosts and services that you specify to be monitored and alert you when things go wrong and also when the issue is fixed.
Other Posts;
- Run Minikube Kubernetes on Centos |AlmaLinux |RHEL
- Install and Use Virtualmin on RHEL/ CentOS Stream
- How To Install and Use Cacti on RHEL/ CentOS Stream