diff --git a/check_rhcs/trunk/check_rhcs_cman_subsystems.sh b/check_rhcs/trunk/check_rhcs_cman_subsystems.sh new file mode 100755 index 0000000..da29026 --- /dev/null +++ b/check_rhcs/trunk/check_rhcs_cman_subsystems.sh @@ -0,0 +1,141 @@ +#!/bin/bash +# +# Copyright 2010, Pall Sigurdsson +# +# This script 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 3 of the License, or +# (at your option) any later version. +# +# This script 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, see . + +# About this script +# +# Checks uptime of a specified host, using NRPE is host is remote + +HOSTN="localhost" # By default check localhost +CHECK_COMMAND="group_tool ls 0 default" # Default command to check selinux status +ok=0 +warning=1 +critical=2 +unknown=3 + +print_help() { + echo "check_rhcs_cman version $VERSION" + echo "This plugin checks cman groups" + echo "" + echo "Usage: $0 [-H ] <-l LEVEL> <--group GROUP>" + echo "" + echo "Examples:" + echo "# check_rhcs_fencing.sh --level 0 --group default" + echo "# check_rhcs_fencing.sh --level 1 --group rgmanager" +} + +#if [ $# -eq 0 ]; then +# print_help ; +# exit $UNKNOWN +#fi + + +# Parse arguments +while [ $# -gt 0 ] +do + case $1 + in + -H) + HOSTN=$2 + shift 2 + ;; + --group) + GROUP=$2 + shift 2 + ;; + --level) + LEVEL=$2 + shift 2 + ;; + + *) + print_help ; + exit $UNKNOWN + ;; + esac +done + +if [ -z $GROUP ]; then + echo "ERROR - --group not specified" + print_help ; + exit $UNKNOWN +fi + +if [ -z $LEVEL ]; then + echo "ERROR - --level not specified" + print_help ; + exit $UNKNOWN +fi + + + +# We we are not checking localhost, lets get remote uptime via NRPE +if [ "$HOSTN" != "localhost" ]; then + export PATH=$PATH:/usr/lib/nagios/plugins:/usr/lib64/nagios/plugins:/nagios/usr/lib/nagios/plugins + CHECK_COMMAND="check_nrpe -H $HOSTN -c check_cman_group -a $LEVEL $GROUP" +fi + +CHECK_COMMAND="group_tool ls $LEVEL $GROUP" + +# group_tool ls +# type level name id state +# fence 0 default 00020001 none +# [1] +# dlm 1 rgmanager 00030001 none +#[1 2] + +# Get the uptime, raise error if we are unsuccessful +OUTPUT=`$CHECK_COMMAND 2>&1` +RESULT=$? +SUMMARY="" + + +# group_tool should only return status 0 or 1 +# if higher, then something unexpected occured +if [ $RESULT -ge 2 ]; then + echo "group_tool error: could not run command $CHECK_COMMAND" + echo "output:" + echo "$OUTPUT" + exit $unknown +fi + +set -- $OUTPUT +type=$6 +level=$7 +name=$8 +id=$9 +state=${10} +# Check if group_tool command ran successfully +if [ $RESULT -ne 0 ]; then + echo "group_tool error: group $GROUP level $LEVEL not found." + echo "output:" + echo "$OUTPUT" + exit $critical +else + echo $OUTPUT | grep -qw "none" + RESULT=$? + if [ $RESULT -ne 0 ]; then + echo "group_tool error: group is in abnormal state. name=$name type=$type level=$level state=$state" + echo "output:" + echo "$OUTPUT" + exit $critical + else + echo "group_tool: group ok and in state 'none'. name=$name type=$type level=$level state=$state" + echo "output:" + echo "$OUTPUT" + exit $ok + fi +fi diff --git a/check_rhcs/trunk/nrpe.d/check_rhcs.cfg b/check_rhcs/trunk/nrpe.d/check_rhcs.cfg index 8c156f8..de461c0 100644 --- a/check_rhcs/trunk/nrpe.d/check_rhcs.cfg +++ b/check_rhcs/trunk/nrpe.d/check_rhcs.cfg @@ -5,3 +5,11 @@ command[get_rhcs_fencing]=test ! -p /tmp/fence_manual.fifo command[check_rhcs_fencing]=/usr/lib64/nagios/plugins/check_rhcs_manualfencing.sh +command[get_rhcs_cman_group]=/sbin/group_tool ls '$ARG1$' '$ARG2$' +command[get_rhcs_cman_group_default]=/sbin/group_tool ls 0 default +command[get_rhcs_cman_group_rgmanager]=/sbin/group_tool ls 1 rgmanager + + +command[check_rhcs_cman_group]=/usr/lib64/nagios/plugins/check_rhcs_cman_group.sh --level '$ARG1$' --group '$ARG2$' +command[check_rhcs_cman_group_default]=/usr/lib64/nagios/plugins/check_rhcs_cman_group.sh --level 0 --group default +command[check_rhcs_cman_group]_rgmanager=/usr/lib64/nagios/plugins/check_rhcs_cman_group.sh --level 1 --group rgmanager