#!/usr/bin/perl

#
#  Author: Matt Judge
#    Date: 20/01/09
#    Desc: Nagios plugin to check shared memory segment usage
#

use strict;
use Storable;
use Getopt::Long;

# Nagios stuff
use lib "/usr/lib/nagios/plugins";
use utils qw (%ERRORS &print_revision &support);

open INP, "/usr/bin/ipcs -m|awk '/^0x/ { total += \$5; count++ } END {printf(\"%i segments %.2fMB\",count,(total/(1024*1024)))}'|";
my $status = (<INP>);
close INP;

#
# Predefine our Nagios variables
#
my $result = "UNKNOWN";
my $mesg   = "Unable to determine SHM status";

if ( $status =~ /(\d+) segments (\d+\.\d+)MB/ )
{
  $mesg = $status;
  if ( $1 > 200 )
  {
    $result = "CRITICAL";
  }
  elsif ( $1 > 130 )
  {
    $result = "WARNING";
  }
  else
  {
    $result = "OK";
  }
}

print "LOADER $result: $mesg\n";
exit $ERRORS{$result};


