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.
you will learn to create Nagios plugins using PHP on CentOS 6.
Initial Set Up
You have to first install RPMForge repository and NRPE(Nagios Remote Plugin Executor) on client VPS.
The commands are given below:
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm yum -y install php nagios-nrpe useradd nrpe && chkconfig nrpe on
Creation of PHP Script
PHP programming language allows us to create scripts and install additional libraries. 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/php <? php$used_space=chop(shell_exec("df -h / | grep -v Filesystem | awk '{print $5}'")); switch ($used_space) { case "$used_space" < "85%": print "OK - $used_space of disk space used."; exit(0); case "$used_space" == "85%": print "WARNING - $used_space of disk space used."; exit(1); case $used_space > "85%": print "CRITICAL - $used_space of disk space used."; exit(2); default: print "UNKNOWN - $used_space of disk space used."; exit(3); } ?>
This script has to be saved in the same directory as other Nagios plugins, /usr/lib64/nagios/plugins/ checkdiskspace.php
To make it executable:
chmod +x /usr/lib64/nagios/plugins/checkdiskspace.php
You can customize the script to apply different logic to trigger alerts and exit codes or return codes.
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=x.x.x.x dont_blame_nrpe=1 debug=0 command_timeout=60 connection_timeout=300 include_dir=/etc/nrpe.d/ command[usedspace_php]=/usr/lib64/nagios/plugins/ checkdiskspace.php
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
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_php command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c checkdiskspace_php }
This will use nrpe to make TCP connections to port 5666 and will run the command ‘checkdiskspace_php’ 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 CentOSDroplet service_description Custom Disk Checker In PHP check_command checkdiskspace_php }
Once the changes are done, you should restart the Nagios:
service nagios restart
You can verify whether the new check is working or not: