Skip to content

Getting started

dns-monitor is a single Go binary plus a config.yaml. It resolves the DNS records you’ve declared on a fixed interval, stores the history in SQLite, and serves a dashboard on :8080.

  • Go 1.25+ (for building from source), or
  • Docker (to run the published image)
Terminal window
git clone https://github.com/zachbroad/dns-monitor
cd dns-monitor
go run ./cmd/dns-monitor

Open http://localhost:8080.

Terminal window
docker run --rm -p 8080:8080 \
-v dns-monitor-data:/data \
ghcr.io/zachbroad/dns-monitor:latest

The published image bundles the default config.yaml. To use your own, mount it over /app/config.yaml and point db_path at the /data volume — see the Docker guide.

Edit config.yaml:

interval: 30s
listen: ":8080"
db_path: "dns-monitor.db"
targets:
- name: example-a
host: example.com
type: A
expect:
- 93.184.216.34

Restart the binary. Within interval, the dashboard will show one row per target with the latest resolved answer and its latency. If the resolved set drifts from expect, the row is flagged.

dns-monitor dashboard

Clicking a target name opens a detail page with its latest answer, uptime / latency stats, and history:

Target detail page