Index of /code/djbdns-stats
Name Last modified Size Description
Parent Directory 20-Aug-2008 18:07 -
Artistic 03-Feb-2007 17:22 6k
ChangeLog 11-Sep-2007 19:15 1k
contrib/ 20-Sep-2007 14:27 -
djbdns-stats-current..> 29-Jul-2008 12:35 8k GZIP compressed tar ar>
dnslog.pl 11-Sep-2007 19:00 1k
dnsstats.pl 12-Sep-2007 00:07 4k
# djbdns-stats v1.1
# Function: keep stats on tinydns and dnscache.
# 20070912 00:01 (GMT-05:00)
# Jeremy Kister - http://jeremy.kister.net/
This utility is similar to many existing djbdns graphing packages,
except that it's much leaner. No code was plucked from any other
authors.
I wanted this leaness because both my authoritative and recursive name
servers run a lot of queries, and didn't want to start running into
blocking/performance problems. The stats code does not pretty any
logs; we can save those CPU cycles and only pretty them while we're
looking at them (via piping to the included dnslog.pl)
Excluding performance differences, this code is different from existing
log analysis packages in the following ways:
* very friendly to cacti/cricket via Net-SNMP
* dnscache RR information (instead of just "total queries")
* dnscache cache effectiveness information
* configurable stats_file
(useful if you have multiple dnscache instances on the same box)
* more RRs recognized for tinydns (and dnscache)
(such as TXT, NAPTR, A6, IXFR, AXFR)
* lame queries recognized for tinydns
(i.e. when a domain is pointing to your server, but you dont have
the domain configured in your data file)
* Format Errors recognized for tinydns
(i.e. a request for data outside the Internet class)
* Not Implemented recognized for tinydns
(i.e. a recursive query request)
Note:
Using perl 5.8.0, I've seen dnsstats.pl crash while trying to write
to the stats file -- apparently there is something wrong with 5.8.0's
interpretation of $SIG{ALRM}. upgrading to 5.8.6 fixes it.
dnsstats.pl Usage:
--log tee from STDIN to command
--tinydns set up for a tinydns log input
--dnscache set up for a dnscache log input
--cricket create stats file for cricket (1 rr per line)
--cacti create stats file for cacti (RR1:VALUE1 RR2:VALUE2 [...])
--stats_file where to put the stats file to be read via SNMP
--tmp_stats_file where to put the tmp stats file
(must be on same slice as stats_file)
(default: [stats_file].tmp)
######################################################################
install the scripts
cp dnsstats.pl /usr/local/script
chmod ugo+x /usr/local/script/dnsstats.pl
cp dnslog.pl /usr/local/script
chmod ugo+x /usr/local/script/dnslog.pl
######################################################################
tinydns interaction:
mkdir -p /etc/tinydns/stats/
chown dnslog /etc/tinydns/stats/
cp contrib/daemontools/run-tinydns /service/tinydns/log/run
chmod u+x /service/tinydns/log/run
######################################################################
dnscache interaction:
mkdir -p /etc/dnscache/stats
chown dnslog /etc/dnscache/stats/
if you want to log everything normally (rather wasteful i/o):
cp contrib/daemontools/run-dnscache /service/dnscache/log/run
otherwise, to log only interesting stuff:
cp contrib/daemontools/run-dnscache-lean_logging /service/dnscache/log/run
make the run script executable:
chmod u+x /service/dnscache/log/run
######################################################################
add the following lines to the bottom of your /usr/local/share/snmp/snmpd.conf:
exec .1.3.6.1.4.1.18689.0.1 dnscache-stats /bin/cat /etc/dnscache/stats/stats_file
exec .1.3.6.1.4.1.18689.1.2 tinydns-stats /bin/cat /etc/tinydns/stats/stats_file
Note:
if you have multiple instances of dnscache on the same host, you can
set up instances -- your snmpd.conf:
exec .1.3.6.1.4.1.18689.0.1 dnscache-stats /bin/cat /etc/dnscache/10.0.0.10/stats/stats_file
exec .1.3.6.1.4.1.18689.0.2 dnscache-stats /bin/cat /etc/dnscache/192.168.3.3/stats/stats_file
send a HUP to snmp, and you're set. You might have to change 'exec'
to 'extend' and modify the OIDs depending on your net-snmp version.
Take a look in the contrib/ directory, where you can find a couple
cricket Defaults files.