These requests are mainly monitor requests, as well as stats requests when
the stats are processed by the frontend. Having this counter helps explain
the difference in number of sessions that is sometimes observed between a
frontend and a backend.
long long srv_aborts; /* aborted responses during DATA phase caused by the server */
long long retries; /* retried and redispatched connections (BE only) */
long long redispatches; /* retried and redispatched connections (BE only) */
+ long long intercepted_req; /* number of monitoring or stats requests intercepted by the frontend */
union {
struct {
for (i = 1; i < 6; i++)
chunk_printf(&msg, " %dxx=%lld,", i, px->fe_counters.p.http.rsp[i]);
- chunk_printf(&msg, " other=%lld\"", px->fe_counters.p.http.rsp[0]);
+ chunk_printf(&msg, " other=%lld,", px->fe_counters.p.http.rsp[0]);
+ chunk_printf(&msg, " intercepted=%lld\"", px->fe_counters.intercepted_req);
}
chunk_printf(&msg,
struct acl_cond *cond;
s->flags |= SN_MONITOR;
+ s->fe->fe_counters.intercepted_req++;
/* Check if we want to fail this monitor request or not */
list_for_each_entry(cond, &s->fe->mon_fail_cond, list) {
s->rep->prod->applet.private = s;
s->rep->prod->applet.st0 = s->rep->prod->applet.st1 = 0;
req->analysers = 0;
+ if (s->fe == s->be) /* report it if the request was intercepted by the frontend */
+ s->fe->fe_counters.intercepted_req++;
return 0;