From: Otto Moerbeek Date: Mon, 12 Sep 2022 10:45:47 +0000 (+0200) Subject: Add SNMP metrics for new counts X-Git-Tag: rec-4.9.0-alpha0~20^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=132e9cf867e595f8fdd4ffe8a06bdd186ed03718;p=thirdparty%2Fpdns.git Add SNMP metrics for new counts --- diff --git a/pdns/rec-snmp.cc b/pdns/rec-snmp.cc index 2eb8d4de93..c847aee742 100644 --- a/pdns/rec-snmp.cc +++ b/pdns/rec-snmp.cc @@ -150,6 +150,24 @@ static const oid nonResolvingNameserverEntriesOID[] = {RECURSOR_STATS_OID, 126}; static const oid maintenanceUSecOID[] = {RECURSOR_STATS_OID, 127}; static const oid maintenanceCallsOID[] = {RECURSOR_STATS_OID, 128}; +static const oid rcode0AnswersOID[] = {RECURSOR_STATS_OID, 129, 0}; +static const oid rcode1AnswersOID[] = {RECURSOR_STATS_OID, 129, 1}; +static const oid rcode2AnswersOID[] = {RECURSOR_STATS_OID, 129, 2}; +static const oid rcode3AnswersOID[] = {RECURSOR_STATS_OID, 129, 3}; +static const oid rcode4AnswersOID[] = {RECURSOR_STATS_OID, 129, 4}; +static const oid rcode5AnswersOID[] = {RECURSOR_STATS_OID, 129, 5}; +static const oid rcode6AnswersOID[] = {RECURSOR_STATS_OID, 129, 6}; +static const oid rcode7AnswersOID[] = {RECURSOR_STATS_OID, 129, 7}; +static const oid rcode8AnswersOID[] = {RECURSOR_STATS_OID, 129, 8}; +static const oid rcode9AnswersOID[] = {RECURSOR_STATS_OID, 129, 9}; +static const oid rcode10AnswersOID[] = {RECURSOR_STATS_OID, 129, 10}; +static const oid rcode11AnswersOID[] = {RECURSOR_STATS_OID, 129, 11}; +static const oid rcode12AnswersOID[] = {RECURSOR_STATS_OID, 129, 12}; +static const oid rcode13AnswersOID[] = {RECURSOR_STATS_OID, 129, 13}; +static const oid rcode14AnswersOID[] = {RECURSOR_STATS_OID, 129, 14}; +static const oid rcode15AnswersOID[] = {RECURSOR_STATS_OID, 129, 15}; + + static std::unordered_map s_statsMap; /* We are never called for a GETNEXT if it's registered as a @@ -388,5 +406,24 @@ RecursorSNMPAgent::RecursorSNMPAgent(const std::string& name, const std::string& registerCounter64Stat("non-resolving-nameserver-entries", nonResolvingNameserverEntriesOID, OID_LENGTH(nonResolvingNameserverEntriesOID)); registerCounter64Stat("maintenance-usec", maintenanceUSecOID, OID_LENGTH(maintenanceUSecOID)); registerCounter64Stat("maintenance-calls", maintenanceCallsOID, OID_LENGTH(maintenanceCallsOID)); + +#define RCODE(num) registerCounter64Stat("auth-" + RCode::to_short_s(num) + "-answers", rcode ##num ## AnswersOID, OID_LENGTH(rcode ##num ## AnswersOID)) + RCODE(0); + RCODE(1); + RCODE(2); + RCODE(3); + RCODE(4); + RCODE(5); + RCODE(6); + RCODE(7); + RCODE(8); + RCODE(9); + RCODE(10); + RCODE(11); + RCODE(12); + RCODE(13); + RCODE(14); + RCODE(15); + #endif /* HAVE_NET_SNMP */ } diff --git a/pdns/recursordist/RECURSOR-MIB.txt b/pdns/recursordist/RECURSOR-MIB.txt index a4889fc9f3..816fc47d0e 100644 --- a/pdns/recursordist/RECURSOR-MIB.txt +++ b/pdns/recursordist/RECURSOR-MIB.txt @@ -51,6 +51,9 @@ rec MODULE-IDENTITY REVISION "202208220000Z" DESCRIPTION "Added internal maintenance metrics." + REVISION "202209120000Z" + DESCRIPTION "Added metrics for answers from auths by rcode" + ::= { powerdns 2 } powerdns OBJECT IDENTIFIER ::= { enterprises 43315 } @@ -1081,6 +1084,135 @@ maintenanceCount OBJECT-TYPE "Number of times internal maintenance has been called, including Lua maintenance" ::= { stats 128 } +authrcode0Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 0 (noerror) answers received" + ::= { stats 129 } + +authrcode1Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 1 (formerr) answers received" + ::= { stats 130 } + +authrcode2Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 2 (servfail) answers received" + ::= { stats 131 } + +authrcode3Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 3 (nxdomain) answers received" + ::= { stats 132 } + +authrcode4Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 4 (notimp) answers received" + ::= { stats 133 } + +authrcode5Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 5 (refused) answers received" + ::= { stats 134 } + +authrcode6Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 6 (yxdomain) answers received" + ::= { stats 135 } + +authrcode7Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 7 (yxrrset) answers received" + ::= { stats 136 } + +authrcode8Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 8 (nxrrset) answers received" + ::= { stats 137 } + +authrcode9Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 9 (notauth) answers received" + ::= { stats 138 } + +authrcode10Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 10 answers received" + ::= { stats 139 } + +authrcode11Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 11 answers received" + ::= { stats 140 } + +authrcode12Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 12 answers received" + ::= { stats 141 } + +authrcode13Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 13 answers received" + ::= { stats 142 } + +authrcode14Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 14 answers received" + ::= { stats 143 } + +authrcode15Count OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of rcode 15 answers received" + ::= { stats 144 } + + --- --- Traps / Notifications --- @@ -1256,7 +1388,23 @@ recGroup OBJECT-GROUP zoneDisallowedNotify, nonResolvingNameserverEntries, maintenanceUSec, - maintenanceCalls + maintenanceCalls, + authrcode0Count, + authrcode1Count, + authrcode2Count, + authrcode3Count, + authrcode4Count, + authrcode5Count, + authrcode6Count, + authrcode7Count, + authrcode8Count, + authrcode9Count, + authrcode10Count, + authrcode11Count, + authrcode12Count, + authrcode13Count, + authrcode14Count, + authrcode15Count } STATUS current DESCRIPTION "Objects conformance group for PowerDNS Recursor"