Search Exchange
Search All Sites
Nagios Live Webinars
Let our experts show you how Nagios can help your organization.Login
Directory Tree
3PAR check script
0.3
2011-04-20
- Nagios 3.x
132427
File | Description |
---|---|
check_3par | 3par_check script |
3PAR Nagios check script.pdf | Installation guide |
Meet The New Nagios Core Services Platform
Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.
Monitoring Made Magically Better
- Nagios Core on Overdrive
- Powerful Monitoring Dashboards
- Time-Saving Configuration Wizards
- Open Source Powered Monitoring On Steroids
- And So Much More!
Require 3PAR Inform OS v2.3.1
Connection to the 3PAR system is supported using SSH or the 3PAR CLI binaries.
Default is SSH (no installation of the CLI binaries is required)
Current version supports monitoring :
- Physical disks
- Controller nodes status
- Power supplies
- Virtual volumes status
- Logical disks status
- FC ports
- FC disks capacity usage %
- NL disks capacity usage %
Please read installation guide
Connection to the 3PAR system is supported using SSH or the 3PAR CLI binaries.
Default is SSH (no installation of the CLI binaries is required)
Current version supports monitoring :
- Physical disks
- Controller nodes status
- Power supplies
- Virtual volumes status
- Logical disks status
- FC ports
- FC disks capacity usage %
- NL disks capacity usage %
Please read installation guide
Reviews (13)
byRick, April 7, 2020
This is a good check but fair warning- the power supply check does not return a critical code if it detects an issue
there are updated versions elsewhere on the web
there are updated versions elsewhere on the web
bypgh2011, April 3, 2018
Hi,
On https://github.com/pgh2011/check_3par there is new version of the script with a fix.
Fixed issue when there are more then 150 physical disks.
Is works on the commandline but not in the Nagios check.
Output when the check via Nagios is started:
line 481: 100 - ( ( * 100 ) / ) : syntax error: operand expected (error token is "* 100 ) / ) ")
check_3par ERROR: ERROR Wrong command 'check_cap_ssd' .
On https://github.com/pgh2011/check_3par there is new version of the script with a fix.
Fixed issue when there are more then 150 physical disks.
Is works on the commandline but not in the Nagios check.
Output when the check via Nagios is started:
line 481: 100 - ( ( * 100 ) / ) : syntax error: operand expected (error token is "* 100 ) / ) ")
check_3par ERROR: ERROR Wrong command 'check_cap_ssd' .
Hello everybody,
on GIT https://github.com/qaxi/nagios-check_3par
there is version 5 of the script.
there is Quorum Witenes checking for Peer Persitence
on GIT https://github.com/qaxi/nagios-check_3par
there is version 5 of the script.
there is Quorum Witenes checking for Peer Persitence
byBadia, December 21, 2016
Same problem here, 3PAR is stillasking for a password after following succesfully SSH key process
byyvacc, December 19, 2016
I have completed this well working script with other scripts and some test usefull for us:
Check volume : https://exchange.nagios.org/directory/Plugins/Operating-Systems/%2A-Virtual-Environments/VMWare/Check_3par_volume/details
check power supply node and check power supply cage
and check SSD found upper
#!/bin/bash -x
# 3PAR Nagios check script v0.3
# Last update 2010/05/14 fredl@3par.com
# Last update 2011/03/03 ddu@antemeta.fr
# Last update 2016/12/16 yves.vaccarezza@corsedusud.fr
#
# This script is provided "as is" without warranty of any kind and 3PAR specifically disclaims all implied warranties of merchantability,
# non-infringement and fitness for a particular purpose. In no event shall 3PAR have any liability arising out of or related to
# customer's 'use of the script including lost data, lost profits, or any direct or indirect, incidental, special, or
# consequential damages arising there from.
# In addition, 3PAR reserves the right not to perform fixes or updates to this script
#
#
# Usage : check_3par InServ Username Command
#
# Supported commands
# check_pd : Check status of physical disks
# Degraded -> Warning
# Failed -> Critical
#
# check_node : Check status of controller nodes
# Degraded -> Warning
# Failed -> Critical
#
# check_ld : Check status of logical disks
# Degraded -> Warning
# Failed -> Critical
#
# check_vv : Check status of virtual volumes
# Degraded -> Warning
# Failed -> Critical
#
# check_port_fc : Check status of virtual volumes
# loss_sync -> Warning
# config_wait -> Warning
# login_wait -> Warning
# non_participate -> Warning
# error -> Critical
#
# check_cap_fc : Check used FC capacity
# >= $PCWARNINGFC -> Warning
# >= $PCCRITICALFC -> Critical
#
# check_cap_nl : Check used NL capacity
# >= $PCWARNINGNL -> Warning
# >= $PCCRITICALNL -> Critical
#
# check_cap_ssd : Check used SSD capacity
# >= $PCWARNINGSSD -> Warning
# >= $PCCRITICALSSD -> Critical
#
# check_ps : Check Power Supply Node
# Degraded -> Warning
# Failed -> Critical
#
# check_ps_cage : Check Power Supply Cage
# Degraded -> Warning
# Failed -> Critical
#
## check_volume : Check cpacity volume
# >= WARNING -> Warning
# >= CRITICAL -> Critical
#
#
if [ "$1" == "" ] || [ $2 == "" ] || [ $3 == "" ]
then
echo Invalid usage : check_3par InServ Username/passwordfile Command
exit 3
fi
INSERV=$1
USERNAME=$2
COMMAND=$3
VMFS=$4
TMPDIR=/tmp
PCCRITICALFC=90
PCWARNINGFC=80
PCCRITICALNL=95
PCWARNINGNL=90
PCWARNINGSSD=90
PCCRITICALSSD=95
CRITICAL=90
WARNING=80
# To connect using the 3PAR CLI, uncomment the following line
#CONNECTCOMMAND="/opt/3PAR/inform_cli_2.3.1/bin/cli -sys $INSERV -pwf $USERNAME"
# Note : connecting using the CLI requires creating password files (.pwf)
# To connect using SSH. uncomment the following line
CONNECTCOMMAND="ssh $USERNAME@$INSERV"
# Note : connecting using SSH requires setting public key authentication
#echo $INSERV $USERNAME $COMMAND >> $TMPDIR/3par_check_log.out
if [ $COMMAND == "check_pd" ]
then
$CONNECTCOMMAND showpd -showcols Id,State -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out 2>>$TMPDIR/log.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `grep -c failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! The following PDs have abnormal status : `grep -v normal $TMPDIR/3par_$COMMAND.$INSERV.out | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! The following PDs have abnormal status : `grep -v normal $TMPDIR/3par_$COMMAND.$INSERV.out | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All PDs have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_node" ]
then
$CONNECTCOMMAND shownode -s -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `grep -c -i failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! The following nodes have abnormal status : `grep -i failed $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! The following nodes have abnormal status : `grep -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All nodes have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_ps" ]
then
$CONNECTCOMMAND shownode -ps -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
RC=3
fi
if [ `grep -c -i failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! The following Node Power Supply have abnormal status : `grep -i failed $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=2
else
if [ `grep -c -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! The following Node Power Supply have abnormal status : `grep -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=1
else
echo OK : All Power Supply have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=0
fi
fi
fi
if [ $COMMAND == "check_ps_cage" ]
then
$CONNECTCOMMAND showcage -d > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
RC=3
fi
if [ `awk '{ if ($0 ~ "------Cage") cage=$5; if ($0 ~ "Failed") print cage" "$0}' $TMPDIR/3par_$COMMAND.$INSERV.out|wc -l` -gt 0 ]
then
echo CRITICAL! The following cages have abnormal status : `awk '{ if ($0 ~ "------Cage") cage=$5; if ($0 ~ "Failed") print cage" "$0}' $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=2
else
if [ `awk '{ if ($0 ~ "------Cage") cage=$5; if ($0 ~ "Degraded") print cage" "$0}' $TMPDIR/3par_$COMMAND.$INSERV.out|wc -l` -gt 0 ]
then
echo WARNING! The following cages have abnormal status : `awk '{ if ($0 ~ "------Cage") cage=$5; if ($0 ~ "Degraded") print cage" "$0}' $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=1
else
echo OK : All cages have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=0
fi
fi
fi
if [ $COMMAND == "check_vv" ]
then
$CONNECTCOMMAND showvv -showcols Name,State -notree -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `grep -c -i failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! There are failed VVs. Contact 3PAR support
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! There are degraded VVs. Contact 3PAR support
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All VVs are normal
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_ld" ]
then
$CONNECTCOMMAND showld -state -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `grep -c -i failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! There are failed LDs. Contact 3PAR support
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! There are degraded LDs. Contact 3PAR support
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All LDs have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_port_fc" ]
then
$CONNECTCOMMAND showport -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out1
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
grep -v -i iscsi $TMPDIR/3par_$COMMAND.$INSERV.out1 | grep -v -i rcip > $TMPDIR/3par_$COMMAND.$INSERV.out
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out1
if [ `grep -c -i error $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! Some ports are in the error state
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c -i loss_sync $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ] || [ `grep -c -i config_wait $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ] || [ `grep -c -i login_wait $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ] || [ `grep -c -i non_participate $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! Some ports are in an abnormal state \(loss_sync, config_wait, login_wait or non_participate\)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All FC ports have normal status \(ready or offline\)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_cap_fc" ]
then
$CONNECTCOMMAND showpd -p -devtype FC -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No FC disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPFC=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPFC=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCFC=`expr 100 \- \( \( $FREECAPFC \* 100 \) \/ $TOTCAPFC \)`
if [ $USEDCAPPCFC -ge $PCCRITICALFC ]
then
echo CRITICAL! Used FC capacity = $USEDCAPPCFC\% \( \> $PCCRITICALFC\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCFC -ge $PCWARNINGFC ]
then
echo WARNING! Used FC capacity = $USEDCAPPCFC\% \( \> $PCWARNINGFC\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used FC capacity = $USEDCAPPCFC\%
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_cap_nl" ]
then
$CONNECTCOMMAND showpd -p -devtype NL -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No NL disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPNL=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPNL=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCNL=`expr 100 \- \( \( $FREECAPNL \* 100 \) \/ $TOTCAPNL \)`
if [ $USEDCAPPCNL -ge $PCCRITICALNL ]
then
echo CRITICAL! Used NL capacity = $USEDCAPPCNL\% \( \> $PCCRITICALNL\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCNL -ge $PCWARNINGNL ]
then
echo WARNING! Used NL capacity = $USEDCAPPCNL\% \( \> $PCWARNINGNL\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used NL capacity = $USEDCAPPCNL\%
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
##Implementation for SSD Disks
if [ $COMMAND == "check_cap_ssd" ]
then
$CONNECTCOMMAND showpd -p -devtype SSD -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No SSD disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPSSD=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPSSD=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCSSD=`expr 100 \- \( \( $FREECAPSSD \* 100 \) \/ $TOTCAPSSD \)`
if [ $USEDCAPPCSSD -ge $PCCRITICALSSD ]
then
echo CRITICAL! Used SSD capacity = $USEDCAPPCSSD\% \( \> $PCCRITICALSSD\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCSSD -ge $PCWARNINGSSD ]
then
echo WARNING! Used SSD capacity = $USEDCAPPCSSD\% \( \> $PCWARNINGSSD\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used SSD capacity = $USEDCAPPCSSD\%
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_3par_volume" ]
then
$CONNECTCOMMAND showvv -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to 3PAR $INSERV
exit 3
fi
VSIZE=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | grep ${VMFS} | cut -d, -f12`
VSIZE_Gb=`expr \( $VSIZE \/ 1024 \)`
USED=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | grep ${VMFS} | cut -d, -f11`
USED_Gb=`expr \( $USED \/ 1024 \)`
FREE=`expr \( $VSIZE \- $USED \)`
FREE_Gb=`expr \( $FREE \/ 1024 \)`
FREEPERCENT=`expr 100 \- \( \( $USED \* 100 \) \/ $VSIZE \)`
USEDPERCENT=`expr 100 \- \( $FREEPERCENT \)`
WARNCRAW=$(($VSIZE*$WARNING/100))
WARNCRAW_Gb=`expr \( $WARNCRAW \/ 1024 \)`
CRITCCRAW=$(($VSIZE*$CRITICAL/100))
CRITCCRAW_Gb=`expr \( $CRITCCRAW \/ 1024 \)`
if [ $USED_Gb -ge $CRITCCRAW_Gb ]
then
echo CRITICAL! TOTAL: $VSIZE\Mb\ USED: $USED\Mb\ \($USED-PERCENT%\) FREE: $FREE\Mb\ \($FREE-PERCENT\) TotSize=$VSIZE_Gb\Gb\ Used=$USED_Gb\Gb\,\Seuil Warn Used :\ $WARNCRAW_Gb \Gb\,\Seuil Used Crit :\ $CRITCCRAW_Gb\Gb
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USED_Gb -ge $WARNCRAW_Gb ]
then
echo WARNING! TOTAL: $VSIZE\Mb\ USED: $USED\Mb\ \($USED-PERCENT%\) FREE: $FREE\Mb\ \($FREE-PERCENT\) TotSize=$VSIZE_Gb\Gb\ Used=$USED_Gb\Gb\,\Seuil Warn Used :\ $WARNCRAW_Gb\Gb\,\Seuil Crit Used :\ $CRITCCRAW_Gb\Gb
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : TOTAL: $VSIZE\Mb\ USED: $USED\Mb\ \($USEDPERCENT%\) FREE: $FREE\Mb\ \($FREEPERCENT%\) TotSize=$VSIZE_Gb\Gb\ Used=$USED_Gb\Gb\,\Seuil Warn Used :\ $WARNCRAW_Gb\Gb\,\Seuil Crit Used :\ $CRITCCRAW_Gb\Gb
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
Check volume : https://exchange.nagios.org/directory/Plugins/Operating-Systems/%2A-Virtual-Environments/VMWare/Check_3par_volume/details
check power supply node and check power supply cage
and check SSD found upper
#!/bin/bash -x
# 3PAR Nagios check script v0.3
# Last update 2010/05/14 fredl@3par.com
# Last update 2011/03/03 ddu@antemeta.fr
# Last update 2016/12/16 yves.vaccarezza@corsedusud.fr
#
# This script is provided "as is" without warranty of any kind and 3PAR specifically disclaims all implied warranties of merchantability,
# non-infringement and fitness for a particular purpose. In no event shall 3PAR have any liability arising out of or related to
# customer's 'use of the script including lost data, lost profits, or any direct or indirect, incidental, special, or
# consequential damages arising there from.
# In addition, 3PAR reserves the right not to perform fixes or updates to this script
#
#
# Usage : check_3par InServ Username Command
#
# Supported commands
# check_pd : Check status of physical disks
# Degraded -> Warning
# Failed -> Critical
#
# check_node : Check status of controller nodes
# Degraded -> Warning
# Failed -> Critical
#
# check_ld : Check status of logical disks
# Degraded -> Warning
# Failed -> Critical
#
# check_vv : Check status of virtual volumes
# Degraded -> Warning
# Failed -> Critical
#
# check_port_fc : Check status of virtual volumes
# loss_sync -> Warning
# config_wait -> Warning
# login_wait -> Warning
# non_participate -> Warning
# error -> Critical
#
# check_cap_fc : Check used FC capacity
# >= $PCWARNINGFC -> Warning
# >= $PCCRITICALFC -> Critical
#
# check_cap_nl : Check used NL capacity
# >= $PCWARNINGNL -> Warning
# >= $PCCRITICALNL -> Critical
#
# check_cap_ssd : Check used SSD capacity
# >= $PCWARNINGSSD -> Warning
# >= $PCCRITICALSSD -> Critical
#
# check_ps : Check Power Supply Node
# Degraded -> Warning
# Failed -> Critical
#
# check_ps_cage : Check Power Supply Cage
# Degraded -> Warning
# Failed -> Critical
#
## check_volume : Check cpacity volume
# >= WARNING -> Warning
# >= CRITICAL -> Critical
#
#
if [ "$1" == "" ] || [ $2 == "" ] || [ $3 == "" ]
then
echo Invalid usage : check_3par InServ Username/passwordfile Command
exit 3
fi
INSERV=$1
USERNAME=$2
COMMAND=$3
VMFS=$4
TMPDIR=/tmp
PCCRITICALFC=90
PCWARNINGFC=80
PCCRITICALNL=95
PCWARNINGNL=90
PCWARNINGSSD=90
PCCRITICALSSD=95
CRITICAL=90
WARNING=80
# To connect using the 3PAR CLI, uncomment the following line
#CONNECTCOMMAND="/opt/3PAR/inform_cli_2.3.1/bin/cli -sys $INSERV -pwf $USERNAME"
# Note : connecting using the CLI requires creating password files (.pwf)
# To connect using SSH. uncomment the following line
CONNECTCOMMAND="ssh $USERNAME@$INSERV"
# Note : connecting using SSH requires setting public key authentication
#echo $INSERV $USERNAME $COMMAND >> $TMPDIR/3par_check_log.out
if [ $COMMAND == "check_pd" ]
then
$CONNECTCOMMAND showpd -showcols Id,State -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out 2>>$TMPDIR/log.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `grep -c failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! The following PDs have abnormal status : `grep -v normal $TMPDIR/3par_$COMMAND.$INSERV.out | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! The following PDs have abnormal status : `grep -v normal $TMPDIR/3par_$COMMAND.$INSERV.out | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All PDs have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_node" ]
then
$CONNECTCOMMAND shownode -s -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `grep -c -i failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! The following nodes have abnormal status : `grep -i failed $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! The following nodes have abnormal status : `grep -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All nodes have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_ps" ]
then
$CONNECTCOMMAND shownode -ps -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
RC=3
fi
if [ `grep -c -i failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! The following Node Power Supply have abnormal status : `grep -i failed $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=2
else
if [ `grep -c -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! The following Node Power Supply have abnormal status : `grep -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=1
else
echo OK : All Power Supply have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=0
fi
fi
fi
if [ $COMMAND == "check_ps_cage" ]
then
$CONNECTCOMMAND showcage -d > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
RC=3
fi
if [ `awk '{ if ($0 ~ "------Cage") cage=$5; if ($0 ~ "Failed") print cage" "$0}' $TMPDIR/3par_$COMMAND.$INSERV.out|wc -l` -gt 0 ]
then
echo CRITICAL! The following cages have abnormal status : `awk '{ if ($0 ~ "------Cage") cage=$5; if ($0 ~ "Failed") print cage" "$0}' $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=2
else
if [ `awk '{ if ($0 ~ "------Cage") cage=$5; if ($0 ~ "Degraded") print cage" "$0}' $TMPDIR/3par_$COMMAND.$INSERV.out|wc -l` -gt 0 ]
then
echo WARNING! The following cages have abnormal status : `awk '{ if ($0 ~ "------Cage") cage=$5; if ($0 ~ "Degraded") print cage" "$0}' $TMPDIR/3par_$COMMAND.$INSERV.out | tr -s " " | tr -d '\n'`
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=1
else
echo OK : All cages have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
RC=0
fi
fi
fi
if [ $COMMAND == "check_vv" ]
then
$CONNECTCOMMAND showvv -showcols Name,State -notree -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `grep -c -i failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! There are failed VVs. Contact 3PAR support
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! There are degraded VVs. Contact 3PAR support
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All VVs are normal
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_ld" ]
then
$CONNECTCOMMAND showld -state -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `grep -c -i failed $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! There are failed LDs. Contact 3PAR support
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c -i degraded $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! There are degraded LDs. Contact 3PAR support
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All LDs have normal status
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_port_fc" ]
then
$CONNECTCOMMAND showport -nohdtot > $TMPDIR/3par_$COMMAND.$INSERV.out1
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
grep -v -i iscsi $TMPDIR/3par_$COMMAND.$INSERV.out1 | grep -v -i rcip > $TMPDIR/3par_$COMMAND.$INSERV.out
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out1
if [ `grep -c -i error $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo CRITICAL! Some ports are in the error state
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ `grep -c -i loss_sync $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ] || [ `grep -c -i config_wait $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ] || [ `grep -c -i login_wait $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ] || [ `grep -c -i non_participate $TMPDIR/3par_$COMMAND.$INSERV.out` -gt 0 ]
then
echo WARNING! Some ports are in an abnormal state \(loss_sync, config_wait, login_wait or non_participate\)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : All FC ports have normal status \(ready or offline\)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_cap_fc" ]
then
$CONNECTCOMMAND showpd -p -devtype FC -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No FC disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPFC=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPFC=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCFC=`expr 100 \- \( \( $FREECAPFC \* 100 \) \/ $TOTCAPFC \)`
if [ $USEDCAPPCFC -ge $PCCRITICALFC ]
then
echo CRITICAL! Used FC capacity = $USEDCAPPCFC\% \( \> $PCCRITICALFC\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCFC -ge $PCWARNINGFC ]
then
echo WARNING! Used FC capacity = $USEDCAPPCFC\% \( \> $PCWARNINGFC\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used FC capacity = $USEDCAPPCFC\%
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_cap_nl" ]
then
$CONNECTCOMMAND showpd -p -devtype NL -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No NL disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPNL=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPNL=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCNL=`expr 100 \- \( \( $FREECAPNL \* 100 \) \/ $TOTCAPNL \)`
if [ $USEDCAPPCNL -ge $PCCRITICALNL ]
then
echo CRITICAL! Used NL capacity = $USEDCAPPCNL\% \( \> $PCCRITICALNL\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCNL -ge $PCWARNINGNL ]
then
echo WARNING! Used NL capacity = $USEDCAPPCNL\% \( \> $PCWARNINGNL\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used NL capacity = $USEDCAPPCNL\%
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
##Implementation for SSD Disks
if [ $COMMAND == "check_cap_ssd" ]
then
$CONNECTCOMMAND showpd -p -devtype SSD -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No SSD disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPSSD=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPSSD=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCSSD=`expr 100 \- \( \( $FREECAPSSD \* 100 \) \/ $TOTCAPSSD \)`
if [ $USEDCAPPCSSD -ge $PCCRITICALSSD ]
then
echo CRITICAL! Used SSD capacity = $USEDCAPPCSSD\% \( \> $PCCRITICALSSD\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCSSD -ge $PCWARNINGSSD ]
then
echo WARNING! Used SSD capacity = $USEDCAPPCSSD\% \( \> $PCWARNINGSSD\% \)
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used SSD capacity = $USEDCAPPCSSD\%
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
if [ $COMMAND == "check_3par_volume" ]
then
$CONNECTCOMMAND showvv -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to 3PAR $INSERV
exit 3
fi
VSIZE=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | grep ${VMFS} | cut -d, -f12`
VSIZE_Gb=`expr \( $VSIZE \/ 1024 \)`
USED=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | grep ${VMFS} | cut -d, -f11`
USED_Gb=`expr \( $USED \/ 1024 \)`
FREE=`expr \( $VSIZE \- $USED \)`
FREE_Gb=`expr \( $FREE \/ 1024 \)`
FREEPERCENT=`expr 100 \- \( \( $USED \* 100 \) \/ $VSIZE \)`
USEDPERCENT=`expr 100 \- \( $FREEPERCENT \)`
WARNCRAW=$(($VSIZE*$WARNING/100))
WARNCRAW_Gb=`expr \( $WARNCRAW \/ 1024 \)`
CRITCCRAW=$(($VSIZE*$CRITICAL/100))
CRITCCRAW_Gb=`expr \( $CRITCCRAW \/ 1024 \)`
if [ $USED_Gb -ge $CRITCCRAW_Gb ]
then
echo CRITICAL! TOTAL: $VSIZE\Mb\ USED: $USED\Mb\ \($USED-PERCENT%\) FREE: $FREE\Mb\ \($FREE-PERCENT\) TotSize=$VSIZE_Gb\Gb\ Used=$USED_Gb\Gb\,\Seuil Warn Used :\ $WARNCRAW_Gb \Gb\,\Seuil Used Crit :\ $CRITCCRAW_Gb\Gb
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USED_Gb -ge $WARNCRAW_Gb ]
then
echo WARNING! TOTAL: $VSIZE\Mb\ USED: $USED\Mb\ \($USED-PERCENT%\) FREE: $FREE\Mb\ \($FREE-PERCENT\) TotSize=$VSIZE_Gb\Gb\ Used=$USED_Gb\Gb\,\Seuil Warn Used :\ $WARNCRAW_Gb\Gb\,\Seuil Crit Used :\ $CRITCCRAW_Gb\Gb
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : TOTAL: $VSIZE\Mb\ USED: $USED\Mb\ \($USEDPERCENT%\) FREE: $FREE\Mb\ \($FREEPERCENT%\) TotSize=$VSIZE_Gb\Gb\ Used=$USED_Gb\Gb\,\Seuil Warn Used :\ $WARNCRAW_Gb\Gb\,\Seuil Crit Used :\ $CRITCCRAW_Gb\Gb
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
If you want to have an error if the ssh connection is not working and ask the password to nagios add this parameter at the end of the ssh command: -qo PasswordAuthentication=no
CONNECTCOMMAND="ssh $USERNAME@$INSERV -qo PasswordAuthentication=no"
CONNECTCOMMAND="ssh $USERNAME@$INSERV -qo PasswordAuthentication=no"
I did all what you say, and everything was good, but when I try to connect to 3Par it still ask me for password.
I tried with root and nagios but always the same problem.
I tried with root and nagios but always the same problem.
byrobcar, April 19, 2016
Works fine in Nagios 3, I used the SSH connection.
When in the instructions it says:
"Log in to the server with the 'nagios' user" I did (as root):
# su - nagios -s /bin/bash
because my nagios user didn't have shell.
When in the instructions it says:
"Log in to the server with the 'nagios' user" I did (as root):
# su - nagios -s /bin/bash
because my nagios user didn't have shell.
bygenti, August 3, 2015
In case someone is interested. Not perfect, but it does the job.
https://github.com/pashol/nagios-checks/blob/master/check_3par_perf
if [ $COMMAND == "check_cap_fc" ]
then
$CONNECTCOMMAND showpd -p -devtype FC -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No FC disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPFC=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPFC=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCFC=`expr 100 - ( ( $FREECAPFC * 100 ) / $TOTCAPFC )`
USEDCAPFC=$((($TOTCAPFC-$FREECAPFC)))
WARNCAPFCRAW=$(($TOTCAPFC*$PCWARNINGFC/100))
CRITCAPFCRAW=$(($TOTCAPFC*$PCCRITICALFC/100))
if [ $USEDCAPPCFC -ge $PCCRITICALFC ]
then
echo CRITICAL! Used FC capacity = $USEDCAPPCFC\% ( > $PCCRITICALFC\% )|UsedSpace=$USEDCAPPCFC\%;$PCWARNINGFC;$PCCRITICALFC UsedSpace=$USEDCAPFCMB;$WARNCAPFCRAW;$CRITCAPFCRAW;0;$TOTCAPFC
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCFC -ge $PCWARNINGFC ]
then
echo WARNING! Used FC capacity = $USEDCAPPCFC\% ( > $PCWARNINGFC\% )|UsedSpace=$USEDCAPPCFC\%;$PCWARNINGFC;$PCCRITICALFC UsedSpace=$USEDCAPFCMB;$WARNCAPFCRAW;$CRITCAPFCRAW;0;$TOTCAPFC
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used FC capacity = $USEDCAPPCFC\%|UsedSpace=$USEDCAPPCFC\%;$PCWARNINGFC;$PCCRITICALFC UsedSpace=$USEDCAPFCMB;$WARNCAPFCRAW;$CRITCAPFCRAW;0;$TOTCAPFC
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
https://github.com/pashol/nagios-checks/blob/master/check_3par_perf
if [ $COMMAND == "check_cap_fc" ]
then
$CONNECTCOMMAND showpd -p -devtype FC -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No FC disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPFC=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPFC=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCFC=`expr 100 - ( ( $FREECAPFC * 100 ) / $TOTCAPFC )`
USEDCAPFC=$((($TOTCAPFC-$FREECAPFC)))
WARNCAPFCRAW=$(($TOTCAPFC*$PCWARNINGFC/100))
CRITCAPFCRAW=$(($TOTCAPFC*$PCCRITICALFC/100))
if [ $USEDCAPPCFC -ge $PCCRITICALFC ]
then
echo CRITICAL! Used FC capacity = $USEDCAPPCFC\% ( > $PCCRITICALFC\% )|UsedSpace=$USEDCAPPCFC\%;$PCWARNINGFC;$PCCRITICALFC UsedSpace=$USEDCAPFCMB;$WARNCAPFCRAW;$CRITCAPFCRAW;0;$TOTCAPFC
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCFC -ge $PCWARNINGFC ]
then
echo WARNING! Used FC capacity = $USEDCAPPCFC\% ( > $PCWARNINGFC\% )|UsedSpace=$USEDCAPPCFC\%;$PCWARNINGFC;$PCCRITICALFC UsedSpace=$USEDCAPFCMB;$WARNCAPFCRAW;$CRITCAPFCRAW;0;$TOTCAPFC
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used FC capacity = $USEDCAPPCFC\%|UsedSpace=$USEDCAPPCFC\%;$PCWARNINGFC;$PCCRITICALFC UsedSpace=$USEDCAPFCMB;$WARNCAPFCRAW;$CRITCAPFCRAW;0;$TOTCAPFC
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
byCoyle, June 16, 2015
0 of 1 people found this review helpful
Error: Service check command 'check_3par_cap_fc' specified in service 'FC disks capacity' for host 'ieat3par-01' not defined anywhere!
byBrick, May 19, 2015
I'm not a linux expert but found the instructions really easy to follow
The check is great and monitors everything successfully.
One little bug I found was that the power supply check does not return "UNKNOWN" when it is unable to connect to the 3PAR, all the other checks are able to do this...
The check is great and monitors everything successfully.
One little bug I found was that the power supply check does not return "UNKNOWN" when it is unable to connect to the 3PAR, all the other checks are able to do this...
byemil, January 26, 2015
4 of 4 people found this review helpful
##Implementation for SSD Disks
##NOTE: Add PCWARNINGSSD = 80 and PCCRITICALSSD = 90 to trashold data.
if [ $COMMAND == "check_cap_ssd" ]
then
$CONNECTCOMMAND showpd -p -devtype SSD -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No SSD disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPSSD=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPSSD=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCSSD=`expr 100 - ( ( $FREECAPSSD * 100 ) / $TOTCAPSSD )`
if [ $USEDCAPPCSSD -ge $PCCRITICALSSD ]
then
echo CRITICAL! Used SSD capacity = $USEDCAPPCSSD\% ( > $PCCRITICALSSD\% )
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCSSD -ge $PCWARNINGSSD ]
then
echo WARNING! Used SSD capacity = $USEDCAPPCSSD\% ( > $PCWARNINGSSD\% )
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used SSD capacity = $USEDCAPPCSSD\%
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
##NOTE: Add PCWARNINGSSD = 80 and PCCRITICALSSD = 90 to trashold data.
if [ $COMMAND == "check_cap_ssd" ]
then
$CONNECTCOMMAND showpd -p -devtype SSD -showcols Size_MB,Free_MB -csvtable > $TMPDIR/3par_$COMMAND.$INSERV.out
if [ $? -gt 0 ]
then
echo Could not connect to InServ $INSERV
exit 3
fi
if [ `tail -1 $TMPDIR/3par_$COMMAND.$INSERV.out` = "No PDs listed" ]
then
echo No SSD disks
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
TOTCAPSSD=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f1`
FREECAPSSD=`cat ${TMPDIR}/3par_${COMMAND}.${INSERV}.out | tail -1 | cut -d, -f2`
USEDCAPPCSSD=`expr 100 - ( ( $FREECAPSSD * 100 ) / $TOTCAPSSD )`
if [ $USEDCAPPCSSD -ge $PCCRITICALSSD ]
then
echo CRITICAL! Used SSD capacity = $USEDCAPPCSSD\% ( > $PCCRITICALSSD\% )
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 2
else
if [ $USEDCAPPCSSD -ge $PCWARNINGSSD ]
then
echo WARNING! Used SSD capacity = $USEDCAPPCSSD\% ( > $PCWARNINGSSD\% )
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 1
else
echo OK : Used SSD capacity = $USEDCAPPCSSD\%
rm -f $TMPDIR/3par_$COMMAND.$INSERV.out
exit 0
fi
fi
fi
I have just installed 3par check plugin for Nagios and it's working excellent ! Very easy to implement using installation guide provided.