]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
modules/stats: added NODATA tracking
authorMarek Vavruša <marek.vavrusa@nic.cz>
Thu, 3 Dec 2015 10:47:02 +0000 (11:47 +0100)
committerMarek Vavruša <marek.vavrusa@nic.cz>
Thu, 3 Dec 2015 10:47:02 +0000 (11:47 +0100)
modules/stats/README.rst
modules/stats/stats.c

index 04fb10617f192f45ad271a2873b59269df5bf670..88b2bf5f6616be7737d8c57f56f52e0a28d2e7a5 100644 (file)
@@ -86,6 +86,7 @@ Built-in statistics
 * ``answer.total`` - total number of answered queries
 * ``answer.cached`` - number of queries answered from cache
 * ``answer.noerror`` - number of **NOERROR** answers
+* ``answer.nodata`` - number of **NOERROR**, but empty answers
 * ``answer.nxdomain`` - number of **NXDOMAIN** answers
 * ``answer.servfail`` - number of **SERVFAIL** answers
 * ``answer.10ms`` - number of answers completed in 10ms
index ca411f74044986b412bf0aec770c5ca70902ad9e..11c1c8a33edccb3f52cfc12edb78c0564c9b0911 100644 (file)
@@ -42,7 +42,7 @@
 
 /** @cond internal Fixed-size map of predefined metrics. */
 #define CONST_METRICS(X) \
-       X(answer,total) X(answer,noerror) X(answer,nxdomain) X(answer,servfail) \
+       X(answer,total) X(answer,noerror) X(answer,nodata) X(answer,nxdomain) X(answer,servfail) \
        X(answer,cached) X(answer,10ms) X(answer,100ms) X(answer,1000ms) X(answer,slow) \
        X(query,edns) X(query,dnssec) \
        X(const,end)
@@ -86,7 +86,12 @@ static int collect_answer(struct stat_data *data, knot_pkt_t *pkt)
        stat_const_add(data, metric_answer_total, 1);
        /* Count per-rcode */
        switch(knot_wire_get_rcode(pkt->wire)) {
-       case KNOT_RCODE_NOERROR:  stat_const_add(data, metric_answer_noerror, 1); break;
+       case KNOT_RCODE_NOERROR:
+               if (knot_wire_get_ancount(pkt->wire) > 0)
+                       stat_const_add(data, metric_answer_noerror, 1);
+               else
+                       stat_const_add(data, metric_answer_nodata, 1);
+       break;
        case KNOT_RCODE_NXDOMAIN: stat_const_add(data, metric_answer_nxdomain, 1); break;
        case KNOT_RCODE_SERVFAIL: stat_const_add(data, metric_answer_servfail, 1); break;
        default: break;