From 82edf596896ddcec0e0d75af87790614cfa1f5d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sz=C3=A9pe?= Date: Sat, 14 May 2016 13:23:00 +0000 Subject: [PATCH 1/3] Added munin_events plugin --- plugins/munin/munin_events | 142 +++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100755 plugins/munin/munin_events diff --git a/plugins/munin/munin_events b/plugins/munin/munin_events new file mode 100755 index 00000000..121f1695 --- /dev/null +++ b/plugins/munin/munin_events @@ -0,0 +1,142 @@ +#!/bin/bash +# -*- sh -*- +: <<=cut + +=head1 NAME + +munin_events - Plugin to monitor munin updates + +=head1 APPLICABLE SYSTEMS + +All systems with "bash", "logtail" and "munin" + +=head1 CONFIGURATION + +The following is the default configuration + + [munin_events] + user munin + env.muninupdate /var/log/munin/munin-update.log + env.logtail2 /usr/sbin/logtail2 + +You could trigger alerts on update failures + + [munin_events] + env.munin_fatal_critical 0 + env.munin_error_critical 0 + env.munin_warning_warning 0 + env.munin_warning_critical 5 + +=head1 INTERPRETATION + +This plugin shows a graph with one line per munin state: +INFO, WARNING, ERROR, FATAL. + +=head1 MAGIC MARKERS + + #%# family=auto + #%# capabilities=autoconf + +=head1 VERSION + + 1.2.20160514 + +=head1 AUTHOR + +Viktor Szépe + +=head1 LICENSE + +GPLv2 + +=cut + + +############################## +# Includes + +. $MUNIN_LIBDIR/plugins/plugin.sh + +############################## +# Configurable variables +muninupdate=${muninupdate:-/var/log/munin/munin-update.log} +logtail_bin=${logtail_bin:-/usr/sbin/logtail2} + +############################## +# Functions + +# Print one value +do_value() { + local FIELD="$1" + local EVENT_LABEL="$2" + local EVENT_COUNT + + EVENT_COUNT="$("$logtail_bin" -t "$muninupdate" 2> /dev/null | grep -c "^[0-9/: ]\{19\} \[${EVENT_LABEL}\]")" + if ! [ -z "${EVENT_COUNT//[0-9]/}" ]; then + echo "Cannot determine event count" 1>&2 + exit 10 + fi + + echo "${FIELD}.value ${EVENT_COUNT}" +} + +# Print the munin values +values() { + do_value 'munin_info' 'INFO' + do_value 'munin_warning' 'WARNING' + do_value 'munin_error' 'ERROR' + do_value 'munin_fatal' 'FATAL' + # Set offset + "$logtail_bin" "$muninupdate" &> /dev/null + chmod 640 "${muninupdate}.offset" +} + +# Print the munin config +config() { + echo 'graph_title Munin update events groupped by log levels' + echo 'graph_info This graph shows INFO, WARNING, ERROR and FATAL events' + echo 'graph_category munin' + echo 'graph_vlabel Number of events' + + echo 'graph_args --base 1000 -l 0' + echo 'graph_total total' + echo 'graph_printf %6.0lf' + + echo 'munin_info.label INFO' + print_warning munin_info + print_critical munin_info + echo 'munin_warning.label WARNING' + print_warning munin_warning + print_critical munin_warning + echo 'munin_error.label ERROR' + print_warning munin_error + print_critical munin_error + echo 'munin_fatal.label FATAL' + print_warning munin_fatal + print_critical munin_fatal +} + +# Print autoconfiguration hint +autoconf() { + if [ -r "${muninupdate}" ] && [ -x "$logtail_bin" ]; then + echo "yes" + else + echo "missing (${muninupdate} or (${logtail_bin})" + fi + exit +} + +############################## +# Main + +case "$1" in + config) + config + ;; + autoconf) + autoconf + ;; + *) + values + ;; +esac From 56cd2c926ca99e396a0b6c2ebee76394bb4de195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sz=C3=A9pe?= Date: Sun, 16 Oct 2016 23:03:16 +0000 Subject: [PATCH 2/3] Make munin_events POSIX compatible --- plugins/munin/munin_events | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/munin/munin_events b/plugins/munin/munin_events index 121f1695..26498de3 100755 --- a/plugins/munin/munin_events +++ b/plugins/munin/munin_events @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # -*- sh -*- : <<=cut @@ -39,7 +39,7 @@ INFO, WARNING, ERROR, FATAL. =head1 VERSION - 1.2.20160514 + 1.2.20161017 =head1 AUTHOR @@ -55,7 +55,8 @@ GPLv2 ############################## # Includes -. $MUNIN_LIBDIR/plugins/plugin.sh +# shellcheck disable=SC1090 +. "$MUNIN_LIBDIR/plugins/plugin.sh" ############################## # Configurable variables @@ -67,12 +68,11 @@ logtail_bin=${logtail_bin:-/usr/sbin/logtail2} # Print one value do_value() { - local FIELD="$1" - local EVENT_LABEL="$2" - local EVENT_COUNT - + FIELD="$1" + EVENT_LABEL="$2" EVENT_COUNT="$("$logtail_bin" -t "$muninupdate" 2> /dev/null | grep -c "^[0-9/: ]\{19\} \[${EVENT_LABEL}\]")" - if ! [ -z "${EVENT_COUNT//[0-9]/}" ]; then + + if ! [ -z "$(echo "$EVENT_COUNT" | sed 's|[0-9]\+||')" ]; then echo "Cannot determine event count" 1>&2 exit 10 fi @@ -87,7 +87,7 @@ values() { do_value 'munin_error' 'ERROR' do_value 'munin_fatal' 'FATAL' # Set offset - "$logtail_bin" "$muninupdate" &> /dev/null + "$logtail_bin" "$muninupdate" > /dev/null 1>&2 chmod 640 "${muninupdate}.offset" } From e7bcfec037cd2f17fcd82e9e381ae36ef972159f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Sz=C3=A9pe?= Date: Sat, 22 Oct 2016 18:44:20 +0000 Subject: [PATCH 3/3] Modify munin_events following intrustions from @sumpfralle --- plugins/munin/munin_events | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/munin/munin_events b/plugins/munin/munin_events index 26498de3..2a355bd9 100755 --- a/plugins/munin/munin_events +++ b/plugins/munin/munin_events @@ -39,7 +39,7 @@ INFO, WARNING, ERROR, FATAL. =head1 VERSION - 1.2.20161017 + 1.2.20160514 =head1 AUTHOR @@ -70,9 +70,9 @@ logtail_bin=${logtail_bin:-/usr/sbin/logtail2} do_value() { FIELD="$1" EVENT_LABEL="$2" - EVENT_COUNT="$("$logtail_bin" -t "$muninupdate" 2> /dev/null | grep -c "^[0-9/: ]\{19\} \[${EVENT_LABEL}\]")" - if ! [ -z "$(echo "$EVENT_COUNT" | sed 's|[0-9]\+||')" ]; then + EVENT_COUNT="$("$logtail_bin" -t "$muninupdate" 2> /dev/null | grep -c "^[0-9/: ]\{19\} \[${EVENT_LABEL}\]")" + if echo "$EVENT_COUNT" | grep -q "[^0-9]"; then echo "Cannot determine event count" 1>&2 exit 10 fi