asjoyner/dnsprobe
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
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