How to Install Nagios Core CentOS 8

Nagios Core, formerly known as Nagios, is a free and open-source computer-software application that monitors systems, networks and infrastructure. Nagios offers monitoring and alerting services for servers, switches, applications and services. It alerts users when things go wrong and alert them a second time when the problem has been resolved.

Install Required Dependencies

Before installing Nagios need to install some required libraries to Nagios Core work properly

yum install -y httpd httpd-tools php gcc glibc glibc-common gd gd-devel make net-snmp

Create Nagios User and Group

useradd nagios
groupadd nagcmd

Next, add both the Nagios and the apache user to the nagcmd group

usermod -G nagcmd nagios
usermod -G nagcmd apache

Download Nagios Core and Nagios Plugin

Create a directory to install Nagios

mkdir /root/nagios
cd /root/nagios

Command to download Nagios and Nagios plugins

wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.6.tar.gz
wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

And extract Nagios and its Plugins

tar -xvf nagios-4.4.6.tar.gz
tar -xvf nagios-plugins-2.2.1.tar.gz

Configure Nagios

Enter into Nagios directory

cd nagios-4.4.6/

And run Nagios Configure file

./configure --with-command-group=nagcmd

Output:

*** Configuration summary for nagios 4.4.6 2020-04-28 ***:

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagcmd
             Event Broker:  yes
        Install ${prefix}:  /usr/local/nagios
    Install ${includedir}:  /usr/local/nagios/include/nagios
                Lock file:  /run/nagios.lock
   Check result directory:  /usr/local/nagios/var/spool/checkresults
           Init directory:  /lib/systemd/system
  Apache conf.d directory:  /etc/httpd/conf.d
             Mail program:  /bin/mail
                  Host OS:  linux-gnu
          IOBroker Method:  epoll

 Web Interface Options:
 ------------------------
                 HTML URL:  http://localhost/nagios/
                  CGI URL:  http://localhost/nagios/cgi-bin/
 Traceroute (used by WAP):

Review the options above for accuracy.  If they look okay,
type 'make all' to compile the main program and CGIs.

After configuring, compile and install required libraries using make command

make all
make install

Output:

*** Compile finished ***

If the main program and CGIs compiled without any errors, you
can continue with testing or installing Nagios as follows (type
'make' without any arguments for a list of all possible options):

  make test
     - This runs the test suite

  make install
     - This installs the main program, CGIs, and HTML files

  make install-init
     - This installs the init script in /lib/systemd/system

  make install-daemoninit
     - This will initialize the init script
       in /lib/systemd/system

  make install-groups-users
     - This adds the users and groups if they do not exist

  make install-commandmode
     - This installs and configures permissions on the
       directory for holding the external command file

  make install-config
     - This installs *SAMPLE* config files in /usr/local/nagios/etc
       You'll have to modify these sample files before you can
       use Nagios.  Read the HTML documentation for more info
       on doing this.  Pay particular attention to the docs on
       object configuration files, as they determine what/how
       things get monitored!

  make install-webconf
     - This installs the Apache config file for the Nagios
       web interface

  make install-exfoliation
     - This installs the Exfoliation theme for the Nagios
       web interface

  make install-classicui
     - This installs the classic theme for the Nagios
       web interface
.
.
.
.

In above output we can see it listed some libraries to install we can install those using the make install command

for eg,

make install-init
make install-commandmode
make install-config

Output:

[root@vps nagios-4.4.6]# make install-config
/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/etc
/usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/etc/objects
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/nagios.cfg /usr/local/nagios/etc/nagios.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/cgi.cfg /usr/local/nagios/etc/cgi.cfg
/usr/bin/install -c -b -m 660 -o nagios -g nagios sample-config/resource.cfg /usr/local/nagios/etc/resource.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/templates.cfg /usr/local/nagios/etc/objects/templates.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/commands.cfg /usr/local/nagios/etc/objects/commands.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/contacts.cfg /usr/local/nagios/etc/objects/contacts.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/timeperiods.cfg /usr/local/nagios/etc/objects/timeperiods.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/localhost.cfg /usr/local/nagios/etc/objects/localhost.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/windows.cfg /usr/local/nagios/etc/objects/windows.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/printer.cfg /usr/local/nagios/etc/objects/printer.cfg
/usr/bin/install -c -b -m 664 -o nagios -g nagios sample-config/template-object/switch.cfg /usr/local/nagios/etc/objects/switch.cfg

*** Config files installed ***

Remember, these are *SAMPLE* config files.  You'll need to read
the documentation for more information on how to actually define
services, hosts, etc. to fit your particular needs.

To get Email alerts configure the file /usr/local/nagios/etc/objects/contacts.cfg

vi /usr/local/nagios/etc/objects/contacts.cfg

NOTE: Replace your Email ID in place of YOUR-EMAIL-ID-HERE

###############################################################################
#
# CONTACTS
#
###############################################################################

# Just one contact defined by default - the Nagios admin (that's you)
# This contact definition inherits a lot of default values from the
# 'generic-contact' template which is defined elsewhere.

define contact {

    contact_name            nagiosadmin             ; Short name of user
    use                     generic-contact         ; Inherit default values from generic-contact template (defined above)
    alias                   Nagios Admin            ; Full name of user
    email                   YOUR-EMAIL-ID-HERE ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}

Install and Configure Web Interface for Nagios

Command to install Web interface

make install-webconf

Command to set a password for the Web interface

htpasswd -s -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Restart Apache

systemctl start httpd.service

Enable Port 80

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

Output:

[root@vps nagios-4.4.6]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success
[root@vps nagios-4.4.6]# firewall-cmd --reload
success

Compile and Install Nagios Plugin libreires

Switch to Nagios Plugin

cd /root/nagios
cd nagios-plugins-2.2.1/

And run Nagios Plugin Configuration file

./configure --with-nagios-user=nagios --with-nagios-group=nagios

Next, Compile and install required libreires

make all
make install

Command to verify Nagios Configuration Files

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Output:

[root@vps nagios-plugins-2.2.1]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios Core 4.4.6
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2020-04-28
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

Enable Nagios Services

systemctl enable nagios
systemctl enable httpd

Login to the Nagios Web Interface

Open a Web browser and enter the following URL to login Nagios Web Interface

NOTE: Replace with your IP address or Fully qualified domain name in place of Your-server-IP-address FQDN

http://Your-server-IP-address/nagios 
or
http://FQDN/nagios

NOTE: Login for the Nagios Web Interface is default Username nagiosadmin and the Password you have set before in the previous step.

Nagios Web Dashboard

Host View

Nagios Overview

Services View

This concludes our topic of How to Install Nagios CentOS 8.

If you can not configure and face technical difficulties, kindly reach out to us via Support Ticket.