From: Remi Gacogne Date: Wed, 27 Oct 2021 15:16:07 +0000 (+0200) Subject: rec: Add 'InCsumErrors' UDP metric X-Git-Tag: rec-4.6.0-beta1~12^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78abffed2bb6542846e4fa61168e2a96702fcfea;p=thirdparty%2Fpdns.git rec: Add 'InCsumErrors' UDP metric --- diff --git a/pdns/rec-snmp.cc b/pdns/rec-snmp.cc index 7dc3dddba9..198db29997 100644 --- a/pdns/rec-snmp.cc +++ b/pdns/rec-snmp.cc @@ -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 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)); diff --git a/pdns/rec_channel_rec.cc b/pdns/rec_channel_rec.cc index 72aeeecb81..ee40d17417 100644 --- a/pdns/rec_channel_rec.cc +++ b/pdns/rec_channel_rec.cc @@ -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); diff --git a/pdns/recursordist/RECURSOR-MIB.txt b/pdns/recursordist/RECURSOR-MIB.txt index b2478d7bfe..a6ea79c921 100644 --- a/pdns/recursordist/RECURSOR-MIB.txt +++ b/pdns/recursordist/RECURSOR-MIB.txt @@ -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" diff --git a/pdns/ws-recursor.cc b/pdns/ws-recursor.cc index 7ed7c7c893..bcfd0e39f8 100644 --- a/pdns/ws-recursor.cc +++ b/pdns/ws-recursor.cc @@ -896,6 +896,9 @@ const std::map 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,