]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
qname metrics
authorphonedph1 <phoned@gmail.com>
Thu, 14 Nov 2019 15:54:01 +0000 (15:54 +0000)
committerphonedph1 <phoned@gmail.com>
Thu, 14 Nov 2019 15:54:01 +0000 (15:54 +0000)
pdns/rec-snmp.cc
pdns/rec_channel_rec.cc
pdns/recursordist/RECURSOR-MIB.txt
pdns/recursordist/docs/metrics.rst
pdns/recursordist/rec_metrics.hh
pdns/syncres.cc
pdns/syncres.hh

index 536b597402b590c6d202acd5121b8a06c87f6e69..d48c5708872b61f87f662f7ce30d5a2d731f8761 100644 (file)
@@ -115,6 +115,7 @@ static const oid dnssecCheckDisabledQueriesOID[] = { RECURSOR_STATS_OID, 96 };
 static const oid variableResponsesOID[] = { RECURSOR_STATS_OID, 97 };
 static const oid specialMemoryUsageOID[] = { RECURSOR_STATS_OID, 98 };
 static const oid rebalancedQueriesOID[] = { RECURSOR_STATS_OID, 99 };
+static const oid qnameMinFallbackSuccessOID[] = { RECURSOR_STATS_OID, 100 };
 
 static std::unordered_map<oid, std::string> s_statsMap;
 
@@ -288,6 +289,7 @@ RecursorSNMPAgent::RecursorSNMPAgent(const std::string& name, const std::string&
   registerCounter64Stat("ipv6-outqueries", ipv6OutqueriesOID, OID_LENGTH(ipv6OutqueriesOID));
   registerCounter64Stat("throttled-outqueries", throttledOutqueriesOID, OID_LENGTH(throttledOutqueriesOID));
   registerCounter64Stat("dont-outqueries", dontOutqueriesOID, OID_LENGTH(dontOutqueriesOID));
+  registerCounter64Stat("qname-min-fallback-success", qnameMinFallbackSuccessOID, OID_LENGTH(qnameMinFallbackSuccessOID));
   registerCounter64Stat("unreachables", unreachablesOID, OID_LENGTH(unreachablesOID));
   registerCounter64Stat("chain-resends", chainResendsOID, OID_LENGTH(chainResendsOID));
   registerCounter64Stat("tcp-clients", tcpClientsOID, OID_LENGTH(tcpClientsOID));
index a294e62ac7a7d8dd820e0c4bd0596552f64b5eb6..6bba88e6c59d74d3bec8fd825d92fdf83c7a0568 100644 (file)
@@ -1089,6 +1089,7 @@ void registerAllStats()
   addGetStat("ipv6-outqueries", &g_stats.ipv6queries);
   addGetStat("throttled-outqueries", &SyncRes::s_throttledqueries);
   addGetStat("dont-outqueries", &SyncRes::s_dontqueries);
+  addGetStat("qname-min-fallback-success", &SyncRes::s_qnameminfallbacksuccess);
   addGetStat("throttled-out", &SyncRes::s_throttledqueries);
   addGetStat("unreachables", &SyncRes::s_unreachables);
   addGetStat("ecs-queries", &SyncRes::s_ecsqueries);
index 463a1b0d9693b32081b17705839711d1eeb3e8d3..79528eef2432b63cda17ece4c8edc4cda0a6b64b 100644 (file)
@@ -15,7 +15,7 @@ IMPORTS
         FROM SNMPv2-CONF;
 
 rec MODULE-IDENTITY
-    LAST-UPDATED "201812240000Z"
+    LAST-UPDATED "201911140000Z"
     ORGANIZATION "PowerDNS BV"
     CONTACT-INFO "support@powerdns.com"
     DESCRIPTION
@@ -27,6 +27,9 @@ rec MODULE-IDENTITY
     REVISION "201812240000Z"
     DESCRIPTION "Added the dnssecAuthenticDataQueries and dnssecCheckDisabledQueries stats."
 
+    REVISION "201911140000Z"
+    DESCRIPTION "Added qnameMinFallbackSuccess stats."
+
     ::= { powerdns 2 }
 
 powerdns               OBJECT IDENTIFIER ::= { enterprises 43315 }
@@ -825,6 +828,14 @@ rebalancedQueries OBJECT-TYPE
         "Number of queries re-distributed because the first selected worker thread was above the target load"
     ::= { stats 99 }
 
+qnameMinFallbackSuccess OBJECT-TYPE
+    SYNTAX Counter64
+    MAX-ACCESS read-only
+    STATUS current
+    DESCRIPTION
+        "Number of successful queries due to fallback mechanism within 'qname-minimisation' setting"
+    ::= { stats 100 }
+
 ---
 --- Traps / Notifications
 ---
@@ -967,7 +978,8 @@ recGroup OBJECT-GROUP
         variableResponses,
         specialMemoryUsage,
         rebalancedQueries,
-        trapReason
+        trapReason,
+        qnameMinFallbackSuccess
     }
     STATUS current
     DESCRIPTION "Objects conformance group for PowerDNS Recursor"
index c04ebbc01f0ce91ea9975b364c5feb2b03d3a6b0..1d29ca2d34fac90c0a6d8d5b556d032ad29ec9f0 100644 (file)
@@ -237,6 +237,11 @@ dont-outqueries
 ^^^^^^^^^^^^^^^
 number of outgoing queries dropped because of   :ref:`setting-dont-query` setting (since 3.3)
 
+qname-min-fallback-success
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. versionadded:: 4.3.0
+number of successful queries due to fallback mechanism within :ref:`setting-dont-query` setting (since 4.3)
+
 ecs-queries
 ^^^^^^^^^^^
 number of outgoing queries adorned with an EDNS Client Subnet option (since 4.1)
index e5aa14cdeed2b71cbb43d35f219803d58dec0188..80eb4428bdc7a001a61b3a20b50d91c90a260ace 100644 (file)
@@ -127,6 +127,7 @@ private:
 
             { "dnssec-validations",              MetricDefinition(PrometheusMetricType::counter, "Number of DNSSEC validations performed") },
             { "dont-outqueries",              MetricDefinition(PrometheusMetricType::counter, "Number of outgoing queries dropped because of `setting-dont-query` setting") },
+            { "qname-min-fallback-success",   MetricDefinition(PrometheusMetricType::counter, "Number of successful queries due to fallback mechanism within 'qname-minimisation' setting") },
             { "ecs-queries",              MetricDefinition(PrometheusMetricType::counter, "Number of outgoing queries adorned with an EDNS Client Subnet option") },
             { "ecs-responses",              MetricDefinition(PrometheusMetricType::counter, "Number of responses received from authoritative servers with an EDNS Client Subnet option we used") },
             { "edns-ping-matches",              MetricDefinition(PrometheusMetricType::counter, "Number of servers that sent a valid EDNS PING response") },
index 8bd1a6861da38c6b0fb9887057fe59f0c99fae14..4063f7070957314b86eae00a05c588182e66c058 100644 (file)
@@ -71,6 +71,7 @@ std::atomic<uint64_t> SyncRes::s_outqueries;
 std::atomic<uint64_t> SyncRes::s_tcpoutqueries;
 std::atomic<uint64_t> SyncRes::s_throttledqueries;
 std::atomic<uint64_t> SyncRes::s_dontqueries;
+std::atomic<uint64_t> SyncRes::s_qnameminfallbacksuccess;
 std::atomic<uint64_t> SyncRes::s_nodelegated;
 std::atomic<uint64_t> SyncRes::s_unreachables;
 std::atomic<uint64_t> SyncRes::s_ecsqueries;
@@ -691,6 +692,11 @@ int SyncRes::doResolve(const DNSName &qname, const QType &qtype, vector<DNSRecor
         QLOG("Step5: other rcode, last effort final resolve");
         setQNameMinimization(false);
         res = doResolveNoQNameMinimization(qname, qtype, ret, depth + 1, beenthere, state);
+
+        if(res == RCode::NoError) {
+          s_qnameminfallbacksuccess++;
+        }
+
         QLOG("Step5 End resolve: " << RCode::to_s(res) << "/" << ret.size());
         return res;
       }
index 3ce2bf04c0b28563f4db6731797b495b7bb09853..4aec2a4ce2d5e6541756555571e4e282abf1e2b6 100644 (file)
@@ -720,6 +720,7 @@ public:
   static std::atomic<uint64_t> s_outgoing6timeouts;
   static std::atomic<uint64_t> s_throttledqueries;
   static std::atomic<uint64_t> s_dontqueries;
+  static std::atomic<uint64_t> s_qnameminfallbacksuccess;
   static std::atomic<uint64_t> s_authzonequeries;
   static std::atomic<uint64_t> s_outqueries;
   static std::atomic<uint64_t> s_tcpoutqueries;