Statistics Collection
Enabling Statistics
Statistics support must be enabled at compile time:Collecting Statistics
Get current statistics:Periodic Statistics
Dump statistics periodically:nsd.conf:
Statistics Reference
Query Counters
num.queries
Total number of queries received (UDP + TCP + TLS).serverX.queries
Number of queries handled by server process X.server-count in config.
Time Statistics
time.boot
Uptime in seconds since server started (with fractional seconds).time.elapsed
Time since last stats report in seconds (with fractional seconds).Memory and Disk
size.db.disk
Size ofnsd.db on disk in bytes.
size.db.mem
Size of DNS database in memory in bytes.size.xfrd.mem
Memory used for zone transfers and notifies in xfrd process (excludes TSIG data), in bytes.size.config.disk
Size of zonelist file on disk (excludesnsd.conf size), in bytes.
size.config.mem
Size of config data in memory, kept twice (in server and xfrd process), in bytes.Query Type Counters
num.type.X
Number of queries with this query type.A- IPv4 addressAAAA- IPv6 addressNS- Name serverMX- Mail exchangeSOA- Start of authorityTXT- Text recordCNAME- Canonical namePTR- Pointer record
Opcode Counters
num.opcode.X
Number of queries with this opcode.Query Class Counters
num.class.X
Number of queries with this query class.Response Code Counters
num.rcode.X
Number of answers that carried this return code.NOERROR- Successful queryNXDOMAIN- Domain doesn’t existSERVFAIL- Server failureREFUSED- Query refusedFORMERR- Format error
Protocol Counters
num.udp / num.udp6
Number of queries over UDP IPv4 / IPv6.num.tcp / num.tcp6
Number of connections over TCP IPv4 / IPv6.num.tls / num.tls6
Number of connections over TLS IPv4 / IPv6 (not part of TCP counters).EDNS Counters
num.edns
Number of queries with EDNS OPT.num.ednserr
Number of queries which failed EDNS parse.Special Counters
num.answer_wo_aa
Number of answers with NOERROR rcode and without AA flag (includes referrals).num.rxerr
Number of queries for which receive failed.num.txerr
Number of answers for which transmit failed.num.raxfr
Number of AXFR requests from clients (that got served with reply).num.rixfr
Number of IXFR requests from clients (that got served with reply).num.truncated
Number of answers with TC (truncated) flag set.num.dropped
Number of queries dropped because they failed sanity check.Zone Counters
zone.primary / zone.master
Number of primary zones served (zones with norequest-xfr entries).
zone.master is output for backwards compatibility.
zone.secondary / zone.slave
Number of secondary zones served (zones withrequest-xfr entries).
zone.slave is output for backwards compatibility.
Parsing Statistics
Statistics output is designed for easy parsing:Extract Specific Metric
Parse with awk
Monitor Changes
Calculate Query Rate
Health Checks
Process Status
Check if NSD is running:0- Running1- Error3- Not running
Zone Status
Check all zones:Query Test
Test DNS resolution:Monitoring with Munin
NSD includes a Munin plugin in the distribution: Location:contrib/nsd_munin_
GitHub: https://github.com/NLnetLabs/nsd/blob/master/contrib/nsd_munin_
The plugin uses nsd-control stats to graph:
- Query rates
- Query types
- Response codes
- Memory usage
Installation
-
Copy the plugin:
-
Create symlinks:
-
Configure access:
-
Restart munin-node:
Monitoring with Prometheus
Export NSD statistics to Prometheus format:nsd_exporter
Example Prometheus exporter script:http://localhost:9167/metrics.
Zone Statistics
Per-zone statistics (optional feature):Alerting
High Query Rate
Expired Zones
High Error Rate
Memory Usage
Performance Metrics
Query Rate
Calculate queries per second:Cache Hit Ratio
NSD is authoritative only (no cache), but you can monitor answer types:Zone Transfer Performance
Monitor transfer times via zonestatus:System Monitoring
CPU Usage
Memory Usage
File Descriptors
Network Connections
See Also
- Logging - Log configuration
- Control Utility - Runtime commands
- Zone Transfers - Zone status monitoring