Skip to content

### Feature Request: Expose Forwarder / Upstream Server Metrics via Query Logs and Dashboard API #2127

Description

@JF62

When configuring multiple forwarders (upstream DNS servers) in Technitium, the server beautifully performs latency-based selection or concurrent forwarding to select the fastest response.

However, this data is currently completely transient and discarded after the resolution decision. When using third-party analytics dashboards (like tdns-stats), it is currently impossible for administrators to see a breakdown of:

  1. Which forwarder (upstream IP) handled how many queries.
  2. What the average round-trip time (RTT) / performance per forwarder looks like.

As confirmed by the developer of tdns-stats, neither the Query Logs app schema nor the /api/dashboard/stats endpoint currently record or expose which upstream nameserver actually produced the response for a given recursive query.

It would be incredibly valuable if Technitium could log and expose per-forwarder metrics. Specifically:

  1. Query Logs App Update: Add a forwarder_ip column to the Query Logs schema (e.g., SQLite/PostgreSQL) for recursive responses, capturing which upstream IP successfully answered the query.
  2. Dashboard API Extension: Add a new stats section (e.g., forwarderStats or topForwarders) to the Dashboard API that lists active forwarders along with their query counts and mean RTT.

Looking at the DNS Client tool (api/dnsClient/resolve), but that's a manual, diagnostic one-shot utility, not an aggregated production metric.

Having this data available would allow administrators - especially those running high-availability cluster setups - to monitor upstream DNS health, compare performance (e.g., Cloudflare vs. Quad9 in their specific routing environment), and optimize their forwarder configuration based on real historical data.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions