From 8a90b8ea19587a4cb6a7fcb021daed5f008bb370 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 21 Oct 2016 18:15:32 +0200 Subject: [PATCH] MINOR: stats: output dcon These are denied conns. Strangely this wasn't emitted while it used to be available for a while. It corresponds to the number of connections blocked by "tcp-request connection reject". --- doc/management.txt | 1 + include/proto/dumpstats.h | 1 + src/dumpstats.c | 3 +++ 3 files changed, 5 insertions(+) diff --git a/doc/management.txt b/doc/management.txt index ad55c4302..d9aee31e6 100644 --- a/doc/management.txt +++ b/doc/management.txt @@ -1035,6 +1035,7 @@ S (Servers). 78: conn_rate_max [.F..]: highest known conn_rate 79: conn_tot [.F..]: cumulative number of connections 80: intercepted [.FB.]: cum. number of intercepted requests (monitor, stats) + 81: dcon [LF..]: requests denied by "tcp-request connection" rules 9.2) Typed output format diff --git a/include/proto/dumpstats.h b/include/proto/dumpstats.h index eba753d29..633beca1d 100644 --- a/include/proto/dumpstats.h +++ b/include/proto/dumpstats.h @@ -204,6 +204,7 @@ enum stat_field { ST_F_CONN_RATE_MAX, ST_F_CONN_TOT, ST_F_INTERCEPTED, + ST_F_DCON, /* must always be the last one */ ST_F_TOTAL_FIELDS diff --git a/src/dumpstats.c b/src/dumpstats.c index de8c69e0a..a564ab3d0 100644 --- a/src/dumpstats.c +++ b/src/dumpstats.c @@ -217,6 +217,7 @@ const char *stat_field_names[ST_F_TOTAL_FIELDS] = { [ST_F_CONN_RATE_MAX] = "conn_rate_max", [ST_F_CONN_TOT] = "conn_tot", [ST_F_INTERCEPTED] = "intercepted", + [ST_F_DCON] = "dcon", }; /* one line of stats */ @@ -4015,6 +4016,7 @@ int stats_fill_fe_stats(struct proxy *px, struct field *stats, int len) stats[ST_F_DREQ] = mkf_u64(FN_COUNTER, px->fe_counters.denied_req); stats[ST_F_DRESP] = mkf_u64(FN_COUNTER, px->fe_counters.denied_resp); stats[ST_F_EREQ] = mkf_u64(FN_COUNTER, px->fe_counters.failed_req); + stats[ST_F_DCON] = mkf_u64(FN_COUNTER, px->fe_counters.denied_conn); stats[ST_F_STATUS] = mkf_str(FO_STATUS, px->state == PR_STREADY ? "OPEN" : px->state == PR_STFULL ? "FULL" : "STOP"); stats[ST_F_PID] = mkf_u32(FO_KEY, relative_pid); stats[ST_F_IID] = mkf_u32(FO_KEY|FS_SERVICE, px->uuid); @@ -4106,6 +4108,7 @@ int stats_fill_li_stats(struct proxy *px, struct listener *l, int flags, stats[ST_F_DREQ] = mkf_u64(FN_COUNTER, l->counters->denied_req); stats[ST_F_DRESP] = mkf_u64(FN_COUNTER, l->counters->denied_resp); stats[ST_F_EREQ] = mkf_u64(FN_COUNTER, l->counters->failed_req); + stats[ST_F_DCON] = mkf_u64(FN_COUNTER, l->counters->denied_conn); stats[ST_F_STATUS] = mkf_str(FO_STATUS, (l->nbconn < l->maxconn) ? (l->state == LI_LIMITED) ? "WAITING" : "OPEN" : "FULL"); stats[ST_F_PID] = mkf_u32(FO_KEY, relative_pid); stats[ST_F_IID] = mkf_u32(FO_KEY|FS_SERVICE, px->uuid);