Skip to content

About

Grab your DNS logs, detect anomalies, and finally understand what's happening on your network. The missing piece between DNS servers and your data stack.

Topics

Resources

Contributing

Security policy

Stars

569 stars

Watchers

9 watching

Forks

Latest commit

Β 

History

1,563 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DNS-collector

release docker Go version Go tests Go coverage Go bench

What is DNS-collector?

DNS-collector is a lightweight tool that captures DNS queries and responses from your DNS servers, processes them intelligently, and sends clean data to your monitoring, analytics and security systems.

What it does:

  • Captures at scale: Ingests streams from BIND, PowerDNS, Unbound, etc., via high-speed DNStap protocol or live wire packet capture.
  • Filters & normalizes: Discards noise (health checks, internal probes, spam) at wire speed before reaching storage.
  • Enriches on-the-fly: Decorates records with GeoIP, ASN, threat intelligence, metadata, and custom tags.
  • Streams everywhere: Dispatches batched events to ClickHouse, Kafka, Loki, Elasticsearch, Syslog, Prometheus, and more.

Why DNS-collector?

The missing high-performance data collector between DNS servers and your SIEM/observability/analytics stack.

  • From Homelabs to Enterprises: High-performance DNS telemetry pipeline with a lightweight footprint for any scale of DNS infrastructure (BIND, PowerDNS, Unbound, etc.)
  • DNS-Native & Edge Processing: Understands EDNS, query types, latency tracking, and anonymizes user IPs before storage.
  • Flexible outputs: Files, syslog, databases, monitoring tools and more...
  • Production ready: Used in real networks, tested with major DNS servers
  • Enhanced DNStap: TLS encryption, compression, and more metadata capabilities

πŸš€ Quick Start

Download the latest release and create a simple config.yml pipeline:

pipelines:
  - name: tap
    dnstap:
      listen-ip: 0.0.0.0
      listen-port: 6000
    transforms:
      normalize:
        qname-lowercase: true
    routing-policy:
      forward: [ console ]
  - name: console
    stdout:
      mode: text

Default setup listens on tcp/6000 for DNStap streams and outputs to stdout.

Run the collector:

./dnscollector -config config.yml

run

πŸ“š Documentation

Topic Description
πŸ“ Formats Supported output formats (text, JSON, PCAP, Jinja2, etc.)
πŸ”§ Configuration Complete config reference
πŸ“₯ Collectors Input sources (network packet sniffer, DNStap server, etc.)
πŸ“€ Loggers Output destinations (Kafka, Prometheus, syslog, Loki, etc.)
πŸ”„ Transformers Data enrichment options
🐳 Docker Container deployment
πŸ” Examples Ready-to-use configs
πŸ”— Sources & Sinks Integration with popular tools and DNS servers
⭐ Enhanced DNStap Enhanced DNSTap features
πŸ“Š Telemetry REST API and Prometheus metrics
⚑ Performance Tuning Performance tuning guide

πŸ‘₯ Contributions

Contributions are welcome! Check out:

🧰 Related Projects:

About

Grab your DNS logs, detect anomalies, and finally understand what's happening on your network. The missing piece between DNS servers and your data stack.

Topics

Resources

Contributing

Security policy

Stars

569 stars

Watchers

9 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages