]> git.ipfire.org Git - telemetry.git/commitdiff
graphs: knot-resolver: Add a transports graph
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 10 Jul 2026 14:46:19 +0000 (14:46 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 10 Jul 2026 14:46:19 +0000 (14:46 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/daemon/colors.h
src/daemon/graphs.c
src/daemon/graphs/knot-resolver.c
src/daemon/graphs/knot-resolver.h

index cd21ed1d19321321ed85379c66015a82084c962c..ba44238af0993821562ecbdb146ef2506ac5ccae 100644 (file)
 #define COLOR_UDP                              COLOR_COOL_CYAN
 #define COLOR_ICMP                             COLOR_YELLOW_GOLD
 #define COLOR_IP_FRAG                  COLOR_YELLOW_GOLD
+#define COLOR_DOT                              COLOR_VIOLET_BLUE
+#define COLOR_DOH                              COLOR_VIVID_VIOLET
+#define COLOR_DOQ                              COLOR_PURPLE_MAGENTA
 
 // Firewall, IPS, etc.
 #define COLOR_ACCEPT                   COLOR_CLEAN_GREEN
index 5d8e6b10ed68af9985d3f746787e41fa4b6a3cd6..0b9b5faa11b0b62987d0aa1864295bf3142e1c96 100644 (file)
@@ -96,6 +96,7 @@ static const td_graph_impl* graph_impls[] = {
        // Knot Resolver
        &knot_resolver_queries_graph,
        &knot_resolver_cache_graph,
+       &knot_resolver_transports_graph,
 
        // Unbound
        &unbound_cache_performance_graph,
index aab50bbf1989a88988944118f5c1e53355ccc4fc..1793fc58cd28f69d5a8e2eb271afb1b0fdb828aa 100644 (file)
@@ -122,3 +122,69 @@ const td_graph_impl knot_resolver_cache_graph = {
        .lower_limit = 0,
        .upper_limit = LONG_MAX,
 };
+
+// Transports
+
+static int knot_resolver_transports_title(td_ctx* ctx, td_graph* graph,
+               const char* object, char* title, size_t length) {
+       return __td_string_set(title, length, _("Transports"));
+}
+
+static int knot_resolver_transports_render(td_ctx* ctx, td_graph* graph,
+               const td_graph_render_options* options, td_args* args, const char* object) {
+       int r;
+
+       // Load all sources
+       r = td_graph_load_source(graph, args, "knot-resolver", NULL);
+       if (r < 0)
+               return r;
+
+       // Draw the stacked backgrounds first
+       DRAW_AREA_BACKGROUND(args, "request_doq", NULL, COLOR_DOQ, 0);
+       DRAW_AREA_BACKGROUND(args, "request_doh", NULL, COLOR_DOH, STACKED);
+       DRAW_AREA_BACKGROUND(args, "request_dot", NULL, COLOR_DOT, STACKED);
+       DRAW_AREA_BACKGROUND(args, "request_tcp", NULL, COLOR_TCP, STACKED);
+       DRAW_AREA_BACKGROUND(args, "request_udp", NULL, COLOR_UDP, STACKED);
+
+       // Draw the area outlines afterwards
+       DRAW_AREA_OUTLINE_WITH_LABEL(args, "request_doq", NULL, COLOR_DOQ, 0, _("QUIC"));
+       PRINT_CAMM(args, "request_doq", NULL, QPS, QPS_UNIT);
+
+       DRAW_AREA_OUTLINE_WITH_LABEL(args, "request_doh", NULL, COLOR_DOH, STACKED, _("HTTPS"));
+       PRINT_CAMM(args, "request_doh", NULL, QPS, QPS_UNIT);
+
+       DRAW_AREA_OUTLINE_WITH_LABEL(args, "request_dot", NULL, COLOR_DOT, STACKED, _("TLS"));
+       PRINT_CAMM(args, "request_dot", NULL, QPS, QPS_UNIT);
+
+       DRAW_AREA_OUTLINE_WITH_LABEL(args, "request_tcp", NULL, COLOR_TCP, STACKED, _("TCP"));
+       PRINT_CAMM(args, "request_tcp", NULL, QPS, QPS_UNIT);
+
+       DRAW_AREA_OUTLINE_WITH_LABEL(args, "request_udp", NULL, COLOR_UDP, STACKED, _("UDP"));
+       PRINT_CAMM(args, "request_udp", NULL, QPS, QPS_UNIT);
+
+       PRINT_EMPTY_LINE(args);
+
+       // Show the total queries
+       PRINT_LABEL(args, _("Total"));
+       PRINT_CAMM(args, "request_total", NULL, QPS, QPS_UNIT);
+
+       // Header
+       PRINT_HEADER4(args, _("Current"), _("Average"), _("Minimum"), _("Maximum"));
+
+       return 0;
+}
+
+const td_graph_impl knot_resolver_transports_graph = {
+       .name        = "KnotResolverTransports",
+       .can_render  = knot_resolver_can_render,
+       .render      = knot_resolver_transports_render,
+       .title       = knot_resolver_transports_title,
+       .vlabel      = td_graph_vlabel_qps,
+
+       // Flags
+       .flags   = TELEMETRY_GRAPH_REVERSE,
+
+       // Limits
+       .lower_limit = 0,
+       .upper_limit = LONG_MAX,
+};
index 15cb1656b93f70798ee8ad6f061b95a43afd8490..9a998d341a55f2ffe29befa52c0d0d7a48c3056d 100644 (file)
@@ -25,5 +25,6 @@
 
 extern const td_graph_impl knot_resolver_queries_graph;
 extern const td_graph_impl knot_resolver_cache_graph;
+extern const td_graph_impl knot_resolver_transports_graph;
 
 #endif /* TELEMETRY_GRAPH_KNOT_RESOLVER_H */