#!/usr/bin/perl # # check_ibm_svc Nagios check # # Requires IBM's SVC.pm # http://www.alphaworks.ibm.com/tech/svctools # # Requires you configure an ssh key for logins to your SVC. # # use strict; use IBM::SVC; use Getopt::Long; my ($cluster, $mdiskgrp, $warn, $critical, $user, $ssh); my $capacity=0; my $free_capacity=0; my $real_capacity=0; my $virtual_capacity=0; my $used_capacity=0; my $mdiskgrp_name=0; my $status=0; my $threshold=0; #default login for svc and linux $user = "admin"; $ssh = "ssh"; GetOptions ( "cluster=s" => \$cluster, "mdiskgrp=s" => \$mdiskgrp, "w=i" => \$warn, "c=i" => \$critical ); my $params = {}; $params->{'cluster_name'} = $cluster if $cluster; $params->{'user'} = $user if $user; $params->{'ssh_method'} = $ssh if $ssh; # Create the connection with the parameters set above. my $svc = IBM::SVC->new($params); #read the mdiskgroup capacities my ($rc,$mdisks_ref) = $svc->svcinfo("lsmdiskgrp",{'filtervalue' => "name=$mdiskgrp","bytes"}); if ($rc == 0) { my @mdisks = @$mdisks_ref; foreach my $mdisk (@mdisks) { $mdiskgrp_name = "$mdisk->{'name'}"; $capacity = sprintf("%.2f",($mdisk->{'capacity'}/ (1024*1024*1024))); $free_capacity = sprintf("%.2f",($mdisk->{'free_capacity'}/ (1024*1024*1024))); $real_capacity = sprintf("%.2f",($mdisk->{'real_capacity'}/ (1024*1024*1024))); $virtual_capacity = sprintf("%.2f",($mdisk->{'virtual_capacity'}/ (1024*1024*1024))); $used_capacity = sprintf("%.2f",($mdisk->{'used_capacity'}/ (1024*1024*1024))); } } else { print "Cannot connect to cluster $cluster \n"; exit(3); } if ($capacity == 0){ print "No such MDiskGroup $mdiskgrp \n"; exit(3); } $threshold = sprintf("%.2f",(($real_capacity/$capacity)*100)); if ($threshold >= $critical) { $status="Critical"; } elsif ($threshold >= $warn) { $status="Warning"; } elsif ($threshold < $warn) { $status="OK"; } print "MDiskGrp $status - $mdiskgrp_name 'Usage %' = $threshold; OK - $mdiskgrp_name 'Capacity' = $capacity; OK - $mdiskgrp_name 'free Capacity' $free_capacity; OK - $mdiskgrp_name 'used Capacity' $used_capacity; OK - $mdiskgrp_name 'real Capacity' $real_capacity; OK - $mdiskgrp_name 'virtual Capacity' $virtual_capacity\|'Usage'=$threshold;$warn;$critical;;; 'Capacity'=$capacity;;;;; 'freeCapacity'=$free_capacity;;;;; 'usedCapacity'=$used_capacity;;;;; 'realCapacity=$real_capacity;;;;; 'virtualCapacity'=$virtual_capacity;;;;; \n"; if ($status eq "Critical") { exit(2); } elsif ($status eq "Warning") { exit(1); } elsif ($status eq "OK") { exit(0); } exit (3);