
Step-by-Step Guide: Adding a New Host to Your Nagios Server
Effective system monitoring is the cornerstone of a stable and reliable IT infrastructure. Nagios Core stands as a powerful, open-source tool that provides deep insights into your network’s health. To leverage its full potential, you must first configure it to monitor your critical servers and devices. This guide will walk you through the essential steps of adding a new host to your Nagios server for comprehensive monitoring.
Adding a host involves two key phases: configuring the remote host you wish to monitor (the client) and then defining that host on your Nagios server.
Prerequisites
Before you begin, ensure you have the following in place:
- A fully operational Nagios Core server.
- Root or sudo access to both the Nagios server and the remote host.
- The IP address of the remote host you intend to monitor.
Step 1: Install the Nagios Agent (NRPE) on the Remote Host
For the Nagios server to check the local services and resources of a remote machine (like CPU load, disk space, or running processes), you need to install an agent on that client. The most common agent is the Nagios Remote Plugin Executor (NRPE).
The installation process varies by operating system. For most Debian/Ubuntu-based systems, you can use the package manager:
sudo apt-get update
sudo apt-get install nagios-nrpe-server nagios-plugins
For RHEL/CentOS-based systems, you will typically need the EPEL repository first:
sudo yum install epel-release
sudo yum install nrpe nagios-plugins-all
Once installed, the NRPE service acts as a daemon, listening for check requests from the Nagios server.
Step 2: Configure the NRPE Agent
After installation, you must configure the NRPE agent to accept connections from your Nagios server. This is a critical security step to prevent unauthorized access.
Open the NRPE configuration file, usually located at /etc/nagios/nrpe.cfg.
sudo nano /etc/nagios/nrpe.cfg
Find the allowed_hosts directive. By default, it may only allow connections from the localhost. You must add the private IP address of your Nagios server to this line. If multiple servers need to connect, separate them with a comma.
# Example configuration
allowed_hosts=127.0.0.1,::1,192.168.1.100
In this example, 192.168.1.100 is the IP address of the Nagios monitoring server.
After saving the file, restart the NRPE service to apply the changes:
sudo systemctl restart nagios-nrpe-server
Or on older systems:
sudo service nagios-nrpe-server restart
Step 3: Create the Host Configuration on the Nagios Server
Now, switch back to your Nagios server. All host and service definitions are stored in configuration files, typically located in /usr/local/nagios/etc/objects/. For better organization, it’s best practice to create a separate configuration file for each host or group of hosts.
Create a new configuration file for your remote host. Let’s call it web-server.cfg.
sudo nano /usr/local/nagios/etc/objects/web-server.cfg
Inside this file, you will define the host and the services you want to monitor for that host.
Defining the Host
First, create the host definition. This tells Nagios about the remote machine itself—its name, alias, and IP address. A typical host definition looks like this:
define host{
use linux-server ; Inherit default settings from a template
host_name web-server-01 ; A unique name for this host
alias Primary Web Server ; A longer, descriptive name
address 192.168.1.205 ; IP address of the remote host
}
The use linux-server directive is crucial, as it inherits a pre-defined set of properties from a template, simplifying your configuration.
Defining Services
Next, you need to define the specific services you want to monitor on this host. Each service check is its own definition block. Here are a few common examples:
1. Ping Check (Host Availability):
define service{
use generic-service
host_name web-server-01
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
2. CPU Load Check (via NRPE):
define service{
use generic-service
host_name web-server-01
service_description CPU Load
check_command check_nrpe!check_load
}
3. Root Partition Disk Space (via NRPE):
define service{
use generic-service
host_name web-server-01
service_description Root Partition
check_command check_nrpe!check_disk
}
In these examples, check_nrpe!check_load tells Nagios to use the check_nrpe command and pass the check_load argument to the NRPE agent on the remote host. The agent then executes the local plugin associated with check_load and returns the result.
Step 4: Add the New Host File to the Main Nagios Configuration
Nagios won’t know about your new web-server.cfg file until you explicitly tell it to load it. Open the main Nagios configuration file, nagios.cfg.
sudo nano /usr/local/nagios/etc/nagios.cfg
Scroll down to the section that includes configuration files and add a new line for your host file:
# You can specify individual object config files as shown below:
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/web-server.cfg # <-- Add this line
Step 5: Verify Configuration and Restart Nagios
Before restarting the Nagios service, it is absolutely essential to verify your configuration files for any syntax errors. A single typo can prevent Nagios from starting.
Run the following command:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
If the verification is successful, you will see a summary of your configuration with “Total Warnings: 0” and “Total Errors: 0”. If there are errors, the output will tell you the exact file and line number where the problem occurred.
Once the verification passes, you can safely restart the Nagios service to apply all your changes:
sudo systemctl restart nagios
Or on older systems:
sudo service nagios restart
After a few moments, log in to your Nagios web interface. You should now see your new host, web-server-01, and its associated service checks appearing on the dashboard. The checks will initially be in a “Pending” state before they update with their first results.
Source: https://kifarunix.com/add-hosts-to-nagios-server-for-monitoring/


