# dns collector

The dns collector exposes metrics about the DNS server

|||
-|-|-
Metric name prefix  | `dns` |
Classes             | [`Win32_PerfRawData_DNS_DNS`](https://technet.microsoft.com/en-us/library/cc977686.aspx) |
Enabled by default | Yes |
Metric name prefix (error stats) | `windows_dns` |
Classes             | [`MicrosoftDNS_Statistic`](https://learn.microsoft.com/en-us/windows/win32/dns/dns-wmi-provider-overview) |
Enabled by default (error stats)? | Yes |

## Flags

Name | Description
-----|------------
`collector.dns.enabled` | Comma-separated list of collectors to use. Available collectors: `metrics`, `wmi_stats`. Defaults to all collectors if not specified.

## Metrics

Name | Description | Type | Labels
-----|-------------|------|-------
`windows_dns_zone_transfer_requests_received_total` | _Not yet documented_ | counter | `qtype`
`windows_dns_zone_transfer_requests_sent_total` | _Not yet documented_ | counter | `qtype`
`windows_dns_zone_transfer_response_received_total` | _Not yet documented_ | counter | `qtype`
`windows_dns_zone_transfer_success_received_total` | _Not yet documented_ | counter | `qtype`, `protocol`
`windows_dns_zone_transfer_success_sent_total` | _Not yet documented_ | counter | `qtype`
`windows_dns_zone_transfer_failures_total` | _Not yet documented_ | counter | None
`windows_dns_memory_used_bytes_total` | _Not yet documented_ | gauge | `area`
`windows_dns_dynamic_updates_queued` | _Not yet documented_ | gauge | None
`windows_dns_dynamic_updates_received_total` | _Not yet documented_ | counter | `operation`
`windows_dns_dynamic_updates_failures_total` | _Not yet documented_ | counter | `reason`
`windows_dns_notify_received_total` | _Not yet documented_ | counter | None
`windows_dns_notify_sent_total` | _Not yet documented_ | counter | None
`windows_dns_secure_update_failures_total` | _Not yet documented_ | counter | None
`windows_dns_secure_update_received_total` | _Not yet documented_ | counter | None
`windows_dns_queries_total` | _Not yet documented_ | counter | `protocol`
`windows_dns_responses_total` | _Not yet documented_ | counter | `protocol`
`windows_dns_recursive_queries_total` | _Not yet documented_ | counter | None
`windows_dns_recursive_query_failures_total` | _Not yet documented_ | counter | None
`windows_dns_recursive_query_send_timeouts_total` | _Not yet documented_ | counter | None
`windows_dns_wins_queries_total` | _Not yet documented_ | counter | `direction`
`windows_dns_wins_responses_total` | _Not yet documented_ | counter | `direction`
`windows_dns_unmatched_responses_total` | _Not yet documented_ | counter | None
`windows_dns_error_stats_total` | DNS error statistics from MicrosoftDNS_Statistic | counter | `name`, `collection_name`, `dns_server`

### Sub-collectors

The DNS collector is split into two sub-collectors:

1. `metrics` - Collects standard DNS performance metrics using PDH (Performance Data Helper)
2. `wmi_stats` - Collects DNS error statistics from the MicrosoftDNS_Statistic WMI class

By default, both sub-collectors are enabled. You can enable specific sub-collectors using the `collector.dns.enabled` flag.

### Example Usage

To enable only DNS error statistics collection:
```powershell
windows_exporter.exe --collector.dns.enabled=wmi_stats
```

To enable only standard DNS metrics:
```powershell
windows_exporter.exe --collector.dns.enabled=metrics
```

To enable both (default behavior):
```powershell
windows_exporter.exe --collector.dns.enabled=metrics,wmi_stats
```

### Example metric
```
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="BadKey"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="BadSig"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="BadTime"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="FormError"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="Max"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="NoError"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="NotAuth"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="NotImpl"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="NotZone"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="NxDomain"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="NxRRSet"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="Refused"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="ServFail"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="UnknownError"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="YxDomain"} 0
windows_dns_wmi_stats_total{collection_name="Error Stats",dns_server="EC2AMAZ-5NNM8M1",name="YxRRSet"} 0
```

## Useful queries
_This collector does not yet have any useful queries added, we would appreciate your help adding them!_

## Alerting examples
_This collector does not yet have alerting examples, we would appreciate your help adding them!_
