]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
ixfrdist /metrics: add unknown domain in-query counter
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 31 Jan 2023 09:48:27 +0000 (10:48 +0100)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 31 Jan 2023 10:39:06 +0000 (11:39 +0100)
pdns/ixfrdist-stats.cc
pdns/ixfrdist-stats.hh
pdns/ixfrdist.cc
regression-tests.ixfrdist/test_Stats.py

index 292565a8199ec0df9516d804cae39d5f523ab49e..bb4dd8ba59887850335c1f5c5cff3d3854d98b14 100644 (file)
@@ -97,5 +97,9 @@ std::string ixfrdistStats::getStats() {
     helpAdded = true;
   }
 
+  stats<<"# HELP "<<prefix<<"unknown_domain_inqueries_total Number of queries received for domains unknown to us"<<std::endl;
+  stats<<"# TYPE "<<prefix<<"unknown_domain_inqueries_total counter"<<std::endl;
+  stats<<prefix<<"unknown_domain_inqueries_total "<<progStats.unknownDomainInQueries<<std::endl;
+
   return stats.str();
 }
index addfe060030e2b48e97280a478a98ec25a2bf9da..26a27be60f4472c9245f446fb6d6f1ba50ff6940 100644 (file)
@@ -64,6 +64,9 @@ class ixfrdistStats {
     void registerDomain(const DNSName& d) {
       domainStats[d].haveZone = false;
     }
+    void incrementUnknownDomainInQueries(const DNSName &d) { // the name is ignored. It would be great to report it, but we don't want to blow up Prometheus
+      progStats.unknownDomainInQueries += 1;
+    }
   private:
     class perDomainStat {
       public:
@@ -83,6 +86,7 @@ class ixfrdistStats {
     class programStats {
       public:
         time_t startTime;
+        std::atomic<uint32_t> unknownDomainInQueries;
     };
 
     std::map<DNSName, perDomainStat> domainStats;
index 24ac0e6a3a60eccb2d161e547a919de55e604429..997fdf90121314c25d0e78915bebb2729662b525 100644 (file)
@@ -818,6 +818,7 @@ static void handleUDPRequest(int fd, boost::any&) {
     g_stats.incrementSOAinQueries(mdp.d_qname); // FIXME: this also counts IXFR queries (but the response is the same as to a SOA query)
     makeSOAPacket(mdp, packet);
   } else {
+    g_stats.incrementUnknownDomainInQueries(mdp.d_qname);
     makeRefusedPacket(mdp, packet);
   }
 
index 8c76511addfe42d14b09eb8abaa3cf3aa395a3e7..61b272bacdcad61de2131e79415ccdd259a6a6fe 100644 (file)
@@ -29,7 +29,7 @@ webserver-address: %s
 
     _config_domains = {'example': '127.0.0.1:' + str(xfrServerPort)}
 
-    metric_prog_stats = ["ixfrdist_uptime_seconds", "ixfrdist_domains"]
+    metric_prog_stats = ["ixfrdist_uptime_seconds", "ixfrdist_domains", "ixfrdist_unknown_domain_inqueries_total"]
     metric_domain_stats = ["ixfrdist_soa_serial", "ixfrdist_soa_checks_total",
                            "ixfrdist_soa_checks_failed_total",
                            "ixfrdist_soa_inqueries_total",