]> granicus.if.org Git - pdns/commitdiff
Auth: add total bytes send statistic per AF
authorPieter Lexis <pieter.lexis@powerdns.com>
Wed, 15 Jul 2015 11:41:44 +0000 (13:41 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Wed, 15 Jul 2015 19:58:46 +0000 (21:58 +0200)
docs/markdown/authoritative/performance.md
pdns/common_startup.cc
pdns/responsestats-auth.cc

index 804db53d17860ec0984cb8462e85740e2efc6fe2..16a8720b669e8bc96f6e3a80b998f7f2b9eb6b5a 100644 (file)
@@ -72,28 +72,32 @@ daemon.
 * `signature-cache-size`: Number of entries in the signature cache
 * `signatures`: Number of DNSSEC signatures created
 * `sys-msec`: Number of CPU miliseconds sent in system time
-* `tcp-answers`: Number of answers sent out over TCP
 * `tcp-answers-bytes`: Total number of answer bytes sent over TCP (since 4.0.0)
+* `tcp-answers`: Number of answers sent out over TCP
 * `tcp-queries`: Number of questions received over TCP
+* `tcp4-answers-bytes`: Total number of answer bytes sent over TCPv4 (since 4.0.0)
 * `tcp4-answers`: Number of answers sent out over TCPv4
 * `tcp4-queries`: Number of questions received over TCPv4
+* `tcp6-answers-bytes`: Total number of answer bytes sent over TCPv6 (since 4.0.0)
 * `tcp6-answers`: Number of answers sent out over TCPv6
 * `tcp6-queries`: Number of questions received over TCPv6
 * `timedout-questions`: Amount of packets that were dropped because they had to wait too long internally
-* `udp-answers`: Number of answers sent out over UDP
 * `udp-answers-bytes`: Total number of answer bytes sent over UDP
-* `udp-queries`: Number of questions received over UDP
+* `udp-answers`: Number of answers sent out over UDP
 * `udp-do-queries`: Number of queries received with the DO (DNSSEC OK) bit set
 * `udp-in-errors`: Number of packets, received faster than the OS could process them
 * `udp-noport-errors`: Number of UDP packets where an ICMP response was received that the remote port was not listening
+* `udp-queries`: Number of questions received over UDP
 * `udp-recvbuf-errors`: Number of errors caused in the UDP receive buffer
 * `udp-sndbuf-errors`: Number of errors caused in the UDP send buffer
-* `uptime`: Uptime in seconds of the daemon
-* `user-msec`: Number of milliseconds spend in CPU 'user' time
+* `udp4-answers-bytes`: Total number of answer bytes sent over UDPv4 (Since 4.0.0)
 * `udp4-answers`: Number of answers sent out over UDPv4
 * `udp4-queries`: Number of questions received over UDPv4
+* `udp6-answers-bytes`: Total number of answer bytes sent over UDPv6 (Since 4.0.0)
 * `udp6-answers`: Number of answers sent out over UDPv6
 * `udp6-queries`: Number of questions received over UDPv6
+* `uptime`: Uptime in seconds of the daemon
+* `user-msec`: Number of milliseconds spend in CPU 'user' time
 
 ### Ring buffers
 Besides counters, PDNS also maintains the ringbuffers. A ringbuffer records events, each new event gets a place in the buffer until it is full. When full, earlier entries get overwritten, hence the name 'ring'.
index fb0ade2fb01a17d6c3b8e5c8d3726e8d12c05bb0..d565133efec957e25afd016b1963ba661bb6b22a 100644 (file)
@@ -227,6 +227,8 @@ void declareStats(void)
   S.declare("udp-do-queries","Number of UDP queries received with DO bit");
   S.declare("udp-answers","Number of answers sent out over UDP");
   S.declare("udp-answers-bytes","Total size of answers sent out over UDP");
+  S.declare("udp4-answers-bytes","Total size of answers sent out over UDPv4");
+  S.declare("udp6-answers-bytes","Total size of answers sent out over UDPv6");
 
   S.declare("udp4-answers","Number of IPv4 answers sent out over UDP");
   S.declare("udp4-queries","Number of IPv4 UDP queries received");
@@ -242,6 +244,9 @@ void declareStats(void)
   S.declare("tcp-queries","Number of TCP queries received");
   S.declare("tcp-answers","Number of answers sent out over TCP");
   S.declare("tcp-answers-bytes","Total size of answers sent out over TCP");
+  S.declare("tcp4-answers-bytes","Total size of answers sent out over TCPv4");
+  S.declare("tcp6-answers-bytes","Total size of answers sent out over TCPv6");
+
   S.declare("tcp4-queries","Number of IPv4 TCP queries received");
   S.declare("tcp4-answers","Number of IPv4 answers sent out over TCP");
   
index f4180a9635fd6f9e4641b211d8a2170d8004e2cb..8af59d0398a51a643c8af1ea7bae3f4dcff5c0a3 100644 (file)
@@ -13,10 +13,14 @@ void ResponseStats::submitResponse(DNSPacket &p, bool udpOrTCP) {
   static AtomicCounter &udpnumanswered4=*S.getPointer("udp4-answers");
   static AtomicCounter &udpnumanswered6=*S.getPointer("udp6-answers");
   static AtomicCounter &udpbytesanswered=*S.getPointer("udp-answers-bytes");
+  static AtomicCounter &udpbytesanswered4=*S.getPointer("udp4-answers-bytes");
+  static AtomicCounter &udpbytesanswered6=*S.getPointer("udp6-answers-bytes");
   static AtomicCounter &tcpnumanswered=*S.getPointer("tcp-answers");
   static AtomicCounter &tcpnumanswered4=*S.getPointer("tcp4-answers");
   static AtomicCounter &tcpnumanswered6=*S.getPointer("tcp6-answers");
   static AtomicCounter &tcpbytesanswered=*S.getPointer("tcp-answers-bytes");
+  static AtomicCounter &tcpbytesanswered4=*S.getPointer("tcp4-answers-bytes");
+  static AtomicCounter &tcpbytesanswered6=*S.getPointer("tcp6-answers-bytes");
 
   if(p.d.aa) {
     if (p.d.rcode==RCode::NXDomain)
@@ -29,17 +33,23 @@ void ResponseStats::submitResponse(DNSPacket &p, bool udpOrTCP) {
   if (udpOrTCP) { // udp
     udpnumanswered++;
     udpbytesanswered+=buf.length();
-    if(p.d_remote.sin4.sin_family==AF_INET)
+    if(p.d_remote.sin4.sin_family==AF_INET) {
       udpnumanswered4++;
-    else
+      udpbytesanswered4+=buf.length();
+    } else {
       udpnumanswered6++;
+      udpbytesanswered6+=buf.length();
+    }
   } else { //tcp
     tcpnumanswered++;
     tcpbytesanswered+=buf.length();
-    if(p.d_remote.sin4.sin_family==AF_INET)
+    if(p.d_remote.sin4.sin_family==AF_INET) {
       tcpnumanswered4++;
-    else
+      tcpbytesanswered4+=buf.length();
+    } else {
       tcpnumanswered6++;
+      tcpbytesanswered6+=buf.length();
+    }
   }
 
   submitResponse(p.qtype.getCode(), buf.length(), udpOrTCP);