Plugin: go.d.plugin Module: dns_query
This module monitors DNS query round-trip time (RTT).
This collector is supported on all platforms.
This collector supports collecting metrics from multiple instances of this integration, including remote instances.
This integration doesn’t support auto-detection.
The default configuration for this integration does not impose any limits on data collection.
The default configuration for this integration is not expected to impose a significant performance impact on the system.
You can configure the dns_query collector in two ways:
| Method | Best for | How to |
|---|---|---|
| UI | Fast setup without editing files | Go to Nodes → Configure this node → Collectors → Jobs, search for dns_query, then click + to add a job. |
| File | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit go.d/dns_query.conf and add a job. |
:::important
UI configuration requires paid Netdata Cloud plan.
:::
No action required.
The following options can be defined globally: update_every, autodetection_retry.
| Group | Option | Description | Default | Required |
|---|---|---|---|---|
| Collection | update_every | Data collection interval (seconds). | 1 | no |
| autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | |
| Target | domains | One or more domains/subdomains to query. A random domain from the list is selected on each iteration. | [] | yes |
| servers | DNS servers to query. If empty, servers from /etc/resolv.conf are used automatically. |
[] | no | |
| timeout | Query timeout (seconds). | 2 | no | |
| port | DNS server port. | 53 | no | |
| network | DNS query transport protocol. Options: udp, tcp, tcp-tls. |
udp | no | |
| DNS Query | record_types | DNS record types to query. Options: A, AAAA, CNAME, MX, NS, PTR, TXT, SOA, SPF, SRV. | A | no |
| Virtual Node | vnode | Associates this data collection job with a Virtual Node. | no |
Configure the dns_query collector from the Netdata web interface:
The configuration file name for this integration is go.d/dns_query.conf.
The file format is YAML. Generally, the structure is:
update_every: 1
autodetection_retry: 0
jobs:
- name: some_name1
- name: some_name2
You can edit the configuration file using the edit-config script from the
Netdata config directory.
cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config go.d/dns_query.conf
An example configuration using Google’s public DNS servers.
jobs:
- name: job1
record_types:
- A
- AAAA
domains:
- google.com
- github.com
- reddit.com
servers:
- 8.8.8.8
- 8.8.4.4
An example configuration using DNS servers from /etc/resolv.conf.
jobs:
- name: job1
record_types:
- A
- AAAA
domains:
- google.com
- github.com
- reddit.com
Metrics grouped by scope.
The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.
These metrics refer to the DNS server.
Labels:
| Label | Description |
|---|---|
| server | DNS server address. |
| network | Network protocol name (tcp, udp, tcp-tls). |
| record_type | DNS record type (e.g. A, AAAA, CNAME). |
Metrics:
| Metric | Dimensions | Unit |
|---|---|---|
| dns_query.query_status | success, network_error, dns_error | status |
| dns_query.query_time | query_time | seconds |
The following alerts are available:
| Alert name | On metric | Description |
|---|---|---|
| dns_query_query_status | dns_query.query_status | DNS request type ${label:record_type} to server ${label:server} is unsuccessful |
Important: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.
To troubleshoot issues with the dns_query collector, run the go.d.plugin with the debug option enabled. The output
should give you clues as to why the collector isn’t working.
Navigate to the plugins.d directory, usually at /usr/libexec/netdata/plugins.d/. If that’s not the case on
your system, open netdata.conf and look for the plugins setting under [directories].
cd /usr/libexec/netdata/plugins.d/
Switch to the netdata user.
sudo -u netdata -s
Run the go.d.plugin to debug the collector:
./go.d.plugin -d -m dns_query
To debug a specific job:
./go.d.plugin -d -m dns_query -j jobName
If you’re encountering problems with the dns_query collector, follow these steps to retrieve logs and identify potential issues:
Use the following command to view logs generated since the last Netdata service restart:
journalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep dns_query
Locate the collector log file, typically at /var/log/netdata/collector.log, and use grep to filter for collector’s name:
grep dns_query /var/log/netdata/collector.log
Note: This method shows logs from all restarts. Focus on the latest entries for troubleshooting current issues.
If your Netdata runs in a Docker container named “netdata” (replace if different), use this command:
docker logs netdata 2>&1 | grep dns_query
Want a personalised demo of Netdata for your use case?