I l@ve RuBoard

### 5.15 Measuring Queries for Records in Particular Zones

#### 5.15.1 Problem

You want to measure the number of queries a name server receives for records in zones it is authoritative for.

#### 5.15.2 Solution

Use the BIND 9 zone-statistics substatement. To measure the statistics for just a few zones, use zone-statistics as a zone substatement. For example:

```zone "foo.example" {
type slave;
masters { 192.168.0.1; };
file "bak.foo.example";
zone-statistics yes;
};```

To keep statistics for all zones, use zone-statistics as an options substatement:

```options {
directory "/var/named";
zone-statistics yes;
};```

Then, to dump the zone's statistics, use rndc stats. The statistics are written to the file named.stats in the name server's working directory, by default. Here's a short sample of a named.stats file:

```+++ Statistics Dump +++ (1020821387)
success 37
referral 0
nxrrset 60
nxdomain 9
recursion 12
failure 6
success 6 foo.example
referral 0 foo.example
nxrrset 3 foo.example
nxdomain 1 foo.example
recursion 0 foo.example
failure 0 foo.example
--- Statistics Dump --- (1020821387)```

The first six counters are global: total counts for the name server since it started. The next six are specific to the foo.example zone. The sum of the zone-specific values for success, nxrrset, and nxdomain is the total number of queries for records in the zone. (nxrrset is a count of queries for types of records that didn't exist, while nxdomain counts queries for domain names that didn't exist).

#### 5.15.3 Discussion

There's no mechanism comparable to zone-statistics in BIND 8. While you could turn on query logging and extrapolate the same statistics, the overhead would be considerable.

Speaking of overhead, the zone statistics mechanism does use a little extra memory on the name server to store the counters.