How to Add Linux Host to Nagios Monitoring Server Using NRPE Plugin

In our first part of this article, we’ve explained in detail on how to install and configure the latest Nagios 4.4.5 on RHEL/CentOS 8/7 and Fedora 30 server. In this article, we will show you how to add Remote Linux machine and it’s services to Nagios Monitoring host using NRPE agent.

We hope you already have Nagios installed and running properly. If not, please use the following installation guide to install it on the system.

  1. How to Install Nagios 4.4.5 on RHEL/CentOS 8/7 and Fedora 30
  2. How to Add Windows Host to Nagios Monitoring Server

Once you’ve installed, you can proceed further to install NRPE agent on your Remote Linux host. Before heading further, let us give you a short description of NRPE.

What is NRPE?

The NRPE (Nagios Remote Plugin Executor) plugin allows you to monitor any remote Linux/Unix services or network devices. This NRPE add-on allows Nagios to monitor any local resources like CPU load, Swap, Memory usage, Online users, etc. on remote Linux machines. After all, these local resources are not mostly exposed to external machines, an NRPE agent must be installed and configured on the remote machines.

Note: The NRPE addon requires that Nagios Plugins must be installed on the remote Linux machine. Without these, the NRPE daemon will not work and will not monitor anything.

Installation of NRPE Plugin

To use the NRPE, you will need to do some additional tasks on both the Nagios Monitoring Host and Remote Linux Host that the NRPE installed on. We will be covering both the installation parts separately.

We assume that you are installing the NRPE on a host that supports TCP wrappers and Xinted daemon installed on it. Today, most of the modern Linux distributions have these two installed by default. If not, we will install it later during the installation when required.

On Remote Linux Host

Please use the below instructions to install Nagios Plugins and NRPE daemon on the Remote Linux Host.

Step 1: Install Required Dependencies

We need to install required libraries like gcc, glibc, glibc-common and GD and its development libraries before installing.

[[email protected]]# yum install -y gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel
 
 -------------- On Fedora --------------
 [[email protected]]# dnf install -y gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel
Step 2: Create Nagios User

Create a new nagios user account and set a password.

[[email protected]]# useradd nagios
 [[email protected]]# passwd nagios
Step 3: Install the Nagios Plugins

Create a directory for installation and all its future downloads.

[[email protected]]# cd /root/nagios

Now download latest Nagios Plugins 2.1.2 package with wget command.

[[email protected] nagios~]# wget https://www.nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz
Step 4: Extract Nagios Plugins

Run the following tar command to extract the source code tarball.

[[email protected] nagios~]# tar -xvf nagios-plugins-2.1.2.tar.gz

After, extracting one new folder will appear in that directory.

[[email protected] nagios ~]# ls -l
 
 total 2640
 drwxr-xr-x. 15 root root 4096 Aug 1 21:58 nagios-plugins-2.1.2
 -rw-r--r--. 1 root root 2695301 Aug 1 21:58 nagios-plugins-2.1.2.tar.gz
 
Step 5: Compile and Install Nagios Plugins

Next, compile and install using the following commands

[[email protected] nagios]# cd nagios-plugins-2.1.2
 [[email protected] nagios-plugins-2.1.2]# ./configure 
 [[email protected] nagios-plugins-2.1.2]# make
 [[email protected] nagios-plugins-2.1.2]# make install
 

Set the permissions on the plugin directory.

[[email protected] nagios-plugins-2.1.2]# chown nagios.nagios /usr/local/nagios
 [[email protected] nagios-plugins-2.1.2]# chown -R nagios.nagios /usr/local/nagios/libexec
Step 6: Install Xinetd

Most of the systems, it is by default installed. If not, install xinetd package using following yum command.

[[email protected] nagios-plugins-2.1.2]# yum install xinetd
 
 -------------- On Fedora --------------
 [[email protected] nagios-plugins-2.1.2]# dnf install xinetd
 
Step 7: Install NRPE Plugin

Download latest NRPE Plugin 3.2 packages with wget command.

[[email protected] nagios-plugins-2.1.2]# cd /root/nagios
 [[email protected] nagios]# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz
 

Unpack the NRPE source code tarball.

[[email protected] nagios]# tar xzf nrpe-3.2.1.tar.gz
 [[email protected] nrpe-3.2]# cd nrpe-3.2.1
 

Compile and install the NRPE addon.

[[email protected] nrpe-3.2.1]# ./configure
 [[email protected] nrpe-3.2.1]# make all

Next, install the NRPE plugin daemon, and sample daemon config file.

[[email protected] nrpe-3.2]# make install-plugin
 [[email protected] nrpe-3.2.1]# make install-daemon
 [[email protected] nrpe-3.2.1]# make install-daemon-config

Install the NRPE daemon under xinetd as a service.

[[email protected] nrpe-3.2.1]# make install-xinetd
 OR
 [[email protected] nrpe-3.2.1]# make install-inetd
 

Now open /etc/xinetd.d/nrpe file and add the localhost and IP address of the Nagios Monitoring Server.

only_from = 127.0.0.1 localhost<nagios_ip_address>

Next, open /etc/services file add the following entry for the NRPE daemon at the bottom of the file.

nrpe 5666/tcp NRPE

Restart the xinetd service.

[[email protected]]# service xinetd restart
Step 8: Verify NRPE Daemon Locally

Run the following command to verify the NRPE daemon working correctly under xinetd.

[[email protected]]# netstat -at | grep nrpe
 
 tcp 0 0 *:nrpe *:* LISTEN

If you get output similar to above, means it working correctly. If not, make sure to check the following things.

  1. Check you’ve added nrpe entry correctly in /etc/services file
  2. The only_from contains an entry for “nagios_ip_address” in the /etc/xinetd.d/nrpe file.
  3. The xinetd is installed and started.
  4. Check for the errors in the system log files for about xinetd or nrpe and fix those problems.

Next, verify the NRPE daemon is functioning properly. Run the “check_nrpe” command that was installed earlier for testing purposes.

[[email protected]]# /usr/local/nagios/libexec/check_nrpe -H localhost

You will get a following string on the screen, it shows you what version of NRPE is installed:

NRPE v3.2
Step 9: Configure Firewall Rules

Make sure that the Firewall on the local machine will allow the NRPE daemon to be accessed from remote servers. To do this, run the following iptables command.

-------------- On RHEL/CentOS 6/5 and Fedora --------------
 [[email protected]]# iptables -A INPUT -p tcp -m tcp --dport 5666 -j ACCEPT
 
 -------------- On RHEL/CentOS 8/7 and Fedora 19 Onwards --------------
 [[email protected]]# firewall-cmd --permanent --zone=public --add-port=5666/tcp
 

Run the following command to Save the new iptables rule so it will survive at system reboots.

-------------- On RHEL/CentOS 6/5 and Fedora --------------
 [[email protected]]# service iptables save
 
Step 10: Customize NRPE commands

The default NRPE configuration file that got installed has several command definitions that will be used to monitor this machine. The sample configuration file located at.

[[email protected]]# vi /usr/local/nagios/etc/nrpe.cfg

The following are the default command definitions that are located at the bottom of the configuration file. For the time being, we assume you are using these commands. You can check them by using the following commands.

# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_users
 
 USERS OK - 1 users currently logged in |users=1;5;10;0
# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_load
 
 OK - load average: 3.90, 4.37, 3.94|load1=3.900;15.000;30.000;0; load5=4.370;10.000;25.000;0; load15=3.940;5.000;20.000;0;
# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_hda1
 
 DISK OK - free space: /boot 154 MB (84% inode=99%);| /boot=29MB;154;173;0;193
# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_total_procs
 
 PROCS CRITICAL: 297 processes
# /usr/local/nagios/libexec/check_nrpe -H localhost -c check_zombie_procs
 
 PROCS OK: 0 processes with STATE = Z

You can edit and add new command definitions by editing the NRPE config file. Finally, you’ve successfully installed and configured NRPE agent on the Remote Linux Host. Now it’s time to install a NRPE component and add some services on your Nagios Monitoring Server

On Nagios Monitoring Server

Now login into your Nagios Monitoring Server. Here you will need to do the following things:

  1. Install the check_nrpe plugin.
  2. Create a Nagios command definition using the check_nrpe plugin.
  3. Create Nagios host and add service definitions for monitoring the remote Linux host.
Step 1: Install NRPE Plugin

Go to the nagios download directory and download the latest NRPE Plugin with wget command.

[[email protected]]# cd /root/nagios
 [[email protected]]# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

Unpack the NRPE source code tarball.

[[email protected]]# tar xzf nrpe-3.2.1.tar.gz
 [[email protected]]# cd nrpe-3.2

Compile and install the NRPE addon.

[[email protected]]# ./configure
 [[email protected]]# make all
 [[email protected]]# make install-daemon
Step 2: Verify NRPE Daemon Remotely

Make sure that the check_nrpe plugin can communicate with the NRPE daemon on the remote Linux host. Add the IP address in the command below with the IP address of your Remote Linux host.

[[email protected]]# /usr/local/nagios/libexec/check_nrpe -H <remote_linux_ip_address>

You will get a string back that shows you what version of NRPE is installed on the remote host, like this:

NRPE v3.2

If your receive a plugin time-out error, then check the following things.

  1. Make sure your firewall isn’t blocking the communication between the remote host and the monitoring host.
  2. Make sure that the NRPE daemon is installed correctly under xinetd.
  3. Make sure that the remote Linux host firewall rules blocking the monitoring server from communicating to the NRPE daemon.

Adding Remote Linux Host to Nagios Monitoring Server

To add a remote host you need to create a two new files “hosts.cfg” and “services.cfg” under “/usr/local/nagios/etc/” location.

[[email protected]]# cd /usr/local/nagios/etc/
 [[email protected]]# touch hosts.cfg
 [[email protected]]# touch services.cfg

Now add these two files to main Nagios configuration file. Open nagios.cfg file with any editor.

[[email protected]]# vi /usr/local/nagios/etc/nagios.cfg

Now add the two newly created files as shown below.

# You can specify individual object config files as shown below:
 cfg_file=/usr/local/nagios/etc/hosts.cfg
 cfg_file=/usr/local/nagios/etc/services.cfg

Now open hosts.cfg file and add the default host template name and define remote hosts as shown below. Make sure to replace host_name, alias and address with your remote host server details.

[[email protected]]# vi /usr/local/nagios/etc/hosts.cfg
## Default Linux Host Template ##
 define host{
 name linux-box ; Name of this template
 use generic-host ; Inherit default values
 check_period 24x7 
 check_interval 5 
 retry_interval 1 
 max_check_attempts 10 
 check_command check-host-alive
 notification_period 24x7 
 notification_interval 30 
 notification_options d,r 
 contact_groups admins 
 register 0 ; DONT REGISTER THIS - ITS A TEMPLATE
 }
 
 ## Default
 define host{
 use linux-box ; Inherit default values from a template
 host_name tecmint   ; The name we're giving to this serveralias CentOS 6 ; A longer name for the serveraddress 5.175.142.66 ; IP address of Remote Linux host
 }

Next open services.cfg file and add the following services to be monitored.

[[email protected]]# vi /usr/local/nagios/etc/services.cfg
define service{
 use generic-service
 host_name tecmint
 service_description CPU Load
 check_command check_nrpe!check_load
 }
 
 define service{
 use generic-service
 host_name tecmint
 service_description Total Processes
 check_command check_nrpe!check_total_procs
 }
 
 define service{
 use generic-service
 host_name tecmint
 service_description Current Users
 check_command check_nrpe!check_users
 }
 
 define service{
 use generic-service
 host_name tecmint
 service_description SSH Monitoring
 check_command check_nrpe!check_ssh
 }
 
 define service{
 use generic-service
 host_name tecmint
 service_description FTP Monitoring
 check_command check_nrpe!check_ftp
 }

Now NRPE command definition needs to be created in commands.cfg file.

[[email protected]]# vi /usr/local/nagios/etc/objects/commands.cfg

Add the following NRPE command definition at the bottom of the file.

###############################################################################
 # NRPE CHECK COMMAND
 #
 # Command to use NRPE to check remote host systems
 ###############################################################################
 
 define command{
 command_name check_nrpe
 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
 }

Finally, verify Nagios Configuration files for any errors.

[[email protected]]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
 
 Total Warnings: 0
 Total Errors: 0

Restart Nagios:

[[email protected]]# service nagios restart

That’s it. Now go to Nagios Monitoring Web interface at “http://Your-server-IP-address/nagios” or “http://FQDN/nagios” and Provide the username “nagiosadmin” and password. Check that the Remote Linux Host was added and is being monitored.

Nagios Remote Host Monitoring

That’s it! for now, in our my up-coming article I will show you how to add Windows host to Nagios monitoring Server. If you’re facing any difficulties while adding the remote host to Nagios. Please do comment your queries or problem via the comment section, till then stay tuned to Tecmint.com for more such valuable articles.

If you liked this article, then do subscribe to email alerts for Linux tutorials. If you have any questions or doubts? do ask for help in the comments section.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.

524 thoughts on “How to Add Linux Host to Nagios Monitoring Server Using NRPE Plugin”

  1. I am getting error that says:

    “Redirecting to /bin/systemctl start nagios.service
    Job for nagios.service failed because the control process exited with an error code. See “systemctl status nagios.service” and “journalctl -xe” for details.”

    Reply
  2. Hello,

    I am administering our NAGIOS XI server (v5.5.9) and it is working just fine monitoring LINUX hosts with a variety of LINUX OS v7.9 and lower. This is my first use of a CentOS8.x node in our environment and I’m unable to get the tools installed for monitoring using the steps outlined above.

    In my case, the verification in Step 8 fails —

    [[email protected] tmp]# /usr/local/nagios/libexec/check_nrpe -H localhost CHECK_NRPE: Error - Could not connect to ::4c3a:433a:4b3a:413a: Connection reset by peer [[email protected] tmp]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 CHECK_NRPE: Error - Could not connect to 127.0.0.1: Connection reset by peer 

    Also, I am unable to verify Step 10 “Customize NRPE Commands” file /usr/local/nagios/etc/nrpe.cfg because the directory /usr/local/nagios/etc/ is not installed.

    Any suggestions?

    Reply
  3. I need help, I just want to ask you that, the Nagios, Nagios-Plugins, NRPE, and Xinetd are installed in one machine or different?

    Reply
    • @Partik,

      Nagios is installed on the server machine, and Nagios-Plugins, NRPE, and Xinetd installed on client machines…

      Reply
  4. Dear Tecmit team,

    why I am getting below error while installing nrpe

    [[email protected] nrpe-nrpe-4.0.3]# make install-daemon-config make: *** No rule to make target `install-daemon-config'. Stop. 
    Reply
    • I am also getting:

      make: *** No rule to make target `install-daemon-config'. Stop.

      What do we need to do to work around that?

      Reply
  5. I was hoping to find a few more examples. I am trying to figure out how to check for specific processes running on my servers. For example, if I wanted to know if Firefox was running. How do you write a command_check to perform a ps -ef |grep -i firefox or something of the sort?

    Reply
  6. Tried this:

    # /usr/local/nagios/libexec/check_nrpe -H localhost 

    and getting this error:

    connect to address ::1 port 5666: Connection refused connect to address 127.0.0.1 port 5666: Connection refused connect to host localhost port 5666: Connection refused 
    Reply
    • # chown nagios.nagios /usr/local/nagios/var 

      Enter the above command to change ownership and start the nrpe service.

      Reply

Got something to say? Join the discussion. Cancel reply

Scroll back to top