]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
rec: Add 'InCsumErrors' UDP metric
authorRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 27 Oct 2021 15:16:07 +0000 (17:16 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Wed, 3 Nov 2021 14:18:59 +0000 (15:18 +0100)
pdns/rec-snmp.cc
pdns/rec_channel_rec.cc
pdns/recursordist/RECURSOR-MIB.txt
pdns/ws-recursor.cc

index 7dc3dddba9b3d7e875daa711f8919f4e0417443a..198db29997b84bba22d109075c62af366449dae5 100644 (file)
@@ -135,6 +135,9 @@ static const oid dns64PrefixAnswers[] = {RECURSOR_STATS_OID, 114};
 static const oid almostExpiredPushed[] = {RECURSOR_STATS_OID, 115};
 static const oid almostExpiredRun[] = {RECURSOR_STATS_OID, 116};
 static const oid almostExpiredExceptions[] = {RECURSOR_STATS_OID, 117};
+#ifdef __linux__
+static const oid udpInCsumErrorsOID[] = {RECURSOR_STATS_OID, 118};
+#endif /* __linux__ */
 
 static std::unordered_map<oid, std::string> s_statsMap;
 
@@ -317,6 +320,7 @@ RecursorSNMPAgent::RecursorSNMPAgent(const std::string& name, const std::string&
   registerCounter64Stat("udp-sndbuf-errors", udpSndbufErrorsOID, OID_LENGTH(udpSndbufErrorsOID));
   registerCounter64Stat("udp-noport-errors", udpNoportErrorsOID, OID_LENGTH(udpNoportErrorsOID));
   registerCounter64Stat("udp-in-errors", udpinErrorsOID, OID_LENGTH(udpinErrorsOID));
+  registerCounter64Stat("udp-in-csums-errors", udpInCsumErrorsOID, OID_LENGTH(udpInCsumErrorsOID));
 #endif /* __linux__ */
   registerCounter64Stat("edns-ping-matches", ednsPingMatchesOID, OID_LENGTH(ednsPingMatchesOID));
   registerCounter64Stat("edns-ping-mismatches", ednsPingMismatchesOID, OID_LENGTH(ednsPingMismatchesOID));
index 72aeeecb815cd5711aeb0364d0e10b12771e3b48..ee40d1741750ceaab175c03ba51fd2a7a6b81cb8 100644 (file)
@@ -1303,6 +1303,7 @@ static void registerAllStats1()
   addGetStat("udp-sndbuf-errors", [] { return udpErrorStats("udp-sndbuf-errors"); });
   addGetStat("udp-noport-errors", [] { return udpErrorStats("udp-noport-errors"); });
   addGetStat("udp-in-errors", [] { return udpErrorStats("udp-in-errors"); });
+  addGetStat("udp-in-csum-errors", [] { return udpErrorStats("udp-in-csum-errors"); });
 #endif
 
   addGetStat("edns-ping-matches", &g_stats.ednsPingMatches);
index b2478d7bfed80a483d5f99f061a8e1feba468521..a6ea79c921cfa5c796cfdbd7f1872d3530abdfd1 100644 (file)
@@ -39,6 +39,9 @@ rec MODULE-IDENTITY
     REVISION "202107200000Z"
     DESCRIPTION "Added almost expired task metrics."
 
+    REVISION "202110270000Z"
+    DESCRIPTION "Added udpInCsumErrors metric."
+
     ::= { powerdns 2 }
 
 powerdns               OBJECT IDENTIFIER ::= { enterprises 43315 }
@@ -981,6 +984,14 @@ almostExpiredExceptions OBJECT-TYPE
         "Number of almost-expired tasks that caused an exception"
     ::= { stats 117 }
 
+udpInCsumErrors OBJECT-TYPE
+    SYNTAX Counter64
+    MAX-ACCESS read-only
+    STATUS current
+    DESCRIPTION
+        "Number of UDP in checksum errors (Linux only)"
+    ::= { stats 118 }
+
 ---
 --- Traps / Notifications
 ---
@@ -1142,7 +1153,11 @@ recGroup OBJECT-GROUP
         aggressiveNSECCacheNSECWcHits,
         aggressiveNSECCacheNSEC3WcHits,
         dotOutqueries,
-        dns64PrefixAnswers
+        dns64PrefixAnswers,
+        almostExpiredPushed,
+        almostExpiredRun,
+        almostExpiredExceptions,
+        udpInCsumErrors
     }
     STATUS current
     DESCRIPTION "Objects conformance group for PowerDNS Recursor"
index 7ed7c7c893e7431db6a6a4f1d613b47cebd4b582..bcfd0e39f836f716609a2fd646ef8d3f26a865af 100644 (file)
@@ -896,6 +896,9 @@ const std::map<std::string, MetricDefinition> MetricDefinitionStorage::d_metrics
   {"udp-sndbuf-errors",
    MetricDefinition(PrometheusMetricType::counter,
                     "From /proc/net/snmp SndbufErrors")},
+  {"udp-in-csum-errors",
+   MetricDefinition(PrometheusMetricType::counter,
+                    "From /proc/net/snmp InCsumErrors")},
 
   {"cpu-iowait",
    MetricDefinition(PrometheusMetricType::counter,