From 4cfb0019e65bce79953164eddf54c1bbb61add62 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 11 May 2023 14:49:43 +0200 Subject: [PATCH] MINOR: stats: report the listener's protocol along with the address in stats When "optioon socket-stats" is used in a frontend, its listeners have their own stats and will appear in the stats page. And when the stats page has "stats show-legends", then a tooltip appears on each such socket with ip:port and ID. The problem is that since QUIC arrived, it was not possible to distinguish the TCP listeners from the QUIC ones because no protocol indication was mentioned. Now we add a "proto" legend there with the protocol name, so we can see "tcp4" or "quic6" and figure how the socket is bound. --- include/haproxy/stats-t.h | 1 + src/stats.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/include/haproxy/stats-t.h b/include/haproxy/stats-t.h index d185d85ba..663641615 100644 --- a/include/haproxy/stats-t.h +++ b/include/haproxy/stats-t.h @@ -469,6 +469,7 @@ enum stat_field { ST_F_H1REQ, ST_F_H2REQ, ST_F_H3REQ, + ST_F_PROTO, /* must always be the last one */ ST_F_TOTAL_FIELDS diff --git a/src/stats.c b/src/stats.c index cc3668f55..c06fce3d3 100644 --- a/src/stats.c +++ b/src/stats.c @@ -1086,6 +1086,8 @@ static int stats_dump_fields_html(struct buffer *out, else if (*field_str(stats, ST_F_ADDR)) chunk_appendf(out, "%s, ", field_str(stats, ST_F_ADDR)); + chunk_appendf(out, "proto=%s, ", field_str(stats, ST_F_PROTO)); + /* id */ chunk_appendf(out, "id: %d", stats[ST_F_SID].u.u32); } @@ -2078,6 +2080,9 @@ int stats_fill_li_stats(struct proxy *px, struct listener *l, int flags, } } break; + case ST_F_PROTO: + metric = mkf_str(FO_STATUS, l->rx.proto->name); + break; default: /* not used for listen. If a specific metric * is requested, return an error. Otherwise continue.