DNS-collector
acts as a passive high speed ingestor with pipelining support for your DNS logs, written in Golang. It allows enhancing your DNS logs by adding metadata, extracting usage patterns, and facilitating security analysis.
Additionally, DNS-collector also support
Features
-
Pipelining
The DNS traffic can be collected and aggregated from simultaneously sources like DNStap streams, network interface or log files and relays it to multiple other listeners
You can also applied transformations on it like (traffic filtering, user privacy, ...).
-
Collectors & Loggers
- Listen for logging traffic with streaming network protocols
- Live capture on a network interface
- Read text or binary files as input
- Local storage of your DNS logs in text or binary formats
Stdout
console in text or binary output
File
with automatic rotation and compression
- Provide metrics and API
- Send to remote host with generic transport protocol
- Send to various sinks
- Send to security tools
-
Transformers
Get Started
Download the latest release
binary and start the DNS-collector with the provided configuration file. The default configuration listens on tcp/6000
for a DNSTap stream and DNS logs are printed on standard output.
./go-dnscollector -config config.yml
If you prefer run it from docker, follow this guide.
Configuration
The configuration of DNS-collector is done through a file named config.yml
. When the DNS-collector starts, it will look for the config.yml from the current working directory.
See the full configuration guide for more details.
Run the DNS-collector in dry mode to verify the configuration.
./go-dnscollector -config config.yml -test-config
INFO: 2023/12/24 14:43:29.043730 main - config OK!
Usage examples
The _examples
folder from documentation contains a number of various configurations to get you started with the DNS-collector in different ways.
The _integration
folder contains DNS-collector configuration
files and docker compose
examples for popular tools:
DNS Telemetry
DNS-collector
provides telemetry capabilities with the Prometheus logger,
you can easily monitor key performance indicators and detect anomalies in real-time.
Tuning may be necessary to deal with a large traffic loads.
Please refer to the performance tuning guide if needed.
Performance metrics are available to evaluate the efficiency of your pipelines. These metrics allow you to track:
- The number of incoming and outgoing packets processed by each worker
- The number of packets matching the policies applied (forwarded, dropped)
- The number of "discarded" packets
- Memory consumption
- CPU consumption
A build-in dashboard is available for monitoring these metrics.
Contributing
See the development guide for more information on how to build it yourself.