Skip to content
Richard Boucher edited this page Nov 1, 2022 · 32 revisions

Extending pktvisor DNS handler metrics

The objective of the DNSv2 effort is to provide a number of significant enhancements to the DNS metrics currently provided by the pktvisor DNS handler, without the constraint of requiring reverse compatibility. That said, the changes should be made to be compatible as much as possible but important or significant enhancements should not be precluded because of this.

The following enhancements should be considered candidates for DNSv2:

  • Normalize units of measure across similar metrics (packets versus queries versus responses versus transactions)
  • Consistency of interpretation of metrics when filters are applied
  • Provide explicit inbound versus outbound DNS query metrics
  • Extend support of DNS transaction metrics when filters are applied (such as RCODEs)
  • Support for new filters, such as
    • ANSWER payload content of responses
  • Support for Prometheus/OpenMetrics style histograms

Metrics Structure

  • All metrics should be based on transactions

Transaction data that needs to be cached from the query:

  • QNAME
  • ECS
  • UDP/TCP
  • Source IPv4/v6
  • Destination IPv4/v6

Metric naming structure:

Metric Name Type Unit of Measure Metric Groups
dns_events gauge packets Counters
dns_filtered gauge packets Counters
dns_deep_sampled gauge packets Counters
dns_<dir>_transactions gauge transactions Counters
dns_<dir>_ipv4 gauge transactions Counters
dns_<dir>_ipv6 gauge transactions Counters
dns_<dir>_tcp gauge transactions Counters
dns_<dir>_udp gauge transactions Counters
dns_<dir>_dnssec gauge transactions Counters
dns_<dir>_noerror gauge transactions Counters
dns_<dir>_nxdomain gauge transactions Counters
dns_<dir>_srvfail gauge transactions Counters
dns_<dir>_refused gauge transactions Counters
dns_<dir>_nodata gauge transactions Counters
dns_<dir>_cardinality_qname gauge number Cardinality
dns_<dir>_xact_rate quantiles transactions/sec Quantiles
dns_<dir>_xact_time quantiles microseconds Quantiles
dns_<dir>_top_noerror top transactions TopQnames
dns_<dir>_top_nxdomain top transactions TopQnames
dns_<dir>_top_srvfail top transactions TopQnames
dns_<dir>_top_refused top transactions TopQnames
dns_<dir>_top_nodata top transactions TopQnames
dns_<dir>_top_qname2 top transactions TopQnames
dns_<dir>_top_qname3 top transactions TopQnames
dns_<dir>_top_geo top transactions TopQnames
dns_<dir>_top_asn top transactions TopQnames
dns_<dir>_top_qtype top transactions TopQnames
dns_<dir>_top_slow_xact top transactions TopQnames
dns_<dir>_top_udp_ports top transactions TopPorts
dns_<dir>_timeout_queries gauge queries Counters
dns_<dir>_timeout_udp gauge queries TimeoutDetails
dns_<dir>_timeout_tcp gauge queries TimeoutDetails
dns_<dir>_timeout_ipv4 gauge queries TimeoutDetails
dns_<dir>_timeout_ipv6 gauge queries TimeoutDetails
dns_<dir>_timeout_top_qnames top queries TimeoutDetails
dns_<dir>_timeout_top_asn top queries TimeoutDetails
dns_<dir>_timeout_top_geo top queries TimeoutDetails
dns_<dir>_timeout_top_src_ipv4 top queries TimeoutDetails
dns_<dir>_timeout_top_src_ipv6 top queries TimeoutDetails
dns_<dir>_timeout_top_dst_ipv4 top queries TimeoutDetails
dns_<dir>_timeout_top_dst_ipv6 top queries TimeoutDetails

Clone this wiki locally