For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/integrations/kube-dns.md. A documentation index is available at /llms.txt.

Kube DNS

Supported OS Linux Windows Mac OS

Integration version7.4.0

To find out if this integration is available in your organization, see your Datadog Integrations page or ask your organization administrator.

To initiate an exception request to enable this integration for your organization, email support@ddog-gov.com.

Overview

Get metrics from kube-dns service in real time to:

  • Visualize and monitor DNS metrics collected with the Kubernetes’ kube-dns addon through Prometheus

See https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns for more information about kube-dns.

Minimum Agent version: 6.0.0

Setup

Installation

The kube-dns check is included in the Datadog Agent package, so you don’t need to install anything else on your servers.

Configuration

Edit the kube_dns.d/conf.yaml file, in the conf.d/ folder at the root of your Agent’s configuration directory. See the sample kube_dns.d/conf.yaml for all available configuration options.

Using with service discovery

If you are using one Agent pod per Kubernetes worker node, use the following annotations on your kube-dns pod to retrieve the data automatically.

apiVersion: v1
kind: Pod
metadata:
  annotations:
    service-discovery.datadoghq.com/kubedns.check_names: '["kube_dns"]'
    service-discovery.datadoghq.com/kubedns.init_configs: '[{}]'
    service-discovery.datadoghq.com/kubedns.instances: '[[{"prometheus_endpoint":"http://%%host%%:10055/metrics", "tags":["dns-pod:%%host%%"]}]]'

Remarks:

  • The “dns-pod” tag tracks the target DNS pod IP. The other tags are related to the dd-agent that is polling the information using the service discovery.
  • The service discovery annotations need to be done on the pod. In case of a deployment, add the annotations to the metadata of the template’s spec.

Validation

Run the Agent’s status subcommand and look for kube_dns under the Checks section.

Data Collected

Metrics

kubedns.cachemiss_count
(gauge)
Number of DNS requests resulting in a cache miss.
Shown as request
kubedns.cachemiss_count.count
(count)
Instant number of DNS requests made resulting in a cache miss.
Shown as request
kubedns.error_count
(gauge)
Number of DNS requests resulting in an error.
Shown as error
kubedns.error_count.count
(count)
Instant number of DNS requests made resulting in an error.
Shown as error
kubedns.request_count
(gauge)
Total number of DNS requests made.
Shown as request
kubedns.request_count.count
(count)
Instant number of DNS requests made.
Shown as request
kubedns.request_duration.seconds.count
(gauge)
Number of requests on which the kubedns.request_duration.seconds.sum metric is evaluated.
Shown as request
kubedns.request_duration.seconds.sum
(gauge)
Time (in seconds) each request took to resolve.
Shown as second
kubedns.response_size.bytes.count
(gauge)
Number of responses on which the kubedns.response_size.bytes.sum metric is evaluated.
Shown as response
kubedns.response_size.bytes.sum
(gauge)
Size of the returns response in bytes.
Shown as byte

Events

The kube-dns check does not include any events.

Service Checks

kubedns.up

Returns CRITICAL if Kube DNS is not healthy.

Statuses: ok, critical

Troubleshooting

Need help? Contact Datadog support.