Skip to main content

CoreDNS

Plugin: go.d.plugin Module: coredns

Overview​

This collector monitors CoreDNS instances.

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.

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 CoreDNS instance​

These metrics refer to the entire monitored application.

This scope has no labels.

Metrics:

MetricDimensionsUnit
coredns.dns_request_count_totalrequestsrequests/s
coredns.dns_responses_count_totalresponsesresponses/s
coredns.dns_request_count_total_per_statusprocessed, droppedrequests/s
coredns.dns_no_matching_zone_dropped_totaldroppedrequests/s
coredns.dns_panic_count_totalpanicspanics/s
coredns.dns_requests_count_total_per_protoudp, tcprequests/s
coredns.dns_requests_count_total_per_ip_familyv4, v6requests/s
coredns.dns_requests_count_total_per_per_typea, aaaa, mx, soa, cname, ptr, txt, ns, ds, dnskey, rrsig, nsec, nsec3, ixfr, any, otherrequests/s
coredns.dns_responses_count_total_per_rcodenoerror, formerr, servfail, nxdomain, notimp, refused, yxdomain, yxrrset, nxrrset, notauth, notzone, badsig, badkey, badtime, badmode, badname, badalg, badtrunc, badcookie, otherresponses/s

Per server​

These metrics refer to the DNS server.

Labels:

LabelDescription
server_nameServer name.

Metrics:

MetricDimensionsUnit
coredns.server_dns_request_count_totalrequestsrequests/s
coredns.server_dns_responses_count_totalresponsesresponses/s
coredns.server_request_count_total_per_statusprocessed, droppedrequests/s
coredns.server_requests_count_total_per_protoudp, tcprequests/s
coredns.server_requests_count_total_per_ip_familyv4, v6requests/s
coredns.server_requests_count_total_per_per_typea, aaaa, mx, soa, cname, ptr, txt, ns, ds, dnskey, rrsig, nsec, nsec3, ixfr, any, otherrequests/s
coredns.server_responses_count_total_per_rcodenoerror, formerr, servfail, nxdomain, notimp, refused, yxdomain, yxrrset, nxrrset, notauth, notzone, badsig, badkey, badtime, badmode, badname, badalg, badtrunc, badcookie, otherresponses/s

Per zone​

These metrics refer to the DNS zone.

Labels:

LabelDescription
zone_nameZone name.

Metrics:

MetricDimensionsUnit
coredns.zone_dns_request_count_totalrequestsrequests/s
coredns.zone_dns_responses_count_totalresponsesresponses/s
coredns.zone_requests_count_total_per_protoudp, tcprequests/s
coredns.zone_requests_count_total_per_ip_familyv4, v6requests/s
coredns.zone_requests_count_total_per_per_typea, aaaa, mx, soa, cname, ptr, txt, ns, ds, dnskey, rrsig, nsec, nsec3, ixfr, any, otherrequests/s
coredns.zone_responses_count_total_per_rcodenoerror, formerr, servfail, nxdomain, notimp, refused, yxdomain, yxrrset, nxrrset, notauth, notzone, badsig, badkey, badtime, badmode, badname, badalg, badtrunc, badcookie, otherresponses/s

Alerts​

There are no alerts configured by default for this integration.

Setup​

Prerequisites​

No action required.

Configuration​

File​

The configuration file name for this integration is go.d/coredns.conf.

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/coredns.conf

Options​

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

All options
NameDescriptionDefaultRequired
update_everyData collection frequency.1no
autodetection_retryRecheck interval in seconds. Zero means no recheck will be scheduled.0no
urlServer URL.http://127.0.0.1:9153/metricsyes
per_server_statsServer filter.no
per_zone_statsZone filter.no
usernameUsername for basic HTTP authentication.no
passwordPassword for basic HTTP authentication.no
proxy_urlProxy URL.no
proxy_usernameUsername for proxy basic HTTP authentication.no
proxy_passwordPassword for proxy basic HTTP authentication.no
timeoutHTTP request timeout.2no
methodHTTP request method.GETno
bodyHTTP request body.no
headersHTTP request headers.no
not_follow_redirectsRedirect handling policy. Controls whether the client follows redirects.nono
tls_skip_verifyServer certificate chain and hostname validation policy. Controls whether the client performs this check.nono
tls_caCertification authority that the client uses when verifying the server's certificates.no
tls_certClient tls certificate.no
tls_keyClient tls key.no
per_server_stats​

Metrics of servers matching the selector will be collected.

  • Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)
  • Pattern syntax: matcher.
  • Syntax:
per_server_stats:
includes:
- pattern1
- pattern2
excludes:
- pattern3
- pattern4
per_zone_stats​

Metrics of zones matching the selector will be collected.

  • Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)
  • Pattern syntax: matcher.
  • Syntax:
per_zone_stats:
includes:
- pattern1
- pattern2
excludes:
- pattern3
- pattern4

Examples​

Basic​

An example configuration.

Config
jobs:
- name: local
url: http://127.0.0.1:9153/metrics

Basic HTTP auth​

Local server with basic HTTP authentication.

Config
jobs:
- name: local
url: http://127.0.0.1:9153/metrics
username: foo
password: bar

Multi-instance​

Note: When you define multiple jobs, their names must be unique.

Collecting metrics from local and remote instances.

Config
jobs:
- name: local
url: http://127.0.0.1:9153/metrics

- name: remote
url: http://203.0.113.10:9153/metrics

Troubleshooting​

Debug Mode​

To troubleshoot issues with the coredns 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 coredns

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