Tip

Remote server monitoring with Nagios

This is the second installation in a series of tips on using the open source network monitoring tool Nagios. Part one of the series covered Nagios installation

Requires Free Membership to View

and configuration, while part three details using Nagios plugins. In this second part of our series, you’ll learn how to use Nagios for remote server monitoring.

After setting up a Nagios host, you'll learn what to do next. Assuming the Nagios host is now fully functional, it's time to set it up to monitor remote hosts.

More on this topic

Speaking generically, there are two ways to set up Nagios remote host monitoring. The easiest is to set up straight remote server monitoring. This allows you to check the availability of services, but you can't request parameters that are local to the host. Alternatively, you can install the Nagios Remote Program Execution (NRPE) agent on the remote host. Because NRPE uses a locally installed daemon, it allows you to monitor local parameters such as available disk space. Setting up NRPE, however, is more difficult than setting up remote server monitoring. Today I’ll discuss the simpler option, but I’ll delve into NRPE in a follow-up tip.

To configure Nagios for remote server monitoring, you have to start from the /etc/nagios/nagios.cfg configuration file. In this file, the Nagios configuration is build. This happens by referring to the objects files. In these, the different aspects of Nagios functionality are defined.

In nagios.cfg, Nagios learns how to handle its objects:

cfg_file=/etc/nagios/objects/commands.cfg

cfg_file=/etc/nagios/objects/contacts.cfg

cfg_file=/etc/nagios/objects/timeperiods.cfg

cfg_file=/etc/nagios/objects/templates.cfg 

 

# Definitions for monitoring the local (Linux) host

cfg_file=/etc/nagios/objects/localhost.cfg

 

# Definitions for monitoring a Windows machine

#cfg_file=/etc/nagios/objects/windows.cfg

 

# Definitions for monitoring a router/switch

#cfg_file=/etc/nagios/objects/switch.cfg 

 

# Definitions for monitoring a network printer

#cfg_file=/etc/nagios/objects/printer.cfg

By default, monitoring of the local host is activated from the nagios.cfg file. If you want to set it up to also monitor a remote host, you need to add a specific line. Such a line could look like this: 

cfg_file=/etc/nagios/objects/server1.cfg

As you can see, this line refers to the /etc/nagios/objects/server1.cfg file. Make sure that it exists and requires the instructions needed for appropriate monitoring. To start with, you need a host definition. To monitor a server with the name server1, it should be modified as follows:

define host{

        use                     linux-server            ; Name of host template to use

                                                        ; This host definition will inherit all variables that are defined

                                                        ; in (or inherited by) the linux-server host template definition.

        host_name         server1

        alias                   fedora-server

        address              192.168.1.85

        }

In this example file, you can see that the first line specifies that a template with the name linux-server is to be used. This template contains settings that you typically want to apply to all hosts that are monitored, such as timeout settings or a specification of the number of packets that you want to send over.

In the next part of the configuration file, you need to specify what you want to monitor. Typically, these are services, such as an SSH server of a Web server. To do this, you can include the service in the server1.cfg file, as in the following example, which pings the host on a regular basis:

define service{

        use                             local-service         ; Name of service template to use

        host_name                 server1

        service_description   PING

        check_command       check_ping!100.0,20%!500.0,60%

        }

In this example, you can see that a template is used as well. It has the name local-service and contains default settings that are typically used for service monitoring. The other important part here is the check_command; check_ping. This command is available as an external plug-in, a custom made program that is written for Nagios operation.

Likewise, you can check other services as well, such as SSH:

define service{

        use                                local-service         ; Name of service template to use

        host_name                    localhost

        service_description      SSH
        check_command          check_ssh
        notifications_enabled   0
        }

You see that this example refers to specific Nagios commands. On a default Nagios installation, you'll find these commands in /usr/lib/nagios/plugins. Some commands are available by default; if the command you need is not, you can create your own. In a follow-up article, you'll learn how to do that.
 


In /usr/lib/nagios/plugins, you can find some commands that are installed by default
(click for a larger image)
 

After setting up a host-specific configuration for all the remote hosts you want to monitor, you have to re-start Nagios on the Nagios host to activate the changes. While starting Nagios, you may occasionally encounter errors. If this is the case, you can have a look at the Nagios error log, which is in /var/log/nagios/config.err by default. This configuration file tells you exactly in which line something is wrong, allowing you to easily fix the problem.

Conclusion

In this article you've learned how to set up remote server monitoring using remote host definitions that contain a specification for each individual service that needs monitoring. The advantage of this approach is that it is easy to set up; however, you can't use it to monitor local parameters on the host. In a future follow-up article, you'll read how to do that using NRPE and SSH.

This was first published in September 2010

There are Comments. Add yours.

 
TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.