nix-config/ansible/roles/elnappo.check_mk_agent/files/plugins/websphere_mq

122 lines
5.3 KiB
Bash
Executable File

#!/bin/sh
# Monitor Websphere MQ
# WWI Version 18.05.2016
# +------------------------------------------------------------------+
# | ____ _ _ __ __ _ __ |
# | / ___| |__ ___ ___| | __ | \/ | |/ / |
# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
# | | |___| | | | __/ (__| < | | | | . \ |
# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
# | |
# | Copyright Mathias Kettner 2014 mk@mathias-kettner.de |
# +------------------------------------------------------------------+
#
# This file is part of Check_MK.
# The official homepage is at http://mathias-kettner.de/check_mk.
#
# check_mk 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 in version 2. check_mk is distributed
# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more de-
# tails. You should have received a copy of the GNU General Public
# License along with GNU Make; see the file COPYING. If not, write
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
# plugin for websphere_mq_* checks
if [ "$1" = "" ]
then
# wwi --------------------------------------
# deletion of "-"
# preventing a faulty "TCP Connection" section of the main agent
# by using the "-" option, the AIX environment show's the message "[YOU HAVE NEW MAIL]"
# before the section start: <<<websphere_mq_channels>>>
# so the next section will be useless for the OMD server check.
# su - mqm -c "/usr/lib/check_mk_agent/plugins/websphere_mq run"
su mqm -c "/usr/lib/check_mk_agent/plugins/websphere_mq run"
else
# Loop over all local mq instances
for QM in $( ps -ef|grep [/]usr/mqm/bin/runmqlsr|awk -v FS="-m" '{print $2}'|awk '{print $1}'| uniq)
do
echo '<<<websphere_mq_channels>>>'
for i in `echo " display CHANNEL (*) TYPE (SDR) " | /usr/bin/runmqsc $QM | grep CHLTYPE | \
grep -v SYSTEM | awk '{print $1}'`; do
j=`echo "display $i " | /usr/bin/runmqsc $QM | grep XMITQ | tr " " "\n" | \
grep XMITQ | sed '1,$s/(/ /g' | sed '1,$s/)/ /g'| awk '{print $2 }'`
a=`echo " display qlocal ($j) CURDEPTH " | /usr/bin/runmqsc $QM | grep CURDEPTH | \
tr " " "\n" | grep CURDEPTH | sed '1,$s/(/ /g' | sed '1,$s/)/ /g'| \
awk '{print $2 }' | tr "\n" " "`
c=`echo " display qlocal ($j) MAXDEPTH " | /usr/bin/runmqsc $QM | grep MAXDEPTH | \
tr " " "\n" | grep MAXDEPTH | sed '1,$s/(/ /g' | sed '1,$s/)/ /g'| \
awk '{print $2 }' | tr "\n" " "`
l=`echo $i | sed '1,$s/(/ /g' | sed '1,$s/)/ /g'| awk '{print $2 }'`
s=`echo " display chstatus($l)" | /usr/bin/runmqsc $QM | grep STATUS | tail -1 | \
sed '1,$s/(/ /g' | sed '1,$s/)/ /g'| awk '{print $NF }'`
if [ "$s" = "" ]
then
s="Unknown"
fi
echo "$a $i $c $s"
done
echo '<<<websphere_mq_queues>>>'
for t in `echo " display queue (*) where (USAGE EQ NORMAL) " | /usr/bin/runmqsc $QM | \
grep -v SYSTEM | grep -v MQMON | grep -v MONITOR | grep -v _T0 | grep -v _T1 | \
grep -v _T2 | grep -v _T3 | grep -v mqtest | grep QUEUE | awk '{ print $1 }' | \
sed '1,$s/(/ /g' | sed '1,$s/)/ /g'| awk '{print $2 }'`; do
# wwi MQ admin change, to get more queues which are needed
a=`echo " display qlocal ($t) CURDEPTH " | /usr/bin/runmqsc $QM | grep CURDEPTH | \
tr " " "\n" | grep CURDEPTH | sed '1,$s/(/ /g' | sed '1,$s/)/ /g'| \
awk '{print $2 }' | tr "\n" " "`
b=`echo " display qlocal ($t) MAXDEPTH " | /usr/bin/runmqsc $QM | grep MAXDEPTH | \
tr " " "\n" | grep MAXDEPTH | sed '1,$s/(/ /g' | sed '1,$s/)/ /g'| \
awk '{print $2 }' | tr "\n" " "`
c=`echo " dis qs($t) monitor " | /usr/bin/runmqsc $QM | grep -e LGETDATE -e LGETTIME | \
tr '\n' ' '| awk -v FS="LPUTDATE" '{print $1}'|sed 's/ //g'`
NOW=$(date +%Y_%m_%d"-"%H_%M_%S)
# Muster: Anzahl eingehender Messages $a auf $t Max-Queues $b
# wwi -------------------------
if [ "$a" == "" ] || [ "$a" == " " ]; then
a=" 0"
t=" $t"
c="CURDEPTH(0)LGETDATE()LGETTIME()"
fi
if [ "$b" == "" ]|| [ "$b" == " " ]; then
b=0
c="CURDEPTH(0)LGETDATE()LGETTIME()"
fi
if [ "$c" == "" ]|| [ "$c" == " " ]; then
c="CURDEPTH(0)LGETDATE()LGETTIME()"
fi
echo "$a $t $b $c $NOW"
done # for t
done # for QM
fi
if type dspmq > /dev/null; then
echo "<<<websphere_mq_instance:sep(41)>>>"
dspmq -x
echo "MQv"$(dspmqver|grep -e Version -e ^Level -e Mode|awk -v FS=":" '{print $2","}'|tr -d ' '|tr -d '\n'|sed 's/,$/;/g')
dspmq -o all
fi