]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
modules/stats: collect doq statistics
authorFrantisek Tobias <frantisek.tobias@nic.cz>
Tue, 16 Dec 2025 09:53:16 +0000 (10:53 +0100)
committerFrantisek Tobias <frantisek.tobias@nic.cz>
Wed, 7 Jan 2026 13:44:27 +0000 (14:44 +0100)
modules/stats/stats.c
python/knot_resolver/manager/metrics/prometheus.py

index 6538ae4f49d8005027dcff6a658a0d1ac35702c9..b5732b4c182fa90551e907cbf0f405fb37b8e89c 100644 (file)
@@ -52,8 +52,8 @@
        X(answer,edns0) X(answer,do) \
        X(query,edns) X(query,dnssec) \
        X(request,total) X(request,total4) X(request,total6) X(request,internal) \
-       X(request,udp4) X(request,tcp4) X(request,xdp4) X(request,dot4) X(request,doh4) \
-       X(request,udp6) X(request,tcp6) X(request,xdp6) X(request,dot6) X(request,doh6) \
+       X(request,udp4) X(request,tcp4) X(request,xdp4) X(request,dot4) X(request,doh4) X(request,doq4) \
+       X(request,udp6) X(request,tcp6) X(request,xdp6) X(request,dot6) X(request,doh6) X(request,doq6) \
        X(const,end)
 
 enum const_metric {
@@ -96,6 +96,7 @@ static const struct sum_metric sum_metrics[] = {
        DEF(xdp),
        DEF(dot),
        DEF(doh),
+       DEF(doq),
        #undef DEF
 };
 static const size_t sum_metrics_len = sizeof(sum_metrics) / sizeof(sum_metrics[0]);
@@ -239,6 +240,8 @@ static int collect_transport(kr_layer_t *ctx)
                INC_PROTO(tcp);
        else if (req->qsource.flags.xdp)
                INC_PROTO(xdp);
+       else if (req->qsource.flags.quic)
+               INC_PROTO(doq);
        else
                INC_PROTO(udp);
        #undef INC_PROTO
index d1ac6af4437e0f53b0429c5d7aacd8ac60ee1130..8030e06c24bbfadf1e08e091a2ca9873c4810594 100644 (file)
@@ -184,6 +184,24 @@ if PROMETHEUS_LIB:
             label=("instance_id", sid),
             value=metrics["request"]["xdp6"],
         )
+        yield _counter(
+            "resolver_request_doq",
+            "number of external requests received over DNS-over-QUIC (RFC 9250)",
+            label=("instance_id", sid),
+            value=metrics["request"]["doq"],
+        )
+        yield _counter(
+            "resolver_request_doq4",
+            "number of external requests received over IPv4 DNS-over-QUIC (RFC 9250)",
+            label=("instance_id", sid),
+            value=metrics["request"]["doq4"],
+        )
+        yield _counter(
+            "resolver_request_doq6",
+            "number of external requests received over IPv6 DNS-over-QUIC (RF 9250)",
+            label=("instance_id", sid),
+            value=metrics["request"]["doq6"],
+        )
 
         # "answer" metrics
         yield _counter(