Skip to content

asjoyner/dnsprobe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This package is a dns probe, written in Go, to measure the performance of a set
of DNS slaves.  It was written to gather data for a talk given to the Triangle
Linux Users' Group on October 10th, 2013.  An abstract of the talk, and a link
to the YouTube video are available:
http://www.trilug.org/2013-10-10/dns

It functions by polling a single master for a given TXT record, the contents of
which it inteprets as seconds since epoch.  It then reads a configuration file
for a list of slaves, polls each of them in parallel for the same TXT record,
and then writes a log file for each slave describing how long it took to query
them, and how far "behind" the master they were, based on the value of the TXT
record.

If all the right bits are available an in place for 'git' to work, it will
periodically sync the data to a remote github instance, to protect against data
loss in the event of probe failure.  It also syncs down the same repository,
which has the convenient side effect of ensuring that each probe has a complete
view of all the probes configured the same way.  Note that the git history, and
the .git directory in particular, may grow without bound.  Use caution.

A real life example of such a repository is available for perusal here:
https://github.com/asjoyner/dnsprobe-data

It also starts an http server (listening on 127.0.0.1:8080 by default) which
will serve graphical representations of the logged data.  Note that those
graphical representations will probably work great for a few days worth of
data, possibly a week or two, but may eat your browser with a month when the
slave log files contain a month or more of data.

Building this package depends on Go 1.1 (for bufio.Scanner) and a bit of
additional code, available at http://github.com/miekg/dns.  To install the
dependent package:
1) Set a reasonable GOPATH, eg. $ export GOPATH=${HOME}/gocode
2) make sure $GOPATH exists:    $ mkdir $GOPATH
3) fetch the code:              $ go get github.com/miekg/dns

About

A dnsprobe in Go, which compares various slaves receiving the same data from a master.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors