From: Michael Tremer Date: Fri, 10 Jul 2026 14:46:19 +0000 (+0000) Subject: graphs: knot-resolver: Add a transports graph X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2338d1f942bff168cae5e091ee3e060e70aef6d1;p=telemetry.git graphs: knot-resolver: Add a transports graph Signed-off-by: Michael Tremer --- diff --git a/src/daemon/colors.h b/src/daemon/colors.h index cd21ed1..ba44238 100644 --- a/src/daemon/colors.h +++ b/src/daemon/colors.h @@ -114,6 +114,9 @@ #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 diff --git a/src/daemon/graphs.c b/src/daemon/graphs.c index 5d8e6b1..0b9b5fa 100644 --- a/src/daemon/graphs.c +++ b/src/daemon/graphs.c @@ -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, diff --git a/src/daemon/graphs/knot-resolver.c b/src/daemon/graphs/knot-resolver.c index aab50bb..1793fc5 100644 --- a/src/daemon/graphs/knot-resolver.c +++ b/src/daemon/graphs/knot-resolver.c @@ -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, +}; diff --git a/src/daemon/graphs/knot-resolver.h b/src/daemon/graphs/knot-resolver.h index 15cb165..9a998d3 100644 --- a/src/daemon/graphs/knot-resolver.h +++ b/src/daemon/graphs/knot-resolver.h @@ -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 */