---
title: Telegraf Documentation
description: Telegraf plugin for collecting metrics from DNS Query
url: https://docs.influxdata.com/telegraf/v1/input-plugins/dns_query/
estimated_tokens: 1484
product: Telegraf
version: v1
---

-   Telegraf v1.4.0+

# DNS Query Input Plugin

This plugin gathers information about DNS queries such as response time and result codes.

**Introduced in:** Telegraf v1.4.0 **Tags:** system, network **OS support:** all

## Global configuration options

Plugins support additional global and plugin configuration settings for tasks such as modifying metrics, tags, and fields, creating aliases, and configuring plugin ordering. See [CONFIGURATION.md](/telegraf/v1/configuration/#plugins) for more details.

## Configuration

```toml
# Query given DNS server and gives statistics
[[inputs.dns_query]]
  ## servers to query
  servers = ["8.8.8.8"]

  ## Network is the network protocol name.
  # network = "udp"

  ## Domains or subdomains to query.
  # domains = ["."]

  ## Query record type.
  ## Possible values: A, AAAA, CNAME, MX, NS, PTR, TXT, SOA, SPF, SRV.
  # record_type = "A"

  ## Dns server port.
  # port = 53

  ## Query timeout
  # timeout = "2s"

  ## Include the specified additional properties in the resulting metric.
  ## The following values are supported:
  ##    "first_ip" -- return IP of the first A and AAAA answer
  ##    "all_ips"  -- return IPs of all A and AAAA answers
  # include_fields = []
```

## Metrics

-   dns\_query
    -   tags:
        -   server
        -   domain
        -   record\_type
        -   result
        -   rcode
    -   fields:
        -   query\_time\_ms (float)
        -   result\_code (int, success = 0, timeout = 1, error = 2)
        -   rcode\_value (int)

## Rcode Descriptions

| rcode_value | rcode | Description |
| --- | --- | --- |
| 0 | NoError | No Error |
| 1 | FormErr | Format Error |
| 2 | ServFail | Server Failure |
| 3 | NXDomain | Non-Existent Domain |
| 4 | NotImp | Not Implemented |
| 5 | Refused | Query Refused |
| 6 | YXDomain | Name Exists when it should not |
| 7 | YXRRSet | RR Set Exists when it should not |
| 8 | NXRRSet | RR Set that should exist does not |
| 9 | NotAuth | Server Not Authoritative for zone |
| 10 | NotZone | Name not contained in zone |
| 16 | BADSIG | TSIG Signature Failure |
| 16 | BADVERS | Bad OPT Version |
| 17 | BADKEY | Key not recognized |
| 18 | BADTIME | Signature out of time window |
| 19 | BADMODE | Bad TKEY Mode |
| 20 | BADNAME | Duplicate key name |
| 21 | BADALG | Algorithm not supported |
| 22 | BADTRUNC | Bad Truncation |
| 23 | BADCOOKIE | Bad/missing Server Cookie |

## Example Output

```text
dns_query,domain=google.com,rcode=NOERROR,record_type=A,result=success,server=127.0.0.1 rcode_value=0i,result_code=0i,query_time_ms=0.13746 1550020750001000000
```

#### Related

-   [Configure plugins](/telegraf/v1/configure_plugins/)
-   [DNS Query Plugin Source](https://github.com/influxdata/telegraf/tree/v1.38.4/plugins/inputs/dns_query/README.md)
