From: Remi Gacogne Date: Mon, 6 Apr 2020 13:05:37 +0000 (+0200) Subject: auth: Add a new 'backend-queries' metric X-Git-Tag: auth-4.4.0-alpha2~8^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d04143d5311b334d5c1362dbc86dc41b08980b04;p=thirdparty%2Fpdns.git auth: Add a new 'backend-queries' metric Counting the numbers of queries sent to the backend(s), instead of relying on the number of cache misses. --- diff --git a/pdns/dnsbackend.cc b/pdns/dnsbackend.cc index 12ba56b2fc..8ead24b379 100644 --- a/pdns/dnsbackend.cc +++ b/pdns/dnsbackend.cc @@ -32,6 +32,9 @@ #include "pdns/packetcache.hh" #include "dnspacket.hh" #include "dns.hh" +#include "statbag.hh" + +extern StatBag S; // this has to be somewhere central, and not in a file that requires Lua // this is so the geoipbackend can set this pointer if loaded for lua-record.cc @@ -241,6 +244,7 @@ vector BackendMakerClass::all(bool metadataOnly) bool DNSBackend::getSOA(const DNSName &domain, SOAData &sd) { this->lookup(QType(QType::SOA),domain,-1); + S.inc("backend-queries"); DNSResourceRecord rr; rr.auth = true; diff --git a/pdns/ueberbackend.cc b/pdns/ueberbackend.cc index 0a897649db..18a6e4b0be 100644 --- a/pdns/ueberbackend.cc +++ b/pdns/ueberbackend.cc @@ -57,6 +57,7 @@ bool UeberBackend::d_go=false; bool UeberBackend::s_doANYLookupsOnly=false; std::mutex UeberBackend::d_mut; std::condition_variable UeberBackend::d_cond; +AtomicCounter* UeberBackend::s_backendQueries = nullptr; //! Loads a module and reports it to all UeberBackend threads bool UeberBackend::loadmodule(const string &name) @@ -99,6 +100,9 @@ void UeberBackend::go(void) s_doANYLookupsOnly = true; } + S.declare("backend-queries", "Number of queries sent to the backend(s)"); + s_backendQueries = S.getPointer("backend-queries"); + { std::unique_lock l(d_mut); d_go = true; @@ -612,6 +616,7 @@ void UeberBackend::lookup(const QType &qtype,const DNSName &qname, int zoneId, D d_negcached=d_cached=false; d_answers.clear(); (d_handle.d_hinterBackend=backends[d_handle.i++])->lookup(d_handle.qtype, d_handle.qname, d_handle.zoneId, d_handle.pkt_p); + ++(*s_backendQueries); } else if(cstat==0) { // cout<<"UeberBackend::lookup("<backends[i++]; d_hinterBackend->lookup(qtype,qname,zoneId,pkt_p); + ++(*s_backendQueries); } else break; diff --git a/pdns/ueberbackend.hh b/pdns/ueberbackend.hh index d708569add..09149cdaca 100644 --- a/pdns/ueberbackend.hh +++ b/pdns/ueberbackend.hh @@ -153,6 +153,7 @@ private: bool d_negcached; bool d_cached; + static AtomicCounter* s_backendQueries; static bool d_go; bool d_stale; static bool s_doANYLookupsOnly; diff --git a/regression-tests.nobackend/counters/command b/regression-tests.nobackend/counters/command index 9ff54727d7..91ef56e8dc 100755 --- a/regression-tests.nobackend/counters/command +++ b/regression-tests.nobackend/counters/command @@ -27,7 +27,7 @@ $SDIG ::1 $port example.com SOA >&2 >/dev/null $SDIG ::1 $port example.com SOA tcp >&2 >/dev/null $PDNSCONTROL --config-name= --no-config --socket-dir=./ 'show *' | \ - tr ',' '\n'| grep -v -E '(user-msec|sys-msec|cpu-iowait|cpu-steal|uptime|udp-noport-errors|udp-in-errors|real-memory-usage|special-memory-usage|udp-recvbuf-errors|udp-sndbuf-errors|-hit|-miss|fd-usage|latency)' | LC_ALL=C sort + tr ',' '\n'| grep -v -E '(user-msec|sys-msec|cpu-iowait|cpu-steal|uptime|udp-noport-errors|udp-in-errors|real-memory-usage|special-memory-usage|udp-recvbuf-errors|udp-sndbuf-errors|-hit|-miss|fd-usage|latency|backend-queries)' | LC_ALL=C sort kill $(cat pdns*.pid) rm pdns*.pid