Nagios setup - client side reporting


#1

RE: check_disk reporting

Okay, so I’m new to Nagios. Need some help folks.

I have Nagios set up and running on 2 clients (Solaris 7,8) and on the server itself (Solaris 10). I have even broken the minimal.cfg file up into multiple config files, e.g. hosts.cfg. Making great progress (I think).
Here’s my dillemma: I have installed nrpe on the client side (remote host) and I have it up and running. I even set up the check_disk plugin in the services.cfg file. When I view the Nagios web interface it reports : DISK OK - free space: / 17846 MB (73%):

Here’s the kicker: the clients and the server are reporting the same information, and actually the data is accurate for the server, but not for the clients. It’s almost as if the client status is inheriting the server’s ‘check_disk’ results. Bizarre!!!

My questions are:

  1. is nrpe on the client all that is required?
  2. do I need to install the plugins on the client?
  3. what is nsca anyway?

TIA,
MYP4
PS. please don’t ask me why all the different versions of Solaris. I’m consulting here while my customer looks for a resource to replace a Unix admin who recently left for greener pastures. :wink:


#2

First thing’s first: NRPE and NSCA are two different daemons that can be used to send local host check data to the central Nagios server. Essentially, they operate in opposite manners.

In NSCA, the daemon is run on the main Nagios server, which listens on one port to accept passive checks from the client servers, who all have mini-Nagios installations running on them. The client machines will execute checks and push the data to the Nagios server. This is good for your central Nagios server if you have lots of hosts, as it cuts down on use of system resources.

NRPE is a daemon that is run on all of the clients that will be used by your main Nagios server to get local check information. You need only to install the NRPE daemon and the applicable plugins on the client machines, and the NRPE daemon listens on a certain port on your clients. The Nagios server then pulls the local check data from the clients by instructing the NRPE daemon to execute a check and return the data.

Hence, for NRPE, you need only the daemon and the plugins for the client. With NSCA, you’ll need to actually install Nagios, minus the CGI’s.

In your case, you might just consider NRPE. There is less to configure and you’ve only got two clients to monitor.


#3

SonOfThunder,

Thanks for helping me understand the difference between NRPE and NSCA. Now I know it’s place in the Nagios architecture.

I have added the plugins to the clients and restarted Nagios. I am still getting the same disk info from check_disk (for all 3 hosts).

Here’s a remote host entry from my services.cfg file:

define service{
use generic-service ; Name of service template to use
host_name rhea
service_description FILESYSTEM
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups nagios
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_disk!10%!5%!/
}

Should I be replacing check_disk with rhea:/usr/local/lib/nagios/plugins/check_disk to get it to run on the remote machine??? I’m missing something, but I don’t fully understand Nagios yet to be able to troubledshoot it myself. :frowning:

I have edited the nrpe.cfg on the remote host. Here’s the check_disk line:

command[check_disk]=/usr/local/lib/nagios/plugins/check_disk -w 10% -c 5% -p /

MYP4
PS. b.t.w. I think the Solaris package nagios-plugins-1.3.1_3-sol8-sparc-local has been setup incorrectly as it places the plugins into the /usr/local/lib/nagios/plugins directory instead of the /usr/local/nagios/libexec directory. My $0.02. :frowning:


#4

The reason you’re getting the same results is that your Nagios server is actually just exectuting the check on itself three times. You need to use the check_nrpe plugin on your main Nagios server and use that as your check command. I can post my configs for checkcommands.cfg and services.cfg on my own Nagios server if it’ll help you figure it out.

Remember, you don’t need to install Nagios on the remote servers to use NRPE. It’s entirely unnecessary.


#5

Silly me. If it was a snake I’d be pig fodder by now. :frowning:

Thanks.

MYP4
PS. wouldn’t mind taking a look at those config files. :wink:


#6

On the remote host (client):
nrpe.cfg:
#############################################################################

Sample NRPE Config File

Written by: Ethan Galstad ([email protected])

Last Modified: 03-05-2003

NOTES:

This is a sample configuration file for the NRPE daemon. It needs to be

located on the remote host that is running the NRPE daemon, not the host

from which the check_nrpe client is being executed.

#############################################################################

PORT NUMBER

Port number we should wait for connections on.

NOTE: This must be a non-priviledged port (i.e. > 1024).

NOTE: This option is ignored if NRPE is running under either inetd or xinetd

server_port=5050

SERVER ADDRESS

Address that nrpe should bind to in case there are more than one interface

and you do not want nrpe to bind on all interfaces.

NOTE: This option is ignored if NRPE is running under either inetd or xinetd

#server_address=192.168.1.1

ALLOWED HOST ADDRESSES

This is a comma-delimited list of IP address of hosts that are allowed

to talk to the NRPE daemon.

NOTE: The daemon only does rudimentary checking of the client’s IP

address. I would highly recommend adding entries in your

/etc/hosts.allow file to allow only the specified host to connect

to the port you are running this daemon on.

NOTE: This option is ignored if NRPE is running under either inetd or xinetd

allowed_hosts=nagios_ip

NRPE USER

This determines the effective user that the NRPE daemon should run as.

You can either supply a username or a UID.

NOTE: This option is ignored if NRPE is running under either inetd or xinetd

nrpe_user=nagios

NRPE GROUP

This determines the effective group that the NRPE daemon should run as.

You can either supply a group name or a GID.

NOTE: This option is ignored if NRPE is running under either inetd or xinetd

nrpe_group=nagios

COMMAND ARGUMENT PROCESSING

This option determines whether or not the NRPE daemon will allow clients

to specify arguments to commands that are executed. This option only works

if the daemon was configured with the --enable-command-args configure script

option.

*** ENABLING THIS OPTION IS A SECURITY RISK! ***

Read the SECURITY file for information on some of the security implications

of enabling this variable.

Values: 0=do not allow arguments, 1=allow command arguments

dont_blame_nrpe=0

DEBUGGING OPTION

This option determines whether or not debugging messages are logged to the

syslog facility.

Values: 0=debugging off, 1=debugging on

debug=0

COMMAND TIMEOUT

This specifies the maximum number of seconds that the NRPE daemon will

allow plugins to finish executing before killing them off.

command_timeout=60

INCLUDE CONFIG FILE

This directive allows you to include definitions from an external config file.

#include=<somefile.cfg>

INCLUDE CONFIG DIRECTORY

This directive allows you to include definitions from config files (with a

.cfg extension) in one or more directories (with recursion).

#include_dir=
#include_dir=

COMMAND DEFINITIONS

Command definitions that this daemon will run. Definitions

are in the following format:

command<command_name>]=<command_line>

When the daemon receives a request to return the results of <command_name>

it will execute the command specified by the <command_line> argument.

Unlike Nagios, the command line cannot contain macros - it must be

typed exactly as it should be executed.

Note: Any plugins that are used in the command lines must reside

on the machine that this daemon is running on! The examples below

assume that you have plugins installed in a /usr/local/nagios/libexec

directory. Also note that you will have to modify the definitions below

to match the argument format the plugins expect. Remember, these are

examples only!

The following examples use hardcoded command arguments…

command{check_swap]=/usr/local/nagios/libexec/check_swap -w 75 -c 90
command[check_mem]=/usr/local/nagios/libexec/check_mem -w 75 -c 90
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_disk1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /
command[check_disk2]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hdb1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

The following examples allow user-supplied arguments and can

only be used if the NRPE daemon was compiled with support for

command arguments AND the dont_blame_nrpe directive in this

config file is set to ‘1’…

#command[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$
#command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
#command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
#command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$


On my Nagios server:
Here I define the NRPE check command in checkcommands.cfg:

check_nrpe

define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -p $ARG1$ -c $ARG2$
}

and in services.cfg:

define service{
name nrpe-service
is_volatile 0
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
register 0
check_period 24x7
contact_groups admins
notification_period 24x7
}

define service{
use nrpe-service
name nrpe-ram
service_description RAM Usage
check_command check_nrpe!5050!check_mem
normal_check_interval 10
retry_check_interval 1
register 0
notification_interval 15
max_check_attempts 2
notification_options u,c,r
}

define service{
use nrpe-service
name nrpe-swap
service_description SWAP Space
check_command check_nrpe!5050!check_swap
normal_check_interval 10
retry_check_interval 1
register 0
notification_interval 15
max_check_attempts 2
notification_options u,c,r
}

define service{
use nrpe-service
name nrpe-disk
check_command check_nrpe!5050!check_disk1
service_description Disk Space
register 0
normal_check_interval 60
retry_check_interval 1
notification_interval 180
max_check_attempts 3
notification_options w,u,c,r
}

define service{
use nrpe-service
name nrpe-cpu
check_command check_nrpe!5050!check_load
service_description CPU Load
register 0
normal_check_interval 5
retry_check_interval 1
notification_interval 15
max_check_attempts 2
notification_options u,c,r
}

define service{
use nrpe-swap
host_name wmp-04
}

define service{
use nrpe-disk
host_name wmp-04
}

define service{
use nrpe-ram
host_name wmp-04
}

define service{
use nrpe-cpu
host_name wmp-04
}

So I basically define a template in my services.cfg file for all my NRPE checks, and then adding services to be checked works wonderfully (as long as the port NRPE is listening on stays constant).

This is a pretty basic setup. I’m not using xinetd or arguments or anything like that, but it works for me…

Note that all the plugins I reference in nrpe.cfg have been installed there on the remote host.

Hope it helps.


#7

This information is a treasure waiting to be discovered. It helped me a great deal.

I really appreciate it. Thanks. :frowning:

Have NRPE reporting up and running. b.t.w. I downloaded the lastest NAGIOS 2.4 which contains NRPE 2.3. Since I had installed the Solaris nrpe streams based packages provided on http://nagios.com I ended up with nrpe 1.9. check_nrpe 2.3 (server) would not talk to nrpe 1.9 (client). To make future client installs easier and to get nrpe to actually work I copied check_nrpe from the client to the server and then it worked fine. The server now runs check_nrpe 1.9. Just a heads up.

MYP4


#8

Ah…well, all of my NRPE installs have been from the tarballs at nagiosexchange.org. NRPE compatibility issues, therefore, were not something that crossed my mind.