Sunday, 19 March 2023

How to install Nagios Core on Rocky Linux 9

How to install Nagios Core on Rocky Linux 9

In this Linux tutorial, you will learn how to install Nagios Core on Rocky Linux 9 or other Red Hat based Linux distributions.


Table of Contents:


    What is Nagios Core?:

    Nagios Core /ˈnɑːɡiːoʊs/, 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 alerts them a second time when the problem has been resolved.

    Ethan Galstad and a group of developers originally wrote Nagios as NetSaint. As of 2015 they actively maintain both the official and unofficial plugins. Nagios is a recursive acronym: "Nagios Ain't Gonna Insist On Sainthood" – "sainthood" makes reference to the original name NetSaint, which changed in response to a legal challenge by owners of a similar trademark. "Agios" (or "hagios") also transliterates the Greek word άγιος, which means "saint".

    Nagios was originally designed to run under Linux, but it also runs on other Unix variants. It is free software licensed under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. (Source: Wikipedia)


    Environment Specification:

    We are using a minimal Rocky Linux 9 virtual machine with following specifications.

    • CPU - 3.4 Ghz (2 cores)
    • Memory - 2 GB
    • Storage - 20 GB
    • Operating System - Rocky Linux release 9.1 (Blue Onyx)
    • Hostname - nagios-01.centlinux.com
    • IP Address -


    Preparing your Rocky Linux Server:

    By using a ssh client, login as root user on your Rocky Linux server.

    Set a Fully Qualified Domain Name (FQDN) for your Linux machine. You may also need to setup Local DNS resolution Or you can install a Linux based DNS server for this purpose.

    # hostnamectl set-hostname nagios-01.centlinux.com
    # echo " nagios-01 nagios-01.centlinux.com" >> /etc/hosts

    Refresh your Yum cache and update software packages in your Linux operating system.

    # dnf makecache
    # dnf update -y

    If the above command updates your Linux Kernel, then you should reboot your Linux operating system with newly installed Kernel before installing Nagios Core software.

    # reboot

    After reboot, check the version of your Linux operating system and Kernel.

    # cat /etc/rocky-release
    Rocky Linux release 9.1 (Blue Onyx)
    # uname -r

    SELinux may cause problems for Nagios Core software. Therefore, it is recommended in the Nagios Core documentation to disable SELinux or put it in permissive mode before installing your network monitoring software.

    You can use following commands to permanantly disable SELinux on Rocky Linux 9.

    # sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
    # setenforce 0


    Installing Nagios Prerequisites:

    Nagios Core requires some software packages. You can install all these packages by using following dnf command.

    # dnf install -y gcc glibc glibc-common perl httpd php wget gd gd-devel tar openssl-devel make gettext automake autoconf net-snmp net-snmp-utils epel-release

    Rebuild your yum cache for EPEL repository.

    # dnf makecache

    Execute following command to install perl-Net-SNMP package from EPEL yum repository.

    # dnf install -y perl-Net-SNMP

    Enable and start Apache and PHP services.

    # systemctl enable --now httpd.service php-fpm.service
    Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
    Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.


    Installing Nagios Core:

    Currently Nagios Core 4.4.10 is available at their official website.

    You can download it by executing wget command at Linux bash prompt.

    # wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.10.tar.gz
    --2023-03-14 21:21:57--  https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.10.tar.gz
    Resolving assets.nagios.com (assets.nagios.com)..., 2600:3c00::f03c:92ff:fef7:45ce
    Connecting to assets.nagios.com (assets.nagios.com)||:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 11339491 (11M) [application/x-gzip]
    Saving to: ‘nagios-4.4.10.tar.gz’
    nagios-4.4.10.tar.g 100%[===================>]  10.81M   929KB/s    in 12s
    2023-03-14 21:22:10 (943 KB/s) - ‘nagios-4.4.10.tar.gz’ saved [11339491/11339491]

    Extract the downloaded Nagios Core source as follows.

    # tar xzf nagios-4.4.10.tar.gz

    Go to extracted directory and configure the Nagios setup according to your server environment.

    # cd nagios-4.4.10
    # ./configure
    Creating sample config files in sample-config/ ...
    *** Configuration summary for nagios 4.4.10 2023-01-17 ***:
     General Options:
            Nagios executable:  nagios
            Nagios user/group:  nagios,nagios
           Command user/group:  nagios,nagios
                 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.

    Compile Nagios main program and CGIs using following command.

    # make all
    *** 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
    *** Support Notes *******************************************
    If you have questions about configuring or running Nagios,
    please make sure that you:
         - Look at the sample config files
         - Read the documentation on the Nagios Library at:
    before you post a question to one of the mailing lists.
    Also make sure to include pertinent information that could
    help others help you.  This might include:
         - What version of Nagios you are using
         - What version of the plugins you are using
         - Relevant snippets from your config files
         - Relevant error messages from the Nagios log file
    For more information on obtaining support for Nagios, visit:

    Create the required OS users and groups by using the following command.

    # make install-groups-users
    groupadd -r nagios
    useradd -g nagios nagios

    Add nagios as secondary group of apache user.

    # usermod -a -G nagios apache

    Install the already compiled Nagios Core binaries on your Rocky Linux server.

    # make install

    To configure autostart of Nagios network monitoring software, you need to create a systemd service. The Nagios installer also provides a method to create the required service.

    You can create the Nagios service by using the following command.

    # make install-daemoninit
    /usr/bin/install -c -m 755 -d -o root -g root /lib/systemd/system
    /usr/bin/install -c -m 755 -o root -g root startup/default-service /lib/systemd/system/nagios.service
    Created symlink /etc/systemd/system/multi-user.target.wants/nagios.service → /usr/lib/systemd/system/nagios.service.
    *** Init script installed ***

    You can use the following command to configure Nagios Core command mode on Rocky Linux 9.

    # make install-commandmode
    /usr/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/var/rw
    chmod g+s /usr/local/nagios/var/rw
    *** External command directory configured ***

    Install the Nagios sample configuration file on your Rocky Linux server by using the following command format.

    # 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.

    Install the Apache configuration file to configure the Nagios web interface.

    # make install-webconf
    /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf
    if [ 0 -eq 1 ]; then \
            ln -s /etc/httpd/conf.d/nagios.conf /etc/apache2/sites-enabled/nagios.conf; \
    *** Nagios/Apache conf file installed ***

    Everything has been configured successfully. Now it is time to start and test the Nagios and Apache services.

    # systemctl restart httpd nagios


    Configure Linux Firewall:

    Allow the Apache web service in your Linux firewall.

    # firewall-cmd --permanent --add-service=http
    # firewall-cmd --reload


    Configure Basic HTTP Authentication:

    Nagios Core does not provide a native authentication method, therefore, you have to use Basic HTTP authentication to create authentication control for the Nagios web interface.

    Create an Admin user and add it to htaccess password file.

    # htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
    New password:
    Re-type new password:
    Adding password for user nagiosadmin


    Installing Nagios Plugins:

    To monitor a machine with Nagios network monitoring software, you need to install the relevant plugins/agents on that machine.

    Nagios Plugins is a pack of more than 50 plugins that provides the plugins to monitor most common metrics and services on a machine.

    Download Nagios Plugins from their official website.

    # wget https://nagios-plugins.org/download/nagios-plugins-2.3.3.tar.gz
    --2023-03-14 21:54:23--  https://nagios-plugins.org/download/nagios-plugins-2.3.3.tar.gz
    Resolving nagios-plugins.org (nagios-plugins.org)...
    Connecting to nagios-plugins.org (nagios-plugins.org)||:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 2782610 (2.7M) [application/x-gzip]
    Saving to: ‘nagios-plugins-2.3.3.tar.gz’
    nagios-plugins-2.3. 100%[===================>]   2.65M   885KB/s    in 3.1s
    2023-03-14 21:54:28 (885 KB/s) - ‘nagios-plugins-2.3.3.tar.gz’ saved [2782610/2782610]

    Extract the downloaded tarball using tar command.

    # tar zxf nagios-plugins-2.3.3.tar.gz

    Go to extracted setup directory and build and install Nagios Plugins from source.

    # cd nagios-plugins-2.3.3
    # ./configure
    # make
    # make install

    Restart the Nagios Service to take changes into effect.

    # systemctl restart nagios.service

    Browse URL http://nagios-01.centlinux.com/nagios in a web browser.

    You need to Login as nagiosadmin user.


    We are now at the Dashboard of Nagios Core web interface. Click on "Services".


    Recommended Book: Learning Nagios - Third Edition



    In this Linux tutorial, you have learned how to install Nagios Core on Rocky Linux 9 or other Red Hat based Linux distributions.

    If you find this article useful? Consider supporting us by Buy Me A Coffee

    No comments:

    Post a Comment

    © 2023 CentLinux. All Rights Reserved.