From: Otto Moerbeek Date: Thu, 8 Jun 2023 09:52:02 +0000 (+0200) Subject: Add Prometheus and SNMP version of NOD/UDR metrics X-Git-Tag: rec-4.10.0-alpha0~6^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bff67b6e6661027f0df1104bfca45171a6c0a15c;p=thirdparty%2Fpdns.git Add Prometheus and SNMP version of NOD/UDR metrics --- diff --git a/pdns/recursordist/RECURSOR-MIB.txt b/pdns/recursordist/RECURSOR-MIB.txt index 40b26617a9..318e9bfcf6 100644 --- a/pdns/recursordist/RECURSOR-MIB.txt +++ b/pdns/recursordist/RECURSOR-MIB.txt @@ -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" diff --git a/pdns/recursordist/docs/metrics.rst b/pdns/recursordist/docs/metrics.rst index d54137492c..7a4508df40 100644 --- a/pdns/recursordist/docs/metrics.rst +++ b/pdns/recursordist/docs/metrics.rst @@ -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 diff --git a/pdns/recursordist/rec-snmp.cc b/pdns/recursordist/rec-snmp.cc index 3551934761..9b491efa69 100644 --- a/pdns/recursordist/rec-snmp.cc +++ b/pdns/recursordist/rec-snmp.cc @@ -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 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 */ } diff --git a/pdns/recursordist/ws-recursor.cc b/pdns/recursordist/ws-recursor.cc index cefc6a28d8..2b7c288e87 100644 --- a/pdns/recursordist/ws-recursor.cc +++ b/pdns/recursordist/ws-recursor.cc @@ -1190,6 +1190,13 @@ const std::map 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)) {