How to Create Nagios Plugins With Ruby On CentOS 6

Introduction

 

Nagios is an open source monitoring software application that helps organizations to prevent IT infrastructure problems. It can be used with Linux as well as other Unix variants.

In this tutorial, you will learn how to create Nagios plugins with Ruby on CentOS 6.
 

Initial Set Up

 

Before getting into the creation of Nagios plugins, you have to first install RPMForge repository and NRPE on client VPS. NRPE stands for Nagios Remote Plugin Executor.

That can be installed using the following commands:

rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum -y install ruby nagios-nrpe
useradd nrpe && chkconfig nrpe on

 

Creation of Ruby Script

 

Ruby is a common command processor that is available with Linux by default. Here, we will be creating a script which will check disk usage and throw alert if it is over 85%.

The script will look like this:

#!/usr/bin/ruby
used_space=`df -h / | grep -v "Filesystem" | awk '{print $5}'`
 case used_space.chomp <=> "85%"
 when -1
   puts "OK - #{used_space.chomp!} of disk space used."
   exit 0
 when 0
   puts "WARNING - #{used_space.chomp!} of disk space used."
   exit 1
 when 1
   puts "CRITICAL - #{used_space.chomp!} of disk space used."
   exit 2
 else
   puts "UNKNOWN - #{used_space.chomp!} of disk space used."
   exit 3
end

 

This script has to be saved in the same directory as other Nagios plugins, /usr/lib64/nagios/plugins/ checkdiskspace.rb

Make it executable:

chmod +x /usr/lib64/nagios/plugins/checkdiskspace.rb

You can customize the script to apply different logic to trigger alerts and exit codes or return codes.

 

Here is the list of Nagios Return Codes:

Exit Codes / Return Codes Status
0 OK
1 WARNING
2 CRITICAL
3 UNKNOWN

 

Configure NRPE

 

Now that we are done creating the script, we have to add the script to nrpe configuration /etc/nagios/nrpe.cfg on client host. For that, we will first delete the original config file (/etc/nagios/nrpe.cfg) and update it with the following lines of code:

log_facility=daemon
pid_file=/var/run/nrpe/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=198.211.117.251
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nrpe.d/

 command[checkdiskspace_ruby]=/usr/lib64/nagios/plugins/ checkdiskspace.rb

You have to specify the correct values for allowed_hosts, which should be the IP of monitoring server.

Restart the Nagios nrpe service:

service nrpe restart

 

Set Up on Nagios Monitoring Server

 

In this step, we will add a new command to check Nagios on monitoring server. For that, we have to  update the commands file /etc/nagios/objects/commands.cfg.

define command{
        command_name    checkdiskspace_ruby
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c checkdiskspace_ruby
        }

This will use nrpe to make TCP connections to port 5666 and will run the command ‘checkdiskspace_ruby’ which we already defined in /etc/nagios/nrpe.cfg on remote host.

 

Now we will add this check to Nagios configuration file for client VPS. In this tutorial, we will be using ‘CentOS6Droplet’ as server for monitoring and will update /etc/nagios/servers/CentOS6Droplet.cfg with following lines of code:

 

define service {
        use                             generic-service
        host_name                       CentOS6Droplet
        service_description             Custom Disk Checker In Ruby
        check_command                   checkdiskspace_ruby
        }

Once the changes are done, you should restart the Nagios:

service nagios restart

Verify whether the new check is working or not:

nagios-centos-ruby

That’s it!

support2 has written 111 articles

Leave a Reply