From 0478cfae5270e866b6d6dd7663ca71a623c12e4f Mon Sep 17 00:00:00 2001 From: Courgette Date: Sat, 24 May 2008 16:57:51 +0200 Subject: [PATCH] Initial version --- plugins/other/b3error_ | 95 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100755 plugins/other/b3error_ diff --git a/plugins/other/b3error_ b/plugins/other/b3error_ new file mode 100755 index 00000000..b2af28f6 --- /dev/null +++ b/plugins/other/b3error_ @@ -0,0 +1,95 @@ +#!/bin/bash +# +# Plugin to monitor BigBrotherBot errors +# +# ln -s /usr/share/node/node/plugins-auto/b3error_ +# /etc/munin/node.d/b3error_name +# +# you must provide the path to bigbrotherbot logfile with env.logfile +# Parameters understood: +# +# config (required) +# autoconf (optional) +# +# Magic markers (optional - used by munin-config and installation +# scripts): +# +#%# capabilities=autoconf + +B3NAME=${0##*/b3error_} +LOGTAIL=${logtail:-`which logtail`} +#logfile from env +STATEFILE=/var/lib/munin/plugin-state/${B3NAME}.offset + +mktempfile () { + mktemp -t $1 +} + + +if [ "$1" = "autoconf" ]; then + if [ -n "${B3NAME}" -a -f "${logfile}" -a -n "${LOGTAIL}" -a -x "${LOGTAIL}" ]; then + echo yes + exit 0 + else + echo -n "no" + if [ ! -n "${B3NAME}" ]; then + echo " (you must call that plugin with a symlink)" + elif [ ! -n "${logfile}" ]; then + echo " (you must set the env variable env.logfile)" + elif [ ! -f "${logfile}" ]; then + echo " (log file : '${logfile}' not found)" + elif [ ! -n "${LOGTAIL}" ]; then + echo " (logtail required)" + elif [ ! -x "${LOGTAIL}" ]; then + echo " (cannot execute ${LOGTAIL})" + fi + exit 1 + fi +fi + +if [ "$1" = "config" ]; then + echo "graph_title BigBrotherBot errors - ${B3NAME}" + cat <<'EOM' +graph_args --base 1000 -l 0 +graph_vlabel Errors +graph_category Games +errors.label total errors +errors.draw AREA +rconreading.label RCON: ERROR reading +rconreading.draw AREA +eventqueue.label Event sat in queue too long +eventqueue.draw AREA +parseline.label could not parse line +parseline.draw AREA +other.label Other errors +other.draw AREA +EOM + exit 0 +fi + +errors=U +rconsocketerror=U +parseline=U +eventqueue=U +other=U + +TEMP_FILE=`mktempfile munin-${B3NAME}-log.XXXXXX` +if [ -n "$TEMP_FILE" -a -f "$TEMP_FILE" ] +then + $LOGTAIL ${logfile} $STATEFILE > ${TEMP_FILE} + errors=`sed -rne 's/^[0-9]+\s+[0-9:]+\s+ERROR\s+(.+)/\1/p' ${TEMP_FILE} | wc -l` + rconreading=`grep 'RCON: ERROR reading' ${TEMP_FILE} | wc -l` + parseline=`grep 'could not parse line' ${TEMP_FILE} | wc -l` + eventqueue=`grep '**** Event sat in queue too long:' ${TEMP_FILE} | wc -l` + other=$(( $errors - ($rconreading + $parseline + $eventqueue) )) + /bin/rm -f $TEMP_FILE +fi + + +echo "errors.value ${errors}" +echo "rconreading.value ${rconreading}" +echo "eventqueue.value ${eventqueue}" +echo "parseline.value ${parseline}" +echo "other.value ${other}" + +exit 0 \ No newline at end of file