From: Pieter Lexis Date: Wed, 15 Jul 2015 11:41:44 +0000 (+0200) Subject: Auth: add total bytes send statistic per AF X-Git-Tag: dnsdist-1.0.0-alpha1~248^2~58^2~5^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=50dbdbeb580a7a133a89207f7e9f427817662a7c;p=thirdparty%2Fpdns.git Auth: add total bytes send statistic per AF --- diff --git a/docs/markdown/authoritative/performance.md b/docs/markdown/authoritative/performance.md index 804db53d17..16a8720b66 100644 --- a/docs/markdown/authoritative/performance.md +++ b/docs/markdown/authoritative/performance.md @@ -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'. diff --git a/pdns/common_startup.cc b/pdns/common_startup.cc index fb0ade2fb0..d565133efe 100644 --- a/pdns/common_startup.cc +++ b/pdns/common_startup.cc @@ -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"); diff --git a/pdns/responsestats-auth.cc b/pdns/responsestats-auth.cc index f4180a9635..8af59d0398 100644 --- a/pdns/responsestats-auth.cc +++ b/pdns/responsestats-auth.cc @@ -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);