From 6b25a2f4113a10f82a7ea7a8093b48801c68a123 Mon Sep 17 00:00:00 2001 From: Kenyon Ralph Date: Mon, 27 Feb 2012 23:56:56 -0800 Subject: [PATCH] add file_age plugin by Edward Plainview https://it.sverigedemokraterna.se/program/file_age/ --- plugins/disk/file_age | 133 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100755 plugins/disk/file_age diff --git a/plugins/disk/file_age b/plugins/disk/file_age new file mode 100755 index 00000000..29636d14 --- /dev/null +++ b/plugins/disk/file_age @@ -0,0 +1,133 @@ +#!/bin/bash + +. $MUNIN_LIBDIR/plugins/plugin.sh + +case $1 in + config) + GRAPH_ORDER="" + COUNTER=1 + while [ $COUNTER -gt 0 ]; do + FILE_PATH="file${COUNTER}_path" + + # Is the path for this file specified? + eval FILE=\$$FILE_PATH + if [ "$FILE" == "" ]; then + break; + fi + + # It is! Add it to the graphs. + GRAPH_ORDER="$GRAPH_ORDER file_$COUNTER" + + # Does this file have a specified label? + LABEL_COUNTER="file${COUNTER}_label" + eval LABEL=\$$LABEL_COUNTER + if [ "$LABEL" == "" ]; then + LABEL=`basename $FILE` + fi + + # Associated warning level? + WARNING="file${COUNTER}_warning" + eval WARNING=\$$WARNING + if [ "$WARNING" != "" ]; then + echo "file_$COUNTER.warning $WARNING" + fi + + # Associated critical level? + CRITICAL="file${COUNTER}_critical" + eval CRITICAL=\$$CRITICAL + if [ "$CRITICAL" != "" ]; then + echo "file_$COUNTER.critical $CRITICAL" + fi + + echo "file_$COUNTER.label $LABEL" + echo "file_$COUNTER.type GAUGE" + echo "file_$COUNTER.min 0" + let COUNTER=COUNTER+1 + done; + + echo "graph_order $GRAPH_ORDER" + echo "graph_title File age" + echo 'graph_args --base 1000 -l 0' + echo 'graph_vlabel seconds' + echo 'graph_category disk' + + exit 0 + ;; +esac + + +COUNTER=1 +while [ $COUNTER -gt 0 ]; do + FILE_COUNTER="file${COUNTER}_path" + eval FILE=\$$FILE_COUNTER + if [ "$FILE" == "" ]; then + break; + fi + + # If the file isn't readable, say it's zero. + if [ ! -r "$FILE" ]; then + VALUE=0 + else + VALUE=$(($(date +%s) - $(stat -c '%Y' "$FILE"))) + fi + + echo "file_$COUNTER.value $VALUE" + let COUNTER=COUNTER+1 +done; +exit + +# -*- sh -*- + +: << =cut + +=head1 NAME + +file_age - Monitors the age of files. + +=head1 CONFIGURATION + +Since there is no way for the plugin to guess which files you want monitored, you're going to have to set each file up separately. Put the following in a file in your plugin-conf.d directory. + +[file_age] + user root # May not be necessary, depending on which files you want monitored. + + env.file1_path /var/log/syslog # Mandatory, complete path to file. + env.file1_label System syslog # Optional label if you don't want the file name to be displayed. + env.file1_warning 86400 # Optional warning level. Measured in seconds. 86400 is one day of seconds. + env.file1_critical 864000 # Optional critical level. Measured in seconds. + +Continue with file2, file3, etc... + +Here, have some seconds: + + 3600 One hour + 7300 Two hours + 10800 Three hours + 21600 Six hours + 43200 Twelve hours + 86400 One day + 172800 Two days + 259200 Three days + 604800 One week + +=head1 AUTHOR + +Edward Plainview + +=head1 DONATIONS + +If you wish to donate money for this plugin, please read https://it.sverigedemokraterna.se/donera/ + +=head1 LICENSE + +GPLv3 + +=head1 MAGIC MARKERS + + #%# family=auto + +=head1 VERSION + +1.0 released 2012-02-26 + +=cut