]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: Add fe_req_rate sample fetch
authorNenad Merdanovic <nmerdan@anine.io>
Mon, 3 Oct 2016 02:57:37 +0000 (04:57 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 3 Oct 2016 14:08:09 +0000 (16:08 +0200)
The fe_req_rate is similar to fe_sess_rate, but fetches the number
of HTTP requests per second instead of connections/sessions per second.

Signed-off-by: Nenad Merdanovic <nmerdan@anine.io>
doc/configuration.txt
src/frontend.c

index dc43003e84a4a7a6d333ba9b638d58380a392dfc..b5e67fe3540041502c2c3cdc9979167f05d39bfd 100644 (file)
@@ -12572,6 +12572,11 @@ fe_conn([<frontend>]) : integer
   statistics to servers in HTTP headers. See also the "dst_conn", "be_conn",
   "fe_sess_rate" fetches.
 
+fe_req_rate([<frontend>]) : integer
+  Returns an integer value corresponding to the number of HTTP requests per
+  second sent to a frontend. This number can differ from "fe_sess_rate" in
+  situations where client-side keep-alive is enabled.
+
 fe_sess_rate([<frontend>]) : integer
   Returns an integer value corresponding to the sessions creation rate on the
   frontend, in number of new sessions per second. This is used with ACLs to
index 74ec0ab6e843b9fecf32506543da4ae40539204b..5cc6202a26c5495a53e156c3eca1b002d60641ab 100644 (file)
@@ -167,6 +167,19 @@ smp_fetch_fe_id(const struct arg *args, struct sample *smp, const char *kw, void
        return 1;
 }
 
+/* set temp integer to the number of HTTP requests per second reaching the frontend.
+ * Accepts exactly 1 argument. Argument is a frontend, other types will cause
+ * an undefined behaviour.
+ */
+static int
+smp_fetch_fe_req_rate(const struct arg *args, struct sample *smp, const char *kw, void *private)
+{
+       smp->flags = SMP_F_VOL_TEST;
+       smp->data.type = SMP_T_SINT;
+       smp->data.u.sint = read_freq_ctr(&args->data.prx->fe_req_per_sec);
+       return 1;
+}
+
 /* set temp integer to the number of connections per second reaching the frontend.
  * Accepts exactly 1 argument. Argument is a frontend, other types will cause
  * an undefined behaviour.
@@ -200,6 +213,7 @@ smp_fetch_fe_conn(const struct arg *args, struct sample *smp, const char *kw, vo
 static struct sample_fetch_kw_list smp_kws = {ILH, {
        { "fe_conn",      smp_fetch_fe_conn,      ARG1(1,FE), NULL, SMP_T_SINT, SMP_USE_INTRN, },
        { "fe_id",        smp_fetch_fe_id,        0,          NULL, SMP_T_SINT, SMP_USE_FTEND, },
+       { "fe_req_rate",  smp_fetch_fe_req_rate,  ARG1(1,FE), NULL, SMP_T_SINT, SMP_USE_INTRN, },
        { "fe_sess_rate", smp_fetch_fe_sess_rate, ARG1(1,FE), NULL, SMP_T_SINT, SMP_USE_INTRN, },
        { /* END */ },
 }};