From: bert hubert Date: Wed, 10 Dec 2014 15:43:26 +0000 (+0100) Subject: add signatures metric to auth, so we can plot signatures/second X-Git-Tag: rec-3.7.0-rc1~122 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c681ff644edcd6ab9c9e1b043e4260f61ff79f1e;p=thirdparty%2Fpdns.git add signatures metric to auth, so we can plot signatures/second --- diff --git a/pdns/common_startup.cc b/pdns/common_startup.cc index d57b666c53..86bba3fbbc 100644 --- a/pdns/common_startup.cc +++ b/pdns/common_startup.cc @@ -219,7 +219,7 @@ void declareStats(void) S.declare("recursing-answers","Number of recursive answers sent out"); S.declare("recursing-questions","Number of questions sent to recursor"); S.declare("corrupt-packets","Number of corrupt packets received"); - + S.declare("signatures", "Number of DNSSEC signatures made"); S.declare("tcp-queries","Number of TCP queries received"); S.declare("tcp-answers","Number of answers sent out over TCP"); diff --git a/pdns/dnssecsigner.cc b/pdns/dnssecsigner.cc index 680ce31d48..3ecbf35483 100644 --- a/pdns/dnssecsigner.cc +++ b/pdns/dnssecsigner.cc @@ -27,6 +27,8 @@ #include "dns_random.hh" #include "lock.hh" #include "arguments.hh" +#include "statbag.hh" +extern StatBag S; /* this is where the RRSIGs begin, keys are retrieved, but the actual signing happens in fillOutRRSIG */ @@ -121,6 +123,8 @@ typedef map, string> signaturecache_t; static signaturecache_t g_signatures; static int g_cacheweekno; +AtomicCounter* g_signatureCount; + uint64_t signatureCacheSize(const std::string& str) { ReadLock l(&g_signatures_lock); @@ -129,6 +133,9 @@ uint64_t signatureCacheSize(const std::string& str) void fillOutRRSIG(DNSSECPrivateKey& dpk, const std::string& signQName, RRSIGRecordContent& rrc, vector >& toSign) { + if(!g_signatureCount) + g_signatureCount = S.getPointer("signatures"); + DNSKEYRecordContent drc = dpk.getDNSKEY(); const DNSCryptoKeyEngine* rc = dpk.getKey(); rrc.d_tag = drc.getTag(); @@ -150,7 +157,7 @@ void fillOutRRSIG(DNSSECPrivateKey& dpk, const std::string& signQName, RRSIGReco } rrc.d_signature = rc->sign(msg); - + (*g_signatureCount)++; if(doCache) { /* we add some jitter here so not all your slaves start pruning their caches at the very same millisecond */ int weekno = (time(0) - dns_random(3600)) / (86400*7); // we just spent milliseconds doing a signature, microsecond more won't kill us