Search Exchange

Search All Sites

Nagios Live Webinars

Let our experts show you how Nagios can help your organization.

Contact Us

Phone: 1-888-NAGIOS-1
Email: sales@nagios.com

Login

Remember Me

check_IBM_performance

Rating
13 votes
Favoured:
2
Current Version
1.5.2
Last Release Date
2013-07-15
Compatible With
  • Nagios 3.x
License
GPL
Hits
105763
Files:
FileDescription
check_IBM_performance_v1.5.2check_IBM_performance_v1.5.2
check_IBM_performance_v1.1check_IBM_performance_v1.1
check_IBM_performance_v1.2check_IBM_performance_v1.2
exmple-image.pngexmple-image.png
check_IBM_performance_v1.3check_IBM_performance_v1.3
check_IBM_performance_v1.4check_IBM_performance_v1.4
check_IBM_performance_v1.5check_IBM_performance_v1.5
Network Monitoring Software - Download Nagios XI
Log Management Software - Nagios Log Server - Download
Netflow Analysis Software - Nagios Network Analyzer - Download
Plugin for monitoring IBM Storage performance.
Tested it on DS4100 & DS4700 & DS3512 (You have to have a compatible SMcli version - Storage Manager 10.70.A5 is working for me).
Please use LATEST version.
You must install Storage manager client for the plugin to work. You need SMcli command (ussualy gets in /opt/IBM_DS/client/SMcli)
You also need to give nagios user execute permission on SMcli (chmod 755 /opt/IBM_DS/client/SMcli)

Version 1.2 contains fix mentioned by dmitry.sherman (thank you for your feedback Dmitry)
What comes after pipe (|) represents nagios performance data which you can graph for example with pnp4nagios(see sample image attached).
Version 1.3 contains an enhancement from Martin Moebius that can allow you to specify both ip's directly in the check comand, not in the definition.

Version 1.4 runs SMCli command on storage only if a certain interval has passed from the last check (-f in script). It seems like the storage management interface gets unresponsive if multiple checks are done at the same time.

Version 1.5 has more bug fixes applied:
First of all it will return the real name of the queried component, not the one given as parameter (ex. controller A, I don't know why I did such a stupid thing)
Added the other 2 useful metrics as requested.
Fixed SMCLI to have the SAME command for -t logical and controller.
Case insensitive parameters for -t and -n.

Version 1.5.1 & 1.5.2 by withanHdammit
1. Took label out of output because I use that as my service name (see attached screenshots), I think it cleans up the output.
2. Changed output display to KBps instead of MBps (was getting a lot of 0's and wanted a little more accurate info)
3. Added Read % and Cache Hit % to output
4. Abbreviated output labels for brevity, also took the ' (single quotes) out because it was too busy
5. Made similar abbreviation changes to PerfData

The forum's reply button does not work, so I put here my answer for disturbed:
Hello,

You have to specify both controller ip's for the script to work. In the new version you have separate switches for that. The plugin uses the storage manager command to get the data, so if you have an error on SMcli, you will also have one in your script.(I guess SMCli does nothing and throws the error you mentioned if you specify only one controller ip).
You should check the right SMCli command that works for you.
/opt/IBM_DS/client/SMcli 10.253.6.60 -c "set session performanceMonitorInterval=5 performanceMonitorIterations=1; show allLogicalDrives performanceStats;
Once you have the SMCli returning some results you can modify the plugin to fit your needs.
If the second controller does not have an ip address please define it from the Storage Manager. (The storage manager can connect to the storage using IBOUND connection - that is on fibre, or OUTBOUND where you need the ip's of the controllers). If you are able to connect on OUTBAND management from storage manager there should be no problem from SMCli command
Hope that helps.
-SMcli is not executable by other users so you MUST chmod 755 /opt/IBM_DS/client/SMcli
Can gather performance data for controller:
check_IBM_performance -i ip_controller1 -j ip_controller2 -t controller -n A
Performance for Logical Drive (ex. Linux)
check_IBM_performance -i ip_controller1 -j ip_controller2 -t logical -n Linux
Performance for entire storage
check_IBM_performance -i ip_controller1 -j ip_controller2

use -v if you want to see al your Logical Drives. Also pay attention to the order of the columns in the reported data. In script you can find the order that I used.

Usage: check_IBM_performance -i [-t ] [-n ] [-s ] [-f] [-w] [-c] [-x] [-d] [-s] [-v] [-h];
-i --storage1=
This must be defined
-j --storage2=
-v, --verbose
print extra debugging information
-t, --type=(logical,controller)
performance for logical dirve (-n must be suplied too) if not totals will be displayed
performance for controller
if -t not specified or null totals will be displayed
-n, --name=
the name of the logical drive or the controller ( -n A / -n B )
MUST be specified if -t used to have a correct results or total will be displayed
-f, --freshness= (minutes)
minutes for keeping temporary performance file until refresh data from Storage
defaults to 1 minute (minimum)
-s, --seconds=
sampling interval for the performance statistics (also see defined timeout)
-w, --warningkilo =
-c, --criticalkilo =
-x, --warningio =
-d, --criticalio =
-h, --help This help
Nagios command examples:

define command{
command_name check_IBM_DS4700
command_line /usr/lib64/nagios/plugins/check_IBM_performance -i "a.b.c.d" -j "a.b.c.e" -t $ARG1$ -n $ARG2$ -w $ARG3$ -c $ARG4$ -x $ARG5$ -d $ARG6$
}
Check command in action: (for the above defined command the following will give an WARNING on 500K and a CRITICAL at 10000K sampling on 10 seconds for the entire storage: no -t -n specified)
check_command check_IBM_DS4100!!!500!10000!!!10

New improvement from Martin Moebius (from -i "ip1 ip2" => -i "ip1" -j "ip2")
define command{
command_name check_IBM_DS4700
command_line /usr/lib64/nagios/plugins/check_IBM_performance -i $HOSTADDRESS$ -j $ARG1$ -t $ARG2$ -n $ARG3$ -w $ARG4$ -c $ARG5$ -x $ARG6$ -d $ARG7$
}

Martin: The syntax of the mod is “check_IBM_performance -i a.b.c.d –j a.b.c.e” and it also can be used as “check_IBM_performance -i $HOSTADDRESS$ –j $ARG1$”
So you can put the ip's in the check command not hardcoded in the definition of it

Command takes no arguments returns TOTAL KBPS and IOPS

Known issues:
- If you have 2 controllers and specify only one ip the SMcli command will throw an error so no performance data is returned
- pnp4nagios graps for KB/s makes y scale with k which is confusing, so I * 1024 => at input ( -w or -c ) you will specify values in KB and the output will be in Bytes !!!
- you have to define the host with the ip of one controller (which will be pinged) but the check command must have both controller's ip's hardcoded - if you want to use -c you MUST use also -w or you will get CRITICAL any time
Reviews (7)
I had the same issue:

check_IBM_performance_v1.5.2 -i -j
CRITICAL No corresponding data has been found, please check name of the controller/lun
Debugging data:
/opt/IBM_DS/client/SMcli 128.0.2.94 128.0.2.95 -c "set session performanceMonitorInterval=20 performanceMonitorIterations=1; show allLogicalDrives performanceStats;"
Performing syntax check...

Syntax check complete.

Executing script...

Could not communicate with the controllers of Storage Subsystem DS4700_BuenosAires to complete this request.

Possible causes include network or connection problems, controller problems or no power to the host or storage subsystem. Check these possible causes and then retry the operation. If you suspect a controller problem, use the Recovery Guru to resolve the problem.
The command at line 1 that caused the error is:

show allLogicalDrives performanceStats;

Script execution halted due to error.

SMcli failed.

The problem was in an failing Ethernet cable. After I changed it, the problem was resolved.
Hi,

Thanks a lot for this plugins. It is very helpful to monitor IO for my old DS3400.

I'm not an expert in storage so could you please explain to me the difference between "Total IOs" and "Current IO/Second" ?

Thanks in advance.
Hello I tested the plugin in DS5100 and works great!!!
Works great with my IBM DS3300 storage units. I appreciate the review by dmitry.sherman whose review helped me get SM10 installed on my Debian system.

One item that seems odd is how it pulls the stats from the various arrays built. I have multiple separate arrays on my DS3300 storage units and when I run:
check_IBM_hardware -i -j -t controller -n A
The results (in part) show:
"Storage Subsystems ","Total IOs ","Read Percentage ","Cache Hit Percentage ","Current KB/second ","Maximum KB/second ","Current IO/second ","Maximum IO/second"
"Capture Iteration: 1","","","","","","",""
"Date/Time: 7/11/13 5:12:54 PM","","","","","","",""
"CONTROLLER IN SLOT A","715.0","2.8","90.0","1368.5","1368.5","119.2","119.2"
"Logical Drive Array1","35.0","17.1","100.0","32.3","32.3","5.8","5.8"
"Logical Drive Array4","539.0","0.4","0.0","1196.0","1196.0","89.8","89.8"
"Logical Drive Array6","112.0","5.4","100.0","134.7","134.7","18.7","18.7"
"Logical Drive Array8","29.0","20.7","100.0","5.5","5.5","4.8","4.8"
"CONTROLLER IN SLOT B","203.0","12.8","92.3","226.6","226.6","40.6","40.6"
"Logical Drive Array2","89.0","9.0","75.0","146.8","146.8","17.8","17.8"
"Logical Drive Array3","42.0","14.3","100.0","36.8","36.8","8.4","8.4"
"Logical Drive Array5","22.0","27.3","100.0","5.8","5.8","4.4","4.4"
"Logical Drive Array7","50.0","12.0","100.0","37.2","37.2","10.0","10.0"
"STORAGE SUBSYSTEM TOTALS","918.0","5.0","91.3","1595.1","1595.1","159.8","159.8"

This shows some nice statistics like Read % and Cache Hit % that would be nice to output for performance tracking.

I showed the above because when I follow that command up with checks on each array separately, it shows identical stats for each array. Obviously not correct. I'm not sure if this is because the checks happened too soon after each other, but there's certainly something odd happening:
-------------------------
check_IBM_hardware -i -j -t logical -n Array1
OK Logical Drive Array1 'Current KBps'=32 'Current IOPS'=5| 'Current Bps'=32768 'Current IOPS'=5
OK Logical Drive Array1 'Current KBps'=1196 'Current IOPS'=89| 'Current Bps'=1224704 'Current IOPS'=89
OK Logical Drive Array1 'Current KBps'=134 'Current IOPS'=18| 'Current Bps'=137216 'Current IOPS'=18
OK Logical Drive Array1 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array1 'Current KBps'=146 'Current IOPS'=17| 'Current Bps'=149504 'Current IOPS'=17
OK Logical Drive Array1 'Current KBps'=36 'Current IOPS'=8| 'Current Bps'=36864 'Current IOPS'=8
OK Logical Drive Array1 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array1 'Current KBps'=37 'Current IOPS'=10| 'Current Bps'=37888 'Current IOPS'=10
-------------------------
check_IBM_hardware -i -j -t logical -n Array2
OK Logical Drive Array2 'Current KBps'=32 'Current IOPS'=5| 'Current Bps'=32768 'Current IOPS'=5
OK Logical Drive Array2 'Current KBps'=1196 'Current IOPS'=89| 'Current Bps'=1224704 'Current IOPS'=89
OK Logical Drive Array2 'Current KBps'=134 'Current IOPS'=18| 'Current Bps'=137216 'Current IOPS'=18
OK Logical Drive Array2 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array2 'Current KBps'=146 'Current IOPS'=17| 'Current Bps'=149504 'Current IOPS'=17
OK Logical Drive Array2 'Current KBps'=36 'Current IOPS'=8| 'Current Bps'=36864 'Current IOPS'=8
OK Logical Drive Array2 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array2 'Current KBps'=37 'Current IOPS'=10| 'Current Bps'=37888 'Current IOPS'=10
-------------------------
check_IBM_hardware -i -j -t logical -n Array3
OK Logical Drive Array3 'Current KBps'=32 'Current IOPS'=5| 'Current Bps'=32768 'Current IOPS'=5
OK Logical Drive Array3 'Current KBps'=1196 'Current IOPS'=89| 'Current Bps'=1224704 'Current IOPS'=89
OK Logical Drive Array3 'Current KBps'=134 'Current IOPS'=18| 'Current Bps'=137216 'Current IOPS'=18
OK Logical Drive Array3 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array3 'Current KBps'=146 'Current IOPS'=17| 'Current Bps'=149504 'Current IOPS'=17
OK Logical Drive Array3 'Current KBps'=36 'Current IOPS'=8| 'Current Bps'=36864 'Current IOPS'=8
OK Logical Drive Array3 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array3 'Current KBps'=37 'Current IOPS'=10| 'Current Bps'=37888 'Current IOPS'=10
-------------------------
check_IBM_hardware -i -j -t logical -n Array4
OK Logical Drive Array4 'Current KBps'=32 'Current IOPS'=5| 'Current Bps'=32768 'Current IOPS'=5
OK Logical Drive Array4 'Current KBps'=1196 'Current IOPS'=89| 'Current Bps'=1224704 'Current IOPS'=89
OK Logical Drive Array4 'Current KBps'=134 'Current IOPS'=18| 'Current Bps'=137216 'Current IOPS'=18
OK Logical Drive Array4 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array4 'Current KBps'=146 'Current IOPS'=17| 'Current Bps'=149504 'Current IOPS'=17
OK Logical Drive Array4 'Current KBps'=36 'Current IOPS'=8| 'Current Bps'=36864 'Current IOPS'=8
OK Logical Drive Array4 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array4 'Current KBps'=37 'Current IOPS'=10| 'Current Bps'=37888 'Current IOPS'=10
-------------------------
check_IBM_hardware -i -j -t logical -n Array5
OK Logical Drive Array5 'Current KBps'=32 'Current IOPS'=5| 'Current Bps'=32768 'Current IOPS'=5
OK Logical Drive Array5 'Current KBps'=1196 'Current IOPS'=89| 'Current Bps'=1224704 'Current IOPS'=89
OK Logical Drive Array5 'Current KBps'=134 'Current IOPS'=18| 'Current Bps'=137216 'Current IOPS'=18
OK Logical Drive Array5 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array5 'Current KBps'=146 'Current IOPS'=17| 'Current Bps'=149504 'Current IOPS'=17
OK Logical Drive Array5 'Current KBps'=36 'Current IOPS'=8| 'Current Bps'=36864 'Current IOPS'=8
OK Logical Drive Array5 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array5 'Current KBps'=37 'Current IOPS'=10| 'Current Bps'=37888 'Current IOPS'=10
-------------------------
check_IBM_hardware -i -j -t logical -n Array6
OK Logical Drive Array6 'Current KBps'=32 'Current IOPS'=5| 'Current Bps'=32768 'Current IOPS'=5
OK Logical Drive Array6 'Current KBps'=1196 'Current IOPS'=89| 'Current Bps'=1224704 'Current IOPS'=89
OK Logical Drive Array6 'Current KBps'=134 'Current IOPS'=18| 'Current Bps'=137216 'Current IOPS'=18
OK Logical Drive Array6 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array6 'Current KBps'=146 'Current IOPS'=17| 'Current Bps'=149504 'Current IOPS'=17
OK Logical Drive Array6 'Current KBps'=36 'Current IOPS'=8| 'Current Bps'=36864 'Current IOPS'=8
OK Logical Drive Array6 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array6 'Current KBps'=37 'Current IOPS'=10| 'Current Bps'=37888 'Current IOPS'=10
-------------------------
check_IBM_hardware -i -j -t logical -n Array7
OK Logical Drive Array7 'Current KBps'=32 'Current IOPS'=5| 'Current Bps'=32768 'Current IOPS'=5
OK Logical Drive Array7 'Current KBps'=1196 'Current IOPS'=89| 'Current Bps'=1224704 'Current IOPS'=89
OK Logical Drive Array7 'Current KBps'=134 'Current IOPS'=18| 'Current Bps'=137216 'Current IOPS'=18
OK Logical Drive Array7 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array7 'Current KBps'=146 'Current IOPS'=17| 'Current Bps'=149504 'Current IOPS'=17
OK Logical Drive Array7 'Current KBps'=36 'Current IOPS'=8| 'Current Bps'=36864 'Current IOPS'=8
OK Logical Drive Array7 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array7 'Current KBps'=37 'Current IOPS'=10| 'Current Bps'=37888 'Current IOPS'=10
-------------------------
check_IBM_hardware -i -j -t logical -n Array8
OK Logical Drive Array8 'Current KBps'=32 'Current IOPS'=5| 'Current Bps'=32768 'Current IOPS'=5
OK Logical Drive Array8 'Current KBps'=1196 'Current IOPS'=89| 'Current Bps'=1224704 'Current IOPS'=89
OK Logical Drive Array8 'Current KBps'=134 'Current IOPS'=18| 'Current Bps'=137216 'Current IOPS'=18
OK Logical Drive Array8 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array8 'Current KBps'=146 'Current IOPS'=17| 'Current Bps'=149504 'Current IOPS'=17
OK Logical Drive Array8 'Current KBps'=36 'Current IOPS'=8| 'Current Bps'=36864 'Current IOPS'=8
OK Logical Drive Array8 'Current KBps'=5 'Current IOPS'=4| 'Current Bps'=5120 'Current IOPS'=4
OK Logical Drive Array8 'Current KBps'=37 'Current IOPS'=10| 'Current Bps'=37888 'Current IOPS'=10
-------------------------
bymoep, October 5, 2011
I use it for DS4800 arrays and haven't observed any issues yet. Definitely recommended!
bydisturbed, March 31, 2011
2 of 3 people found this review helpful
Hi,

I've been able to get this script working in nagios and pnp4nagios , but only for the IBM DS 4300 , the DS4100 and DS4700 throw in an error ;


monitoring plugins # host=10.253.6.60 (this is an DS4700)
monitoring plugins # ./check_IBM_performance -i $host -s 5 -w 80000 -c 10000 -x 10000 -d 15000
Switch will be removed from the Perl core distribution in the next major release. Please install it from CPAN. It is being used at ./check_IBM_performance, line 5.
Use of uninitialized value $opt_type in string eq at ./check_IBM_performance line 99.
CRITICAL No corresponding data has been found, please check name of the controller/lun
Debugging data:
/opt/IBM_DS/client/SMcli 10.253.6.60 -c "set session performanceMonitorInterval=5 performanceMonitorIterations=1; show allLogicalDrives performanceStats;"
Performing syntax check...

Syntax check complete.

Executing script...

Could not communicate with the controllers of Storage Subsystem DS4700-NG3-VM-LN-FILE to complete this request.

Possible causes include network or connection problems, controller problems or no power to the host or storage subsystem. Check these possible causes and then retry the operation. If you suspect a controller problem, use the Recovery Guru to resolve the problem.
The command at line 1 that caused the error is:

show allLogicalDrives performanceStats;

Script execution halted due to error.

SMcli failed.


When I try to feed the command directly to the SMcli, the error is the same , it seems as if the command just isn't any good.
Also I've been going through some IBM documentation , and they recommend the same command for performance checkups.
I've checked it with the both IP's of the controllers.

Any suggestions are welcome!

Thx
bydmitry.sherman, October 22, 2010
2 of 2 people found this review helpful
first of all you gotta download the linux storage manager client. I grabbed it from my DS storage DVD i got with my DS3300.
If you're running ubuntu/debian you will need those packages:
apt-get install rpm sun-java6-jre

after you get the disk content, launch the bin file:
./SMIA-LINUX-10.60.A5.14.bin it will extract the needed files to /opt/IBM_DS/
afterwards use the rpm extract command from /opt/IBM_DS:
rpm2cpio SMclient.rpm | cpio -vid
next, move the client folder from /opt/IBM_DS/opt/IBM_DS/client to just /opt/IBM_DS/client
otherwise you can just extract the rpm from root (/) and it will put the files where they should be.
anyway after you finish, edit: client/SMcli like this:
#JAVA_EXEC=$BASEDIR/jre/bin/java
JAVA_EXEC=/usr/bin/java
and save it.
Now you ready, the rest are as described in the readme or here in this page.

I have one question, the plugin displays in nagios status information only this: "OK STORAGE SUBSYSTEM TOTALS"
but when i launch the check manually from the shell i also see the values followed by the pipe:
OK STORAGE SUBSYSTEM TOTALS | 'Current B/second'=10252288 'Current IO/second'=139;150;500

it would be great also to bring those values to the nagios web console so you know where you stay and learn better your system.
thanks.
Owner's reply

Yes, you are right. I saw that few days after uploading the plugin, and modified it on my nagios server but failed to upload the new version because I forgot my user and / or password for this forum :D.