From f15a05afbaa33a7b25548c133e27a310d2074c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1ll=20Gu=C3=B0j=C3=B3n=20Sigur=C3=B0sson?= Date: Mon, 1 Mar 2010 22:17:45 +0000 Subject: [PATCH] check_hparray added --- check_hparray/check_hparray | 148 ++++++++++++++++++++++++++ check_hparray/check_hparray.cfg | 5 + check_hparray/trunk/check_hparray | 148 ++++++++++++++++++++++++++ check_hparray/trunk/check_hparray.cfg | 5 + 4 files changed, 306 insertions(+) create mode 100755 check_hparray/check_hparray create mode 100644 check_hparray/check_hparray.cfg create mode 100755 check_hparray/trunk/check_hparray create mode 100644 check_hparray/trunk/check_hparray.cfg diff --git a/check_hparray/check_hparray b/check_hparray/check_hparray new file mode 100755 index 0000000..6f7a7d0 --- /dev/null +++ b/check_hparray/check_hparray @@ -0,0 +1,148 @@ +#! /bin/sh +###################################################################### +# Name: check_hparray +# By: Copyright (C) 2007 Magnus Glantz +# Credits to: andreiw +# Modified by: palli@ok.is 2010-02-21 +###################################################################### +# Licence: GPL 2.0 +###################################################################### +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +###################################################################### +# Description: +# +# A Nagios plugin that checks HP Proliant hardware raid via the HPACUCLI tool. +# +# HPACUCLI needs administrator rights. +# add this line to /etc/sudoers +# +# nagios ALL=NOPASSWD: /usr/sbin/hpacucli +###################################################################### + +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +PROGNAME=`basename $0` +PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'` +REVISION=`echo '$Revision: 1.0 $' | sed -e 's/[^0-9.]//g'` +HPACUCLI=/usr/sbin/hpacucli + +STATE_OK=0 +STATE_WARNING=1 +STATE_CRITICAL=2 +STATE_UNKNOWN=3 +STATE_DEPENDENT=4 + +print_usage() { + echo "" + echo "Usage: $PROGNAME -s " + echo "Usage: $PROGNAME --all" + echo "Usage: $PROGNAME [-h | --help]" + echo "Usage: $PROGNAME [-V | --version]" + echo "" + echo " NOTE:" + echo "" + echo " HPACUCLI needs administrator rights." + echo " add this line to /etc/sudoers" + echo " nagios ALL=NOPASSWD: /usr/sbin/hpacucli" + echo "" +} + +print_help() { + print_revision $PROGNAME $REVISION + echo "" + print_usage + echo "" + echo "This plugin checks hardware status for HP Proliant servers using HPACUCLI utility." + echo "" + support + exit 0 +} + +if [ $# -lt 1 ]; then + print_usage + exit $STATE_UNKNOWN +fi + +check_raid() +{ + raid_ok=`echo $check|grep -i ok|wc -l` + raid_warning=`echo $check|grep -i rebuild|wc -l` + raid_critical_1=`echo $check|grep -i failed|wc -l` + raid_critical_2=`echo $check|grep -i recovery|wc -l` + + err_check=`expr $raid_ok + $raid_warning + $raid_critical_1 + $raid_critical_2` + + if [ $err_check -eq "0" ]; then + checkm=`echo $check|sed -e '/^$/ d'` + echo "$PROGNAME Error. $checkm" + exit 2 + fi + + if [ $raid_ok -ge "1" ]; then + exit_status=$STATE_OK + elif [ $raid_warning -ge "1" ]; then + exit_status=$STATE_WARNING + elif [ $raid_critical_1 -ge "1" ]; then + exit_status=$STATE_CRITICAL + elif [ $raid_critical_2 -ge "1" ]; then + exit_status=$STATE_CRITICAL + fi + + if [ $exit_status -eq "0" ]; then + msg_ok=`echo $check|grep -i ok` + echo "RAID OK - ($msg_ok)" + exit $exit_status + elif [ $exit_status -eq "1" ]; then + msg_warning=`echo $check|grep -i rebuild` + echo "RAID WARNING - ($msg_warning)" + exit $exit_status + elif [ $exit_status -eq "2" ]; then + msg_critical1=`echo $check|grep -i failed` + msg_critical2=`echo $check|grep -i recovery` + echo "RAID CRITICAL - ($msg_critical1 $msg_critical2)" + exit $exit_status + fi +} + + +case "$1" in + --help) + print_help + exit 0 + ;; + -h) + print_help + exit 0 + ;; + --version) + print_revision $PROGNAME $REVISION + exit 0 + ;; + -V) + print_revision $PROGNAME $REVISION + exit 0 + ;; + --all) + controllers=`sudo -u root hpacucli controller all show | sed 's/.*Slot \([0-9]*\).*/\1/'` + check=`for i in $controllers ; do sudo -u root $HPACUCLI controller slot=$i ld all show;done` + check_raid + ;; + -s) + check=`sudo -u root $HPACUCLI controller slot=$2 ld all show` + check_raid + ;; + *) + print_usage + ;; +esac diff --git a/check_hparray/check_hparray.cfg b/check_hparray/check_hparray.cfg new file mode 100644 index 0000000..79cd916 --- /dev/null +++ b/check_hparray/check_hparray.cfg @@ -0,0 +1,5 @@ +command[check_hpraid_slot1]=/usr/lib64/nagios/plugins/check_hparray -s 1 +command[check_hpraid_slot2]=/usr/lib64/nagios/plugins/check_hparray -s 2 +command[check_hpraid_slot3]=/usr/lib64/nagios/plugins/check_hparray -s 3 +command[check_hpraid_slot4]=/usr/lib64/nagios/plugins/check_hparray -s 4 +command[check_hpraid]=/usr/lib64/nagios/plugins/check_hparray --all diff --git a/check_hparray/trunk/check_hparray b/check_hparray/trunk/check_hparray new file mode 100755 index 0000000..6f7a7d0 --- /dev/null +++ b/check_hparray/trunk/check_hparray @@ -0,0 +1,148 @@ +#! /bin/sh +###################################################################### +# Name: check_hparray +# By: Copyright (C) 2007 Magnus Glantz +# Credits to: andreiw +# Modified by: palli@ok.is 2010-02-21 +###################################################################### +# Licence: GPL 2.0 +###################################################################### +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +###################################################################### +# Description: +# +# A Nagios plugin that checks HP Proliant hardware raid via the HPACUCLI tool. +# +# HPACUCLI needs administrator rights. +# add this line to /etc/sudoers +# +# nagios ALL=NOPASSWD: /usr/sbin/hpacucli +###################################################################### + +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +PROGNAME=`basename $0` +PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'` +REVISION=`echo '$Revision: 1.0 $' | sed -e 's/[^0-9.]//g'` +HPACUCLI=/usr/sbin/hpacucli + +STATE_OK=0 +STATE_WARNING=1 +STATE_CRITICAL=2 +STATE_UNKNOWN=3 +STATE_DEPENDENT=4 + +print_usage() { + echo "" + echo "Usage: $PROGNAME -s " + echo "Usage: $PROGNAME --all" + echo "Usage: $PROGNAME [-h | --help]" + echo "Usage: $PROGNAME [-V | --version]" + echo "" + echo " NOTE:" + echo "" + echo " HPACUCLI needs administrator rights." + echo " add this line to /etc/sudoers" + echo " nagios ALL=NOPASSWD: /usr/sbin/hpacucli" + echo "" +} + +print_help() { + print_revision $PROGNAME $REVISION + echo "" + print_usage + echo "" + echo "This plugin checks hardware status for HP Proliant servers using HPACUCLI utility." + echo "" + support + exit 0 +} + +if [ $# -lt 1 ]; then + print_usage + exit $STATE_UNKNOWN +fi + +check_raid() +{ + raid_ok=`echo $check|grep -i ok|wc -l` + raid_warning=`echo $check|grep -i rebuild|wc -l` + raid_critical_1=`echo $check|grep -i failed|wc -l` + raid_critical_2=`echo $check|grep -i recovery|wc -l` + + err_check=`expr $raid_ok + $raid_warning + $raid_critical_1 + $raid_critical_2` + + if [ $err_check -eq "0" ]; then + checkm=`echo $check|sed -e '/^$/ d'` + echo "$PROGNAME Error. $checkm" + exit 2 + fi + + if [ $raid_ok -ge "1" ]; then + exit_status=$STATE_OK + elif [ $raid_warning -ge "1" ]; then + exit_status=$STATE_WARNING + elif [ $raid_critical_1 -ge "1" ]; then + exit_status=$STATE_CRITICAL + elif [ $raid_critical_2 -ge "1" ]; then + exit_status=$STATE_CRITICAL + fi + + if [ $exit_status -eq "0" ]; then + msg_ok=`echo $check|grep -i ok` + echo "RAID OK - ($msg_ok)" + exit $exit_status + elif [ $exit_status -eq "1" ]; then + msg_warning=`echo $check|grep -i rebuild` + echo "RAID WARNING - ($msg_warning)" + exit $exit_status + elif [ $exit_status -eq "2" ]; then + msg_critical1=`echo $check|grep -i failed` + msg_critical2=`echo $check|grep -i recovery` + echo "RAID CRITICAL - ($msg_critical1 $msg_critical2)" + exit $exit_status + fi +} + + +case "$1" in + --help) + print_help + exit 0 + ;; + -h) + print_help + exit 0 + ;; + --version) + print_revision $PROGNAME $REVISION + exit 0 + ;; + -V) + print_revision $PROGNAME $REVISION + exit 0 + ;; + --all) + controllers=`sudo -u root hpacucli controller all show | sed 's/.*Slot \([0-9]*\).*/\1/'` + check=`for i in $controllers ; do sudo -u root $HPACUCLI controller slot=$i ld all show;done` + check_raid + ;; + -s) + check=`sudo -u root $HPACUCLI controller slot=$2 ld all show` + check_raid + ;; + *) + print_usage + ;; +esac diff --git a/check_hparray/trunk/check_hparray.cfg b/check_hparray/trunk/check_hparray.cfg new file mode 100644 index 0000000..79cd916 --- /dev/null +++ b/check_hparray/trunk/check_hparray.cfg @@ -0,0 +1,5 @@ +command[check_hpraid_slot1]=/usr/lib64/nagios/plugins/check_hparray -s 1 +command[check_hpraid_slot2]=/usr/lib64/nagios/plugins/check_hparray -s 2 +command[check_hpraid_slot3]=/usr/lib64/nagios/plugins/check_hparray -s 3 +command[check_hpraid_slot4]=/usr/lib64/nagios/plugins/check_hparray -s 4 +command[check_hpraid]=/usr/lib64/nagios/plugins/check_hparray --all