| haproxy_backend_http_connect_time_average_seconds | Avg. connect time for last 1024 successful connections. |
| haproxy_backend_http_response_time_average_seconds | Avg. response time for last 1024 successful connections. |
| haproxy_backend_http_total_time_average_seconds | Avg. total time for last 1024 successful connections. |
+| haproxy_backend_max_queue_time_seconds | Maximum observed queue time. |
+| haproxy_backend_max_connect_time_seconds | Maximum observed connect time. |
+| haproxy_backend_max_response_time_seconds | Maximum observed response time. |
+| haproxy_backend_max_total_time_seconds | Maximum observed total time. |
| haproxy_backend_requests_denied_total | Total number of denied requests. |
| haproxy_backend_responses_denied_total | Total number of denied responses. |
| haproxy_backend_connection_errors_total | Total number of connection errors. |
| haproxy_server_http_connect_time_average_seconds | Avg. connect time for last 1024 successful connections. |
| haproxy_server_http_response_time_average_seconds | Avg. response time for last 1024 successful connections. |
| haproxy_server_http_total_time_average_seconds | Avg. total time for last 1024 successful connections. |
+| haproxy_server_max_queue_time_seconds | Maximum observed queue time. |
+| haproxy_server_max_connect_time_seconds | Maximum observed connect time. |
+| haproxy_server_max_response_time_seconds | Maximum observed response time. |
+| haproxy_server_max_total_time_seconds | Maximum observed total time. |
| haproxy_server_connection_attempts_total | Total number of connection establishment attempts. |
| haproxy_server_connection_reuses_total | Total number of connection reuses. |
| haproxy_server_responses_denied_total | Total number of denied responses. |
[ST_F_REUSE] = 0,
[ST_F_CACHE_LOOKUPS] = ST_F_CACHE_HITS,
[ST_F_CACHE_HITS] = ST_F_COMP_IN,
+ [ST_F_QT_MAX] = 0,
+ [ST_F_CT_MAX] = 0,
+ [ST_F_RT_MAX] = 0,
+ [ST_F_TT_MAX] = 0,
};
/* Matrix used to dump backend metrics. Each metric points to the next one to be
[ST_F_QTIME] = ST_F_CTIME,
[ST_F_CTIME] = ST_F_RTIME,
[ST_F_RTIME] = ST_F_TTIME,
- [ST_F_TTIME] = ST_F_DREQ,
+ [ST_F_TTIME] = ST_F_QT_MAX,
[ST_F_AGENT_STATUS] = 0,
[ST_F_AGENT_CODE] = 0,
[ST_F_AGENT_DURATION] = 0,
[ST_F_REUSE] = ST_F_BIN,
[ST_F_CACHE_LOOKUPS] = ST_F_CACHE_HITS,
[ST_F_CACHE_HITS] = ST_F_COMP_IN,
+ [ST_F_QT_MAX] = ST_F_CT_MAX,
+ [ST_F_CT_MAX] = ST_F_RT_MAX,
+ [ST_F_RT_MAX] = ST_F_TT_MAX,
+ [ST_F_TT_MAX] = ST_F_DREQ,
};
/* Matrix used to dump server metrics. Each metric points to the next one to be
[ST_F_QTIME] = ST_F_CTIME,
[ST_F_CTIME] = ST_F_RTIME,
[ST_F_RTIME] = ST_F_TTIME,
- [ST_F_TTIME] = ST_F_CONNECT,
+ [ST_F_TTIME] = ST_F_QT_MAX,
[ST_F_AGENT_STATUS] = 0,
[ST_F_AGENT_CODE] = 0,
[ST_F_AGENT_DURATION] = 0,
[ST_F_REUSE] = ST_F_DRESP,
[ST_F_CACHE_LOOKUPS] = 0,
[ST_F_CACHE_HITS] = 0,
+ [ST_F_QT_MAX] = ST_F_CT_MAX,
+ [ST_F_CT_MAX] = ST_F_RT_MAX,
+ [ST_F_RT_MAX] = ST_F_TT_MAX,
+ [ST_F_TT_MAX] = ST_F_CONNECT,
};
/* Name of all info fields */
[ST_F_REUSE] = IST("connection_reuses_total"),
[ST_F_CACHE_LOOKUPS] = IST("http_cache_lookups_total"),
[ST_F_CACHE_HITS] = IST("http_cache_hits_total"),
+ [ST_F_QT_MAX] = IST("max_queue_time_seconds"),
+ [ST_F_CT_MAX] = IST("max_connect_time_seconds"),
+ [ST_F_RT_MAX] = IST("max_response_time_seconds"),
+ [ST_F_TT_MAX] = IST("max_total_time_seconds"),
};
/* Description of all info fields */
[ST_F_REUSE] = IST("Total number of connection reuses."),
[ST_F_CACHE_LOOKUPS] = IST("Total number of HTTP cache lookups."),
[ST_F_CACHE_HITS] = IST("Total number of HTTP cache hits."),
+ [ST_F_QT_MAX] = IST("Maximum observed time spent in the queue"),
+ [ST_F_CT_MAX] = IST("Maximum observed time spent waiting for a connection to complete"),
+ [ST_F_RT_MAX] = IST("Maximum observed time spent waiting for a server response"),
+ [ST_F_TT_MAX] = IST("Maximum observed total request+response time (request+queue+connect+response+processing)"),
};
/* Specific labels for all info fields. Empty by default. */
[ST_F_REUSE] = IST("counter"),
[ST_F_CACHE_LOOKUPS] = IST("counter"),
[ST_F_CACHE_HITS] = IST("counter"),
+ [ST_F_QT_MAX] = IST("gauge"),
+ [ST_F_CT_MAX] = IST("gauge"),
+ [ST_F_RT_MAX] = IST("gauge"),
+ [ST_F_TT_MAX] = IST("gauge"),
};
/* Return the server status: 0=DOWN, 1=UP, 2=MAINT, 3=DRAIN, 4=NOLB. */
secs = (double)swrate_avg(px->be_counters.t_time, TIME_STATS_SAMPLES) / 1000.0;
metric = mkf_flt(FN_AVG, secs);
break;
+ case ST_F_QT_MAX:
+ secs = (double)px->be_counters.qtime_max / 1000.0;
+ metric = mkf_flt(FN_MAX, secs);
+ break;
+ case ST_F_CT_MAX:
+ secs = (double)px->be_counters.ctime_max / 1000.0;
+ metric = mkf_flt(FN_MAX, secs);
+ break;
+ case ST_F_RT_MAX:
+ secs = (double)px->be_counters.dtime_max / 1000.0;
+ metric = mkf_flt(FN_MAX, secs);
+ break;
+ case ST_F_TT_MAX:
+ secs = (double)px->be_counters.ttime_max / 1000.0;
+ metric = mkf_flt(FN_MAX, secs);
+ break;
case ST_F_DREQ:
metric = mkf_u64(FN_COUNTER, px->be_counters.denied_req);
break;
secs = (double)swrate_avg(sv->counters.t_time, TIME_STATS_SAMPLES) / 1000.0;
metric = mkf_flt(FN_AVG, secs);
break;
+ case ST_F_QT_MAX:
+ secs = (double)sv->counters.qtime_max / 1000.0;
+ metric = mkf_flt(FN_MAX, secs);
+ break;
+ case ST_F_CT_MAX:
+ secs = (double)sv->counters.ctime_max / 1000.0;
+ metric = mkf_flt(FN_MAX, secs);
+ break;
+ case ST_F_RT_MAX:
+ secs = (double)sv->counters.dtime_max / 1000.0;
+ metric = mkf_flt(FN_MAX, secs);
+ break;
+ case ST_F_TT_MAX:
+ secs = (double)sv->counters.ttime_max / 1000.0;
+ metric = mkf_flt(FN_MAX, secs);
+ break;
case ST_F_CONNECT:
metric = mkf_u64(FN_COUNTER, sv->counters.connect);
break;