Skip to main content

DNS query

DNS query

Plugin: go.d.plugin Module: dns_query

Maintained by Netdata

Overview​

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.

Default Behavior​

Auto-Detection​

This integration doesn't support auto-detection.

Limits​

The default configuration for this integration does not impose any limits on data collection.

Performance Impact​

The default configuration for this integration is not expected to impose a significant performance impact on the system.

Setup​

You can configure the dns_query collector in two ways:

MethodBest forHow to
UIFast setup without editing filesGo to Nodes → Configure this node → Collectors → Jobs, search for dns_query, then click + to add a job.
FileIf 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.

Prerequisites​

No action required.

Configuration​

Options​

The following options can be defined globally: update_every, autodetection_retry.

All options
GroupOptionDescriptionDefaultRequired
Collectionupdate_everyData collection interval (seconds).1no
autodetection_retryAutodetection retry interval (seconds). Set 0 to disable.0no
TargetdomainsOne or more domains/subdomains to query. A random domain from the list is selected on each iteration.[]yes
serversDNS servers to query. If empty, servers from /etc/resolv.conf are used automatically.[]no
timeoutQuery timeout (seconds).2no
portDNS server port.53no
networkDNS query transport protocol. Options: udp, tcp, tcp-tls.udpno
DNS Queryrecord_typesDNS record types to query. Options: A, AAAA, CNAME, MX, NS, PTR, TXT, SOA, SPF, SRV.Ano
Virtual NodevnodeAssociates this data collection job with a Virtual Node.no

via UI​

Configure the dns_query collector from the Netdata web interface:

  1. Go to Nodes.
  2. Select the node where you want the dns_query data-collection job to run and click the ⚙ (Configure this node). That node will run the data collection.
  3. The Collectors → Jobs view opens by default.
  4. In the Search box, type dns_query (or scroll the list) to locate the dns_query collector.
  5. Click the + next to the dns_query collector to add a new job.
  6. Fill in the job fields, then click Test to verify the configuration and Submit to save.
    • Test runs the job with the provided settings and shows whether data can be collected.
    • If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.

via File​

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
Examples​
Specific DNS servers​

An example configuration using Google's public DNS servers.

Config
jobs:
- name: job1
record_types:
- A
- AAAA
domains:
- google.com
- github.com
- reddit.com
servers:
- 8.8.8.8
- 8.8.4.4

System DNS​

An example configuration using DNS servers from /etc/resolv.conf.

Config
jobs:
- name: job1
record_types:
- A
- AAAA
domains:
- google.com
- github.com
- reddit.com

Alerts​

The following alerts are available:

Alert nameOn metricDescription
dns_query_query_status dns_query.query_statusDNS request type ${label:record_type} to server ${label:server} is unsuccessful

Metrics​

Metrics grouped by scope.

The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.

Per server​

These metrics refer to the DNS server.

Labels:

LabelDescription
serverDNS server address.
networkNetwork protocol name (tcp, udp, tcp-tls).
record_typeDNS record type (e.g. A, AAAA, CNAME).

Metrics:

MetricDescriptionDimensionsUnit
dns_query.query_statusDNS Query Statussuccess, network_error, dns_errorstatus
dns_query.query_timeDNS Query Timequery_timeseconds

Troubleshooting​

Diagnostics​

Debug Mode​

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

Getting Logs​

If you're encountering problems with the dns_query collector, follow these steps to retrieve logs and identify potential issues:

  • Run the command specific to your system (systemd, non-systemd, or Docker container).
  • Examine the output for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.
System with systemd​

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
System without systemd​

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.

Docker Container​

If your Netdata runs in a Docker container named "netdata" (replace if different), use this command:

docker logs netdata 2>&1 | grep dns_query

Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.