]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Add Prometheus and SNMP version of NOD/UDR metrics
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Thu, 8 Jun 2023 09:52:02 +0000 (11:52 +0200)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Thu, 8 Jun 2023 10:04:45 +0000 (12:04 +0200)
pdns/recursordist/RECURSOR-MIB.txt
pdns/recursordist/docs/metrics.rst
pdns/recursordist/rec-snmp.cc
pdns/recursordist/ws-recursor.cc

index 40b26617a90a3cf8571dede91a4a8db619a65b81..318e9bfcf6bc06a7bbfb0de0c58827f1f662fb0a 100644 (file)
@@ -57,6 +57,9 @@ rec MODULE-IDENTITY
     REVISION "202302240000Z"
     DESCRIPTION "Added metrics for sharded packet cache contention"
 
+    REVISION "202306080000Z"
+    DESCRIPTION "Added metrics for NOD and UDR events"
+
     ::= { powerdns 2 }
 
 powerdns               OBJECT IDENTIFIER ::= { enterprises 43315 }
@@ -1231,6 +1234,21 @@ packetCacheAcquired OBJECT-TYPE
         "Number of packet cache lock acquisitions"
     ::= { stats 146 }
 
+nodCount OBJECT-TYPE
+    SYNTAX Counter64
+    MAX-ACCESS read-only
+    STATUS current
+    DESCRIPTION
+        "Count of NOD events"
+    ::= { stats 147 }
+
+udrCount OBJECT-TYPE
+    SYNTAX Counter64
+    MAX-ACCESS read-only
+    STATUS current
+    DESCRIPTION
+        "Count of UDR events"
+    ::= { stats 148 }
 
 ---
 --- Traps / Notifications
@@ -1425,7 +1443,9 @@ recGroup OBJECT-GROUP
         authrcode14Count,
         authrcode15Count,
         packetCacheContended,
-        packetCacheAcquired
+        packetCacheAcquired,
+        nodCount,
+        udrCount
     }
     STATUS current
     DESCRIPTION "Objects conformance group for PowerDNS Recursor"
index d54137492c24bb21ba2dc68e6b5e3a389c71df4a..7a4508df40885b2555a722fb3f6508dc504a6ce2 100644 (file)
@@ -551,6 +551,16 @@ no-packet-error
 ^^^^^^^^^^^^^^^
 number of erroneous received packets
 
+nod-count
+^^^^^^^^^
+.. versionadded:: 4.9.0
+Count of NOD events
+
+udr-count
+^^^^^^^^^
+.. versionadded:: 4.9.0
+Count of UDR events
+
 nod-lookups-dropped-oversize
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 Number of NOD lookups dropped because they would exceed the maximum name length
index 35519347618a12b8f9a1367c29bf769730d29eae..9b491efa69ad5648e7c3203df896231f84c10d31 100644 (file)
@@ -170,6 +170,9 @@ static const oid rcode15AnswersOID[] = {RECURSOR_STATS_OID, 144};
 static const oid packetCacheContendedOID[] = {RECURSOR_STATS_OID, 145};
 static const oid packetCacheAcquiredOID[] = {RECURSOR_STATS_OID, 146};
 
+static const oid nodCountOID[] = {RECURSOR_STATS_OID, 147};
+static const oid udrCountOID[] = {RECURSOR_STATS_OID, 148};
+
 static std::unordered_map<oid, std::string> s_statsMap;
 
 /* We are never called for a GETNEXT if it's registered as a
@@ -425,5 +428,8 @@ RecursorSNMPAgent::RecursorSNMPAgent(const std::string& name, const std::string&
   RCODE(14);
   RCODE(15);
 
+  registerCounter64Stat("nod-count", nodCountOID, OID_LENGTH(nodCountOID));
+  registerCounter64Stat("udr-count", udrCountOID, OID_LENGTH(udrCountOID));
+
 #endif /* HAVE_NET_SNMP */
 }
index cefc6a28d8a3f595b7ae6dcae3ae12d53cf70f49..2b7c288e870fd44dec8bf0997bf22695405ed66d 100644 (file)
@@ -1190,6 +1190,13 @@ const std::map<std::string, MetricDefinition> MetricDefinitionStorage::d_metrics
   {"remote-logger-count-o-0",
    MetricDefinition(PrometheusMetricType::multicounter,
                     "Number of remote logging events")},
+  {"nod-count",
+   MetricDefinition(PrometheusMetricType::counter,
+                    "Count of NOD events")},
+
+  {"udr-count",
+   MetricDefinition(PrometheusMetricType::counter,
+                    "Count of UDR events")},
 };
 
 constexpr bool CHECK_PROMETHEUS_METRICS = false;
@@ -1207,6 +1214,9 @@ static void validatePrometheusMetrics()
     if (metricName.find("cumul-") == 0) {
       continue;
     }
+    if (metricName.find("auth-") == 0 && metricName.find("-answers") != string::npos) {
+      continue;
+    }
     MetricDefinition metricDetails;
 
     if (!s_metricDefinitions.getMetricDetails(metricName, metricDetails)) {