#!/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