From: Remi Gacogne Date: Wed, 27 Oct 2021 16:50:04 +0000 (+0200) Subject: rec: Add IPv6 UDP error metrics X-Git-Tag: rec-4.6.0-beta1~12^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=056283faba22d6154e562978c51d4b8176de9bd3;p=thirdparty%2Fpdns.git rec: Add IPv6 UDP error metrics --- diff --git a/pdns/rec-snmp.cc b/pdns/rec-snmp.cc index 198db29997..3bb7783a3b 100644 --- a/pdns/rec-snmp.cc +++ b/pdns/rec-snmp.cc @@ -137,6 +137,11 @@ 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}; +static const oid udp6RecvbufErrorsOID[] = {RECURSOR_STATS_OID, 119}; +static const oid udp6SndbufErrorsOID[] = {RECURSOR_STATS_OID, 120}; +static const oid udp6NoportErrorsOID[] = {RECURSOR_STATS_OID, 121}; +static const oid udp6InErrorsOID[] = {RECURSOR_STATS_OID, 122}; +static const oid udp6InCsumErrorsOID[] = {RECURSOR_STATS_OID, 123}; #endif /* __linux__ */ static std::unordered_map s_statsMap; @@ -321,6 +326,11 @@ RecursorSNMPAgent::RecursorSNMPAgent(const std::string& name, const std::string& 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)); + registerCounter64Stat("udp6-recvbuf-errors", udp6RecvbufErrorsOID, OID_LENGTH(udp6RecvbufErrorsOID)); + registerCounter64Stat("udp6-sndbuf-errors", udp6SndbufErrorsOID, OID_LENGTH(udp6SndbufErrorsOID)); + registerCounter64Stat("udp6-noport-errors", udp6NoportErrorsOID, OID_LENGTH(udp6NoportErrorsOID)); + registerCounter64Stat("udp6-in-errors", udp6InErrorsOID, OID_LENGTH(udp6InErrorsOID)); + registerCounter64Stat("udp6-in-csums-errors", udp6InCsumErrorsOID, OID_LENGTH(udp6InCsumErrorsOID)); #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 ee40d17417..ea3e3caf68 100644 --- a/pdns/rec_channel_rec.cc +++ b/pdns/rec_channel_rec.cc @@ -1304,6 +1304,11 @@ static void registerAllStats1() 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"); }); + addGetStat("udp6-recvbuf-errors", [] { return udp6ErrorStats("udp6-recvbuf-errors"); }); + addGetStat("udp6-sndbuf-errors", [] { return udp6ErrorStats("udp6-sndbuf-errors"); }); + addGetStat("udp6-noport-errors", [] { return udp6ErrorStats("udp6-noport-errors"); }); + addGetStat("udp6-in-errors", [] { return udp6ErrorStats("udp6-in-errors"); }); + addGetStat("udp6-in-csum-errors", [] { return udp6ErrorStats("udp6-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 a6ea79c921..d9fea57ec7 100644 --- a/pdns/recursordist/RECURSOR-MIB.txt +++ b/pdns/recursordist/RECURSOR-MIB.txt @@ -40,7 +40,7 @@ rec MODULE-IDENTITY DESCRIPTION "Added almost expired task metrics." REVISION "202110270000Z" - DESCRIPTION "Added udpInCsumErrors metric." + DESCRIPTION "Added more UDP errors metric." ::= { powerdns 2 } @@ -992,6 +992,46 @@ udpInCsumErrors OBJECT-TYPE "Number of UDP in checksum errors (Linux only)" ::= { stats 118 } +udp6RecvbufErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of UDP6 recvbuf errors (Linux only)" + ::= { stats 119 } + +udp6SndbufErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of UDP6 sndbuf errors (Linux only)" + ::= { stats 120 } + +udp6NoportErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of UDP6 noport errors (Linux only)" + ::= { stats 121 } + +udp6inErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of UDP6 in errors (Linux only)" + ::= { stats 122 } + +udp6InCsumErrors OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of UDP6 in checksum errors (Linux only)" + ::= { stats 123 } + --- --- Traps / Notifications --- @@ -1157,7 +1197,12 @@ recGroup OBJECT-GROUP almostExpiredPushed, almostExpiredRun, almostExpiredExceptions, - udpInCsumErrors + udpInCsumErrors, + udp6RecvbufErrors, + udp6SndbufErrors, + udp6NoportErrors, + udp6inErrors, + udp6InCsumErrors } STATUS current DESCRIPTION "Objects conformance group for PowerDNS Recursor" diff --git a/pdns/ws-recursor.cc b/pdns/ws-recursor.cc index bcfd0e39f8..8c1d11dd3e 100644 --- a/pdns/ws-recursor.cc +++ b/pdns/ws-recursor.cc @@ -899,6 +899,21 @@ const std::map MetricDefinitionStorage::d_metrics {"udp-in-csum-errors", MetricDefinition(PrometheusMetricType::counter, "From /proc/net/snmp InCsumErrors")}, + {"udp6-in-errors", + MetricDefinition(PrometheusMetricType::counter, + "From /proc/net/snmp6 InErrors")}, + {"udp6-noport-errors", + MetricDefinition(PrometheusMetricType::counter, + "From /proc/net/snmp6 NoPorts")}, + {"udp6-recvbuf-errors", + MetricDefinition(PrometheusMetricType::counter, + "From /proc/net/snmp6 RcvbufErrors")}, + {"udp6-sndbuf-errors", + MetricDefinition(PrometheusMetricType::counter, + "From /proc/net/snmp6 SndbufErrors")}, + {"udp6-in-csum-errors", + MetricDefinition(PrometheusMetricType::counter, + "From /proc/net/snmp6 InCsumErrors")}, {"cpu-iowait", MetricDefinition(PrometheusMetricType::counter,