]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Implement metrics
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Wed, 28 May 2025 11:43:02 +0000 (13:43 +0200)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Wed, 28 May 2025 14:26:53 +0000 (16:26 +0200)
pdns/recursordist/RECURSOR-MIB.txt
pdns/recursordist/rec-snmp.cc
pdns/recursordist/rec_channel_rec.cc
pdns/recursordist/ws-recursor.cc

index 4f8f8894d3bef84b66791075a712bad88ba6510f..c41fa681df9c1695f5417f3037f71142f7f148cd 100644 (file)
@@ -21,50 +21,8 @@ rec MODULE-IDENTITY
     DESCRIPTION
        "This MIB module describes information gathered through PowerDNS Recursor."
 
-    REVISION "202505270000Z"
-    DESCRIPTION "Added metric for missing ECS in reply"
-
-    REVISION "202408280000Z"
-    DESCRIPTION "Added metric for too many incoming TCP connections"
-
-    REVISION "202408130000Z"
-    DESCRIPTION "Added metric for chain limits reached"
-
-    REVISION "202405230000Z"
-    DESCRIPTION "Added metrics for maximum chain length and weight"
-
-    REVISION "202306080000Z"
-    DESCRIPTION "Added metrics for NOD and UDR events"
-
-    REVISION "202302240000Z"
-    DESCRIPTION "Added metrics for sharded packet cache contention"
-
-    REVISION "202209120000Z"
-    DESCRIPTION "Added metrics for answers from auths by rcode"
-
-    REVISION "202208220000Z"
-    DESCRIPTION "Added internal maintenance metrics."
-
-    REVISION "202201310000Z"
-    DESCRIPTION "Added non-resolving NS name metric."
-
-    REVISION "202111090000Z"
-    DESCRIPTION "Added NOTIFY-related metrics."
-
-    REVISION "202110270000Z"
-    DESCRIPTION "Added more UDP errors metric."
-
-    REVISION "202107200000Z"
-    DESCRIPTION "Added almost expired task metrics."
-
-    REVISION "202101050000Z"
-    DESCRIPTION "Added Aggressive NSEC cache metrics."
-
-    REVISION "202002170000Z"
-    DESCRIPTION "Added proxyProtocolInvalid metric."
-
-    REVISION "201911140000Z"
-    DESCRIPTION "Added qnameMinFallbackSuccess stats."
+    REVISION "201611290000Z"
+    DESCRIPTION "Initial revision."
 
     REVISION "201812240000Z"
     DESCRIPTION "Added the dnssecAuthenticDataQueries and dnssecCheckDisabledQueries stats."
index 9377f7cc318b09e6f83e49887ebc717496870e2f..a1a089e794eb87ebcbb6b8befcc1aa9ee0030fd5 100644 (file)
@@ -169,9 +169,13 @@ 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 std::array<oid, 10> nodEventsOID = {RECURSOR_STATS_OID, 147};
-static const std::array<oid, 10> udrEventsOID = {RECURSOR_STATS_OID, 148};
+static const oid nodEventsOID[] = {RECURSOR_STATS_OID, 147};
+static const oid udrEventsOID[] = {RECURSOR_STATS_OID, 148};
+static const oid maxChainLengthOID[] = {RECURSOR_STATS_OID, 149};
+static const oid maxChainWeightOID[] = {RECURSOR_STATS_OID, 150};
+static const oid chainLimitsOID[] = {RECURSOR_STATS_OID, 151};
+static const oid tcpOverflowOID[] = {RECURSOR_STATS_OID, 152};
+static const oid ecsMissingOID[] = {RECURSOR_STATS_OID, 153};
 
 static std::unordered_map<oid, std::string> s_statsMap;
 
@@ -428,8 +432,14 @@ RecursorSNMPAgent::RecursorSNMPAgent(const std::string& name, const std::string&
   RCODE(14);
   RCODE(15);
 
-  registerCounter64Stat("nod-events", nodEventsOID.data(), nodEventsOID.size());
-  registerCounter64Stat("udr-events", udrEventsOID.data(), udrEventsOID.size());
+  registerCounter64Stat("packetcache-contended", packetCacheContendedOID, OID_LENGTH(packetCacheContendedOID));
+  registerCounter64Stat("packetcache-acquired", packetCacheAcquiredOID, OID_LENGTH(packetCacheAcquiredOID));
+  registerCounter64Stat("nod-events", nodEventsOID, OID_LENGTH(nodEventsOID));
+  registerCounter64Stat("udr-events", udrEventsOID, OID_LENGTH(udrEventsOID));
+  registerCounter64Stat("max-chain-length", maxChainLengthOID, OID_LENGTH(maxChainLengthOID));
+  registerCounter64Stat("max-chain-weight", maxChainWeightOID, OID_LENGTH(maxChainWeightOID));
+  registerCounter64Stat("tcp-overflow", tcpOverflowOID, OID_LENGTH(tcpOverflowOID));
+  registerCounter64Stat("ecs-missing", ecsMissingOID, OID_LENGTH(ecsMissingOID));
 
 #endif /* HAVE_NET_SNMP */
 }
index 230a7abbdd3608500a83c70720036ab43780a57a..28100468a521b937837555226e94f975fd8f7344 100644 (file)
@@ -1530,6 +1530,8 @@ static void registerAllStats1()
   addGetStat("nod-events", [] { return g_Counters.sum(rec::Counter::nodCount); });
   addGetStat("udr-events", [] { return g_Counters.sum(rec::Counter::udrCount); });
 
+  addGetStat("ecs-missing", [] { return g_Counters.sum(rec::Counter::ecsMissingCount); });
+
   /* make sure that the ECS stats are properly initialized */
   SyncRes::clearECSStats();
   for (size_t idx = 0; idx < SyncRes::s_ecsResponsesBySubnetSize4.size(); idx++) {
index 5214c57e322062ce164fb73778643689782559a1..d3fe5033f5d498e4af9bc667e09ae10cafd53abe 100644 (file)
@@ -1253,6 +1253,10 @@ const std::map<std::string, MetricDefinition> MetricDefinitionStorage::d_metrics
   {"udr-events",
    MetricDefinition(PrometheusMetricType::counter,
                     "Count of UDR events")},
+
+  {"ecs-missing",
+   MetricDefinition(PrometheusMetricType::counter,
+                    "Number of answers where ECS info was missing")},
 };
 
 constexpr bool CHECK_PROMETHEUS_METRICS = false;