#!/bin/sh # # Plugin to graph perdition connections and errors # Requires: logtail # # Copyright Micah Anderson # Jan 23, 2005 # # #%# family=contrib #%# capabilities=autoconf # The different log lines we are interested in: # # buffy perdition[7583]: Connect: 64.45.82.181->69.50.164.185 # buffy perdition[20097]: Close: 217.19.50.108->69.50.74.154 user="mek" received=12 sent=23 # buffy perdition[7435]: Auth: 130.22.173.20->69.90.134.185 user="gotn" server="192.168.0.2" port="143" status="ok" # buffy perdition[26986]: Auth: 72.13.2.186->69.92.134.215 user="moves" server="192.168.0.2" port="110" status="ok" # Then there are some errors, I'm just going to put these all into one line, they could easily be # separate out if we were interested in how many of each type of error, but 7 lines for this graph is a lot # buffy perdition[20908]: Fatal Error reading authentication information from client "203.52.112.34->68.92.124.155": Exiting child # buffy perdition[27754]: Fatal error establishing SSL connection to client # buffy perdition[5139]: Fatal error negotiating setup. Exiting child. # Changelog # version 0.1 - Jan 23, 2005 # Micah Anderson # - initial author # version 0.2 - Oct 10, 2007 # Micah Anderson # - fixed copyright and added changelog # - added TMP env variable # - set all TEMP_FILE variables to use $TMP # Set the location of the perdition logs PERDITION_LOG=${logfile:-/var/log/perdition.log} OFFSET_FILE=/var/lib/munin/plugin-state/perdition.offset LOGTAIL=${logtail:-/usr/sbin/logtail} TMP=${TMP:-/tmp} case `uname -s` in Linux) TEMP_FILE=`mktemp -p $TMP/ munin-perdition.XXXXXX` if [ $? != 0 ]; then TEMP_FILE=`mktemp $TMP/munin-perdition.XXXXXX` fi ;; FreeBSD) TEMP_FILE=`mktemp -t $TMP` STATUS=$? ;; esac if [ -z "$TEMP_FILE" ]; then # Yes, this is unsafe TEMP_FILE=$TMP/munin-perdition.$$ rm -rf $TEMP_FILE touch $TEMP_FILE fi if [ ! -f "$TEMP_FILE" ]; then exit 3 fi case $1 in autoconf|detect) if [ -f ${PERDITION_LOG} -a -x ${LOGTAIL} ] then echo yes exit 0 else echo "no (either $PERDITION_LOG was not found, or logtail was not in your path)" exit 1 fi ;; config) cat </dev/null >/dev/null` if [ $? = 66 ]; then if [ ! -n "$logtail" ]; then ARGS=1 fi fi if [ $ARGS != 0 ]; then ${LOGTAIL} -f ${PERDITION_LOG} -o ${OFFSET_FILE} > ${TEMP_FILE} else ${LOGTAIL} ${PERDITION_LOG} ${OFFSET_FILE} > ${TEMP_FILE} fi connection=`grep "Connect:" ${TEMP_FILE} | wc -l` disconnected=`grep "Close:" ${TEMP_FILE} | wc -l` imap=`grep 'port="143" status="ok"' ${TEMP_FILE} | wc -l` pop=`grep 'port="110" status="ok"' ${TEMP_FILE} | wc -l` fatal=`grep 'Fatal [e|E]rror' ${TEMP_FILE} | wc -l` rm ${TEMP_FILE} echo "connection.value ${connection}" echo "disconnected.value ${disconnected}" echo "imap.value ${imap}" echo "pop.value ${pop}" echo "fatal.value ${fatal}"