From bc859e8f29ee3cf4b129db0136c39915d443d376 Mon Sep 17 00:00:00 2001 From: steckbrief Date: Sun, 28 Apr 2019 16:40:08 +0200 Subject: adds the DNS masq munin plugin --- dnsmasq-munin-plugin | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 dnsmasq-munin-plugin diff --git a/dnsmasq-munin-plugin b/dnsmasq-munin-plugin new file mode 100644 index 0000000..5dad33e --- /dev/null +++ b/dnsmasq-munin-plugin @@ -0,0 +1,111 @@ +#!/bin/bash +# -*- sh -*- + +: <<=cut + +=head1 NAME + +dnsmasq - Plugin to monitor dnsmasq queries + +=head1 APPLICABLE SYSTEMS + +All systems with "bash", "sed" and "dnsmasq" + +=head1 CONFIGURATION + +The following is the default configuration + + [dnsmasq] + env.logfile /var/log/dnsmasq/dnsmasq.log + +The user running this plugin needs read access to the +dnsmasq logfiles: + + [dnsmasq] + + user root + + =head1 INTERPRETATION + +This plugin shows a graph with the number of forwarded, cached and +blocked dns queries. + +=head1 MAGIC MARKERS + + #%# family=auto + #%# capabilities=autoconf + +=head1 VERSION + 0.0.1 + +=head1 BUGS + +=head1 AUTHOR + +Me, myself and I +Based on dnsmasq plugin by: notracking +Based on fail2ban plugin by: Stig Sandbeck Mathisen + +=head1 LICENSE + +GPLv2 + +=cut + + +############################## +# Configurable variables +logfile=${logfile:-/var/log/dnsmasq/dnsmasq.log} + +# Print the munin values +values() { + echo -n "dnsmasq_forwarded.value " + cat ${logfile} | sed -n "/^$(date --date='5 minutes ago' '+%b %_d %H:%M')/,\$p" | grep ": forwarded" | wc -l + + echo -n "dnsmasq_cached.value " + cat ${logfile} | sed -n "/^$(date --date='5 minutes ago' '+%b %_d %H:%M')/,\$p" | grep ": cached" | wc -l + + echo -n "dnsmasq_blocked.value " + cat ${logfile} | sed -n "/^$(date --date='5 minutes ago' '+%b %_d %H:%M')/,\$p" | grep "/block.list" | wc -l +} + +# Print the munin config +config() { + echo 'graph_title DNS queries' + echo 'graph_info This graph shows the number of queries resolved by dnsmasq' + echo 'graph_category network' + echo 'graph_vlabel Number of queries' + + echo 'graph_args --base 1000 -l 0' + echo 'graph_total total' + + echo 'dnsmasq_forwarded.label forwarded' + echo 'dnsmasq_cached.label cached' + echo 'dnsmasq_blocked.label blocked' +} + +# Print autoconfiguration hint +autoconf() { + if [ -f ${logfile} ] + then + echo "yes" + else + echo "no (${logfile} not found)" + fi + exit +} + +############################## +# Main + +case $1 in + config) + config + ;; + autoconf) + autoconf + ;; + *) + values + ;; +esac \ No newline at end of file -- cgit v1.2.3