2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/smstools/smstools_

148 lines
3.8 KiB
Plaintext
Raw Normal View History

2009-02-09 19:12:59 +01:00
#!/bin/bash
# Copyright (C) 2009 Andreas Thienemann <andreas@bawue.net>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Library General Public License as published by
# the Free Software Foundation; version 2 only
#
# 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 Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
#
2009-02-09 19:12:59 +01:00
# Plugin to monitor an smstools installation
#
# Usage: Link or copy into the munin-node plugin directory, name it according
# to your SMS Modem as known to smsd. e.g. smstools_GSM1
#
#
# Installation:
#
# SMSD:
# Configure smsd to output his statistics by adding the following to /etc/smsd.conf:
#
# stats = /var/log/smsd_stats
# stats_interval = 300
#
#
# Munin:
# If your statistics directory is non-standard, configure it as
# statsdir in the munin-plugin configuration
# In case you do not want your statistics-dump from smsd deleted after reading,
# set env.cleanup to false. If you want cleanup to work, run the plugin as root.
#
# [smstools*]
# user root
# env.statsdir /var/log/smsd_stats
# env.cleanup true
#
#
# Magic markers (optional - only used by munin-config and some
# installation scripts):
#
#%# family=contrib
#%# capabilities=autoconf suggest
#
STATSDIR=${statsdir:-/var/log/smsd_stats}
CLEANUP=${cleanup:-false}
MODEM=`basename $0 | sed 's/^smstools_//g'`
if [ "$1" = "autoconf" ]; then
if [ -d $STATSDIR ]; then
echo yes
exit 0
else
echo "no ($STATSDIR not found)"
exit 1
fi
fi
if [ "$1" = "suggest" ]; then
if [ -d $STATSDIR ]; then
# Find the newest statistics file
FILE=$(ls -rt ${STATSDIR}/[0-9]*.[0-9]* | tail -n 1)
awk '
FS="," {
if (NR > 4) {
print $1
}
}
' < $FILE
exit 0
else
exit 1
fi
fi
# If run with the "config"-parameter, give out information on how the
# graphs should look.
2009-02-09 19:12:59 +01:00
if [ "$1" = "config" ]; then
echo 'graph_title SMSTools Report for '${MODEM}
echo 'graph_args --base 1000 -l 0'
echo 'graph_vlabel '
echo 'graph_scale no'
echo 'graph_category chat'
2009-02-09 19:12:59 +01:00
echo 'graph_info SMSTools Statistics'
echo 'graph_oder succeeded received failed multiple_failed rejected'
echo 'rejected.label Rejected'
echo 'rejected.info Number of rejected SMS'
echo 'succeeded.label Succeeded'
echo 'succeeded.info Number of successfully sent SMS'
2009-02-09 19:12:59 +01:00
echo 'failed.label Failed'
echo 'failed.info Number of failed SMS'
echo 'received.label Received'
echo 'received.info Number of received SMS'
echo 'multiple_failed.label Consecutive failures'
echo 'multiple_failed.info Number of consecutive failures'
# echo 'usage_s.label Time sent'
# echo 'usage_s.info Modem time sending'
# echo 'usage_r.label Time sent'
# echo 'usage_r.info Modem time receiving'
# Last, if run with the "config"-parameter, quit here (don't
# display any data)
exit 0
fi
# Find the newest statistics file
FILE=$(ls -rt ${STATSDIR}/[0-9]*.[0-9]* | tail -n 1)
awk '
FS="," {
if (NR == 2)
a[0] = "rejected.value " $2
if (NR > 4 && $1 == "'$MODEM'") {
a[1] = "succeeded.value " $2
a[2] = "failed.value " $3
a[3] = "received.value " $4
a[4] = "multiple_failed.value " $5
a[5] = "usage_s.value " $6
a[6] = "usage_r.value " $7
}
# Did we actually get more then just the rejected.value line?
# Then we must have parsed the right modem, output everything
if (1 in a) {
for (i = 0; i < 7; i++) {
print a[i]
}
}
}
' < $FILE
if [ ${CLEANUP} == "true" ]; then
rm -f $FILE
fi