MINOR: stats: fill all the descriptions for "show info" and "show stat"
Now "show info desc", "show info typed desc" and "show stat typed desc"
will report (hopefully) accurate descriptions of each field. These ones
were verified in the code. When some metrics are specific to the process
or the thread, they are indicated. Sometimes a config option is known
for a setting and it is reported as well. The purpose mainly is to help
sysadmins in field more easily sort out issues vs non-issues. In part
inspired by this very informative talk :
https://kernel-recipes.org/en/2019/metrics-are-money/
Example:
$ socat - /var/run/haproxy.sock <<< "show info desc"
Name: HAProxy:"Product name"
Version: 2.1-dev2-991035-31:"Product version"
Release_date: 2019/10/09:"Date of latest source code update"
Nbthread: 1:"Number of started threads (global.nbthread)"
Nbproc: 1:"Number of started worker processes (global.nbproc)"
Process_num: 1:"Relative process number (1..Nbproc)"
Pid: 11975:"This worker process identifier for the system"
Uptime: 0d 0h00m10s:"How long ago this worker process was started (days+hours+minutes+seconds)"
Uptime_sec: 10:"How long ago this worker process was started (seconds)"
Memmax_MB: 0:"Worker process's hard limit on memory usage in MB (-m on command line)"
PoolAlloc_MB: 0:"Amount of memory allocated in pools (in MB)"
PoolUsed_MB: 0:"Amount of pool memory currently used (in MB)"
PoolFailed: 0:"Number of failed pool allocations since this worker was started"
Ulimit-n: 300000:"Hard limit on the number of per-process file descriptors"
Maxsock: 300000:"Hard limit on the number of per-process sockets"
Maxconn: 149982:"Hard limit on the number of per-process connections (configured or imposed by Ulimit-n)"
Hard_maxconn: 149982:"Hard limit on the number of per-process connections (imposed by Memmax_MB or Ulimit-n)"
CurrConns: 0:"Current number of connections on this worker process"
CumConns: 1:"Total number of connections on this worker process since started"
CumReq: 1:"Total number of requests on this worker process since started"
MaxSslConns: 0:"Hard limit on the number of per-process SSL endpoints (front+back), 0=unlimited"
CurrSslConns: 0:"Current number of SSL endpoints on this worker process (front+back)"
CumSslConns: 0:"Total number of SSL endpoints on this worker process since started (front+back)"
Maxpipes: 0:"Hard limit on the number of pipes for splicing, 0=unlimited"
PipesUsed: 0:"Current number of pipes in use in this worker process"
PipesFree: 0:"Current number of allocated and available pipes in this worker process"
ConnRate: 0:"Number of front connections created on this worker process over the last second"
ConnRateLimit: 0:"Hard limit for ConnRate (global.maxconnrate)"
MaxConnRate: 0:"Highest ConnRate reached on this worker process since started (in connections per second)"
SessRate: 0:"Number of sessions created on this worker process over the last second"
SessRateLimit: 0:"Hard limit for SessRate (global.maxsessrate)"
MaxSessRate: 0:"Highest SessRate reached on this worker process since started (in sessions per second)"
SslRate: 0:"Number of SSL connections created on this worker process over the last second"
SslRateLimit: 0:"Hard limit for SslRate (global.maxsslrate)"
MaxSslRate: 0:"Highest SslRate reached on this worker process since started (in connections per second)"
SslFrontendKeyRate: 0:"Number of SSL keys created on frontends in this worker process over the last second"
SslFrontendMaxKeyRate: 0:"Highest SslFrontendKeyRate reached on this worker process since started (in SSL keys per second)"
SslFrontendSessionReuse_pct: 0:"Percent of frontend SSL connections which did not require a new key"
SslBackendKeyRate: 0:"Number of SSL keys created on backends in this worker process over the last second"
SslBackendMaxKeyRate: 0:"Highest SslBackendKeyRate reached on this worker process since started (in SSL keys per second)"
SslCacheLookups: 0:"Total number of SSL session ID lookups in the SSL session cache on this worker since started"
SslCacheMisses: 0:"Total number of SSL session ID lookups that didn't find a session in the SSL session cache on this worker since started"
CompressBpsIn: 0:"Number of bytes submitted to HTTP compression in this worker process over the last second"
CompressBpsOut: 0:"Number of bytes out of HTTP compression in this worker process over the last second"
CompressBpsRateLim: 0:"Limit of CompressBpsOut beyond which HTTP compression is automatically disabled"
Tasks: 10:"Total number of tasks in the current worker process (active + sleeping)"
Run_queue: 1:"Total number of active tasks+tasklets in the current worker process"
Idle_pct: 100:"Percentage of last second spent waiting in the current worker thread"
node: wtap.local:"Node name (global.node)"
Stopping: 0:"1 if the worker process is currently stopping, otherwise zero"
Jobs: 14:"Current number of active jobs on the current worker process (frontend connections, master connections, listeners)"
Unstoppable Jobs: 0:"Current number of unstoppable jobs on the current worker process (master connections)"
Listeners: 13:"Current number of active listeners on the current worker process"
ActivePeers: 0:"Current number of verified active peers connections on the current worker process"
ConnectedPeers: 0:"Current number of peers having passed the connection step on the current worker process"
DroppedLogs: 0:"Total number of dropped logs for current worker process since started"
BusyPolling: 0:"1 if busy-polling is currently in use on the worker process, otherwise zero (config.busy-polling)"
FailedResolutions: 0:"Total number of failed DNS resolutions in current worker process since started"
TotalBytesOut: 0:"Total number of bytes emitted by current worker process since started"
BytesOutRate: 0:"Number of bytes emitted by current worker process over the last second"
diff --git a/src/stats.c b/src/stats.c
index 69fe9a8..e1b168e 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -89,162 +89,162 @@
* be lower case or CamelCase while the enum entries must be upper case.
*/
const struct name_desc info_fields[INF_TOTAL_FIELDS] = {
- [INF_NAME] { .name = "Name", .desc = "" },
- [INF_VERSION] { .name = "Version", .desc = "" },
- [INF_RELEASE_DATE] { .name = "Release_date", .desc = "" },
- [INF_NBTHREAD] { .name = "Nbthread", .desc = "" },
- [INF_NBPROC] { .name = "Nbproc", .desc = "" },
- [INF_PROCESS_NUM] { .name = "Process_num", .desc = "" },
- [INF_PID] { .name = "Pid", .desc = "" },
- [INF_UPTIME] { .name = "Uptime", .desc = "" },
- [INF_UPTIME_SEC] { .name = "Uptime_sec", .desc = "" },
- [INF_MEMMAX_MB] { .name = "Memmax_MB", .desc = "" },
- [INF_POOL_ALLOC_MB] { .name = "PoolAlloc_MB", .desc = "" },
- [INF_POOL_USED_MB] { .name = "PoolUsed_MB", .desc = "" },
- [INF_POOL_FAILED] { .name = "PoolFailed", .desc = "" },
- [INF_ULIMIT_N] { .name = "Ulimit-n", .desc = "" },
- [INF_MAXSOCK] { .name = "Maxsock", .desc = "" },
- [INF_MAXCONN] { .name = "Maxconn", .desc = "" },
- [INF_HARD_MAXCONN] { .name = "Hard_maxconn", .desc = "" },
- [INF_CURR_CONN] { .name = "CurrConns", .desc = "" },
- [INF_CUM_CONN] { .name = "CumConns", .desc = "" },
- [INF_CUM_REQ] { .name = "CumReq", .desc = "" },
- [INF_MAX_SSL_CONNS] { .name = "MaxSslConns", .desc = "" },
- [INF_CURR_SSL_CONNS] { .name = "CurrSslConns", .desc = "" },
- [INF_CUM_SSL_CONNS] { .name = "CumSslConns", .desc = "" },
- [INF_MAXPIPES] { .name = "Maxpipes", .desc = "" },
- [INF_PIPES_USED] { .name = "PipesUsed", .desc = "" },
- [INF_PIPES_FREE] { .name = "PipesFree", .desc = "" },
- [INF_CONN_RATE] { .name = "ConnRate", .desc = "" },
- [INF_CONN_RATE_LIMIT] { .name = "ConnRateLimit", .desc = "" },
- [INF_MAX_CONN_RATE] { .name = "MaxConnRate", .desc = "" },
- [INF_SESS_RATE] { .name = "SessRate", .desc = "" },
- [INF_SESS_RATE_LIMIT] { .name = "SessRateLimit", .desc = "" },
- [INF_MAX_SESS_RATE] { .name = "MaxSessRate", .desc = "" },
- [INF_SSL_RATE] { .name = "SslRate", .desc = "" },
- [INF_SSL_RATE_LIMIT] { .name = "SslRateLimit", .desc = "" },
- [INF_MAX_SSL_RATE] { .name = "MaxSslRate", .desc = "" },
- [INF_SSL_FRONTEND_KEY_RATE] { .name = "SslFrontendKeyRate", .desc = "" },
- [INF_SSL_FRONTEND_MAX_KEY_RATE] { .name = "SslFrontendMaxKeyRate", .desc = "" },
- [INF_SSL_FRONTEND_SESSION_REUSE_PCT] { .name = "SslFrontendSessionReuse_pct", .desc = "" },
- [INF_SSL_BACKEND_KEY_RATE] { .name = "SslBackendKeyRate", .desc = "" },
- [INF_SSL_BACKEND_MAX_KEY_RATE] { .name = "SslBackendMaxKeyRate", .desc = "" },
- [INF_SSL_CACHE_LOOKUPS] { .name = "SslCacheLookups", .desc = "" },
- [INF_SSL_CACHE_MISSES] { .name = "SslCacheMisses", .desc = "" },
- [INF_COMPRESS_BPS_IN] { .name = "CompressBpsIn", .desc = "" },
- [INF_COMPRESS_BPS_OUT] { .name = "CompressBpsOut", .desc = "" },
- [INF_COMPRESS_BPS_RATE_LIM] { .name = "CompressBpsRateLim", .desc = "" },
- [INF_ZLIB_MEM_USAGE] { .name = "ZlibMemUsage", .desc = "" },
- [INF_MAX_ZLIB_MEM_USAGE] { .name = "MaxZlibMemUsage", .desc = "" },
- [INF_TASKS] { .name = "Tasks", .desc = "" },
- [INF_RUN_QUEUE] { .name = "Run_queue", .desc = "" },
- [INF_IDLE_PCT] { .name = "Idle_pct", .desc = "" },
- [INF_NODE] { .name = "node", .desc = "" },
- [INF_DESCRIPTION] { .name = "description", .desc = "" },
- [INF_STOPPING] { .name = "Stopping", .desc = "" },
- [INF_JOBS] { .name = "Jobs", .desc = "" },
- [INF_UNSTOPPABLE_JOBS] { .name = "Unstoppable Jobs", .desc = "" },
- [INF_LISTENERS] { .name = "Listeners", .desc = "" },
- [INF_ACTIVE_PEERS] { .name = "ActivePeers", .desc = "" },
- [INF_CONNECTED_PEERS] { .name = "ConnectedPeers", .desc = "" },
- [INF_DROPPED_LOGS] { .name = "DroppedLogs", .desc = "" },
- [INF_BUSY_POLLING] { .name = "BusyPolling", .desc = "" },
- [INF_FAILED_RESOLUTIONS] { .name = "FailedResolutions", .desc = "" },
- [INF_TOTAL_BYTES_OUT] { .name = "TotalBytesOut", .desc = "" },
- [INF_BYTES_OUT_RATE] { .name = "BytesOutRate", .desc = "" },
+ [INF_NAME] { .name = "Name", .desc = "Product name" },
+ [INF_VERSION] { .name = "Version", .desc = "Product version" },
+ [INF_RELEASE_DATE] { .name = "Release_date", .desc = "Date of latest source code update" },
+ [INF_NBTHREAD] { .name = "Nbthread", .desc = "Number of started threads (global.nbthread)" },
+ [INF_NBPROC] { .name = "Nbproc", .desc = "Number of started worker processes (global.nbproc)" },
+ [INF_PROCESS_NUM] { .name = "Process_num", .desc = "Relative worker process number (1..Nbproc)" },
+ [INF_PID] { .name = "Pid", .desc = "This worker process identifier for the system" },
+ [INF_UPTIME] { .name = "Uptime", .desc = "How long ago this worker process was started (days+hours+minutes+seconds)" },
+ [INF_UPTIME_SEC] { .name = "Uptime_sec", .desc = "How long ago this worker process was started (seconds)" },
+ [INF_MEMMAX_MB] { .name = "Memmax_MB", .desc = "Worker process's hard limit on memory usage in MB (-m on command line)" },
+ [INF_POOL_ALLOC_MB] { .name = "PoolAlloc_MB", .desc = "Amount of memory allocated in pools (in MB)" },
+ [INF_POOL_USED_MB] { .name = "PoolUsed_MB", .desc = "Amount of pool memory currently used (in MB)" },
+ [INF_POOL_FAILED] { .name = "PoolFailed", .desc = "Number of failed pool allocations since this worker was started" },
+ [INF_ULIMIT_N] { .name = "Ulimit-n", .desc = "Hard limit on the number of per-process file descriptors" },
+ [INF_MAXSOCK] { .name = "Maxsock", .desc = "Hard limit on the number of per-process sockets" },
+ [INF_MAXCONN] { .name = "Maxconn", .desc = "Hard limit on the number of per-process connections (configured or imposed by Ulimit-n)" },
+ [INF_HARD_MAXCONN] { .name = "Hard_maxconn", .desc = "Hard limit on the number of per-process connections (imposed by Memmax_MB or Ulimit-n)" },
+ [INF_CURR_CONN] { .name = "CurrConns", .desc = "Current number of connections on this worker process" },
+ [INF_CUM_CONN] { .name = "CumConns", .desc = "Total number of connections on this worker process since started" },
+ [INF_CUM_REQ] { .name = "CumReq", .desc = "Total number of requests on this worker process since started" },
+ [INF_MAX_SSL_CONNS] { .name = "MaxSslConns", .desc = "Hard limit on the number of per-process SSL endpoints (front+back), 0=unlimited" },
+ [INF_CURR_SSL_CONNS] { .name = "CurrSslConns", .desc = "Current number of SSL endpoints on this worker process (front+back)" },
+ [INF_CUM_SSL_CONNS] { .name = "CumSslConns", .desc = "Total number of SSL endpoints on this worker process since started (front+back)" },
+ [INF_MAXPIPES] { .name = "Maxpipes", .desc = "Hard limit on the number of pipes for splicing, 0=unlimited" },
+ [INF_PIPES_USED] { .name = "PipesUsed", .desc = "Current number of pipes in use in this worker process" },
+ [INF_PIPES_FREE] { .name = "PipesFree", .desc = "Current number of allocated and available pipes in this worker process" },
+ [INF_CONN_RATE] { .name = "ConnRate", .desc = "Number of front connections created on this worker process over the last second" },
+ [INF_CONN_RATE_LIMIT] { .name = "ConnRateLimit", .desc = "Hard limit for ConnRate (global.maxconnrate)" },
+ [INF_MAX_CONN_RATE] { .name = "MaxConnRate", .desc = "Highest ConnRate reached on this worker process since started (in connections per second)" },
+ [INF_SESS_RATE] { .name = "SessRate", .desc = "Number of sessions created on this worker process over the last second" },
+ [INF_SESS_RATE_LIMIT] { .name = "SessRateLimit", .desc = "Hard limit for SessRate (global.maxsessrate)" },
+ [INF_MAX_SESS_RATE] { .name = "MaxSessRate", .desc = "Highest SessRate reached on this worker process since started (in sessions per second)" },
+ [INF_SSL_RATE] { .name = "SslRate", .desc = "Number of SSL connections created on this worker process over the last second" },
+ [INF_SSL_RATE_LIMIT] { .name = "SslRateLimit", .desc = "Hard limit for SslRate (global.maxsslrate)" },
+ [INF_MAX_SSL_RATE] { .name = "MaxSslRate", .desc = "Highest SslRate reached on this worker process since started (in connections per second)" },
+ [INF_SSL_FRONTEND_KEY_RATE] { .name = "SslFrontendKeyRate", .desc = "Number of SSL keys created on frontends in this worker process over the last second" },
+ [INF_SSL_FRONTEND_MAX_KEY_RATE] { .name = "SslFrontendMaxKeyRate", .desc = "Highest SslFrontendKeyRate reached on this worker process since started (in SSL keys per second)" },
+ [INF_SSL_FRONTEND_SESSION_REUSE_PCT] { .name = "SslFrontendSessionReuse_pct", .desc = "Percent of frontend SSL connections which did not require a new key" },
+ [INF_SSL_BACKEND_KEY_RATE] { .name = "SslBackendKeyRate", .desc = "Number of SSL keys created on backends in this worker process over the last second" },
+ [INF_SSL_BACKEND_MAX_KEY_RATE] { .name = "SslBackendMaxKeyRate", .desc = "Highest SslBackendKeyRate reached on this worker process since started (in SSL keys per second)" },
+ [INF_SSL_CACHE_LOOKUPS] { .name = "SslCacheLookups", .desc = "Total number of SSL session ID lookups in the SSL session cache on this worker since started" },
+ [INF_SSL_CACHE_MISSES] { .name = "SslCacheMisses", .desc = "Total number of SSL session ID lookups that didn't find a session in the SSL session cache on this worker since started" },
+ [INF_COMPRESS_BPS_IN] { .name = "CompressBpsIn", .desc = "Number of bytes submitted to the HTTP compressor in this worker process over the last second" },
+ [INF_COMPRESS_BPS_OUT] { .name = "CompressBpsOut", .desc = "Number of bytes emitted by the HTTP compressor in this worker process over the last second" },
+ [INF_COMPRESS_BPS_RATE_LIM] { .name = "CompressBpsRateLim", .desc = "Limit of CompressBpsOut beyond which HTTP compression is automatically disabled" },
+ [INF_ZLIB_MEM_USAGE] { .name = "ZlibMemUsage", .desc = "Amount of memory currently used by HTTP compression on the current worker process (in bytes)" },
+ [INF_MAX_ZLIB_MEM_USAGE] { .name = "MaxZlibMemUsage", .desc = "Limit on the amount of memory used by HTTP compression above which it is automatically disabled (in bytes, see global.maxzlibmem)" },
+ [INF_TASKS] { .name = "Tasks", .desc = "Total number of tasks in the current worker process (active + sleeping)" },
+ [INF_RUN_QUEUE] { .name = "Run_queue", .desc = "Total number of active tasks+tasklets in the current worker process" },
+ [INF_IDLE_PCT] { .name = "Idle_pct", .desc = "Percentage of last second spent waiting in the current worker thread" },
+ [INF_NODE] { .name = "node", .desc = "Node name (global.node)" },
+ [INF_DESCRIPTION] { .name = "description", .desc = "Node description (global.description)" },
+ [INF_STOPPING] { .name = "Stopping", .desc = "1 if the worker process is currently stopping, otherwise zero" },
+ [INF_JOBS] { .name = "Jobs", .desc = "Current number of active jobs on the current worker process (frontend connections, master connections, listeners)" },
+ [INF_UNSTOPPABLE_JOBS] { .name = "Unstoppable Jobs", .desc = "Current number of unstoppable jobs on the current worker process (master connections)" },
+ [INF_LISTENERS] { .name = "Listeners", .desc = "Current number of active listeners on the current worker process" },
+ [INF_ACTIVE_PEERS] { .name = "ActivePeers", .desc = "Current number of verified active peers connections on the current worker process" },
+ [INF_CONNECTED_PEERS] { .name = "ConnectedPeers", .desc = "Current number of peers having passed the connection step on the current worker process" },
+ [INF_DROPPED_LOGS] { .name = "DroppedLogs", .desc = "Total number of dropped logs for current worker process since started" },
+ [INF_BUSY_POLLING] { .name = "BusyPolling", .desc = "1 if busy-polling is currently in use on the worker process, otherwise zero (config.busy-polling)" },
+ [INF_FAILED_RESOLUTIONS] { .name = "FailedResolutions", .desc = "Total number of failed DNS resolutions in current worker process since started" },
+ [INF_TOTAL_BYTES_OUT] { .name = "TotalBytesOut", .desc = "Total number of bytes emitted by current worker process since started" },
+ [INF_BYTES_OUT_RATE] { .name = "BytesOutRate", .desc = "Number of bytes emitted by current worker process over the last second" },
};
const struct name_desc stat_fields[ST_F_TOTAL_FIELDS] = {
- [ST_F_PXNAME] { .name = "pxname", .desc = "" },
- [ST_F_SVNAME] { .name = "svname", .desc = "" },
- [ST_F_QCUR] { .name = "qcur", .desc = "" },
- [ST_F_QMAX] { .name = "qmax", .desc = "" },
- [ST_F_SCUR] { .name = "scur", .desc = "" },
- [ST_F_SMAX] { .name = "smax", .desc = "" },
- [ST_F_SLIM] { .name = "slim", .desc = "" },
- [ST_F_STOT] { .name = "stot", .desc = "" },
- [ST_F_BIN] { .name = "bin", .desc = "" },
- [ST_F_BOUT] { .name = "bout", .desc = "" },
- [ST_F_DREQ] { .name = "dreq", .desc = "" },
- [ST_F_DRESP] { .name = "dresp", .desc = "" },
- [ST_F_EREQ] { .name = "ereq", .desc = "" },
- [ST_F_ECON] { .name = "econ", .desc = "" },
- [ST_F_ERESP] { .name = "eresp", .desc = "" },
- [ST_F_WRETR] { .name = "wretr", .desc = "" },
- [ST_F_WREDIS] { .name = "wredis", .desc = "" },
- [ST_F_STATUS] { .name = "status", .desc = "" },
- [ST_F_WEIGHT] { .name = "weight", .desc = "" },
- [ST_F_ACT] { .name = "act", .desc = "" },
- [ST_F_BCK] { .name = "bck", .desc = "" },
- [ST_F_CHKFAIL] { .name = "chkfail", .desc = "" },
- [ST_F_CHKDOWN] { .name = "chkdown", .desc = "" },
- [ST_F_LASTCHG] { .name = "lastchg", .desc = "" },
- [ST_F_DOWNTIME] { .name = "downtime", .desc = "" },
- [ST_F_QLIMIT] { .name = "qlimit", .desc = "" },
- [ST_F_PID] { .name = "pid", .desc = "" },
- [ST_F_IID] { .name = "iid", .desc = "" },
- [ST_F_SID] { .name = "sid", .desc = "" },
- [ST_F_THROTTLE] { .name = "throttle", .desc = "" },
- [ST_F_LBTOT] { .name = "lbtot", .desc = "" },
- [ST_F_TRACKED] { .name = "tracked", .desc = "" },
- [ST_F_TYPE] { .name = "type", .desc = "" },
- [ST_F_RATE] { .name = "rate", .desc = "" },
- [ST_F_RATE_LIM] { .name = "rate_lim", .desc = "" },
- [ST_F_RATE_MAX] { .name = "rate_max", .desc = "" },
- [ST_F_CHECK_STATUS] { .name = "check_status", .desc = "" },
- [ST_F_CHECK_CODE] { .name = "check_code", .desc = "" },
- [ST_F_CHECK_DURATION] { .name = "check_duration", .desc = "" },
- [ST_F_HRSP_1XX] { .name = "hrsp_1xx", .desc = "" },
- [ST_F_HRSP_2XX] { .name = "hrsp_2xx", .desc = "" },
- [ST_F_HRSP_3XX] { .name = "hrsp_3xx", .desc = "" },
- [ST_F_HRSP_4XX] { .name = "hrsp_4xx", .desc = "" },
- [ST_F_HRSP_5XX] { .name = "hrsp_5xx", .desc = "" },
- [ST_F_HRSP_OTHER] { .name = "hrsp_other", .desc = "" },
- [ST_F_HANAFAIL] { .name = "hanafail", .desc = "" },
- [ST_F_REQ_RATE] { .name = "req_rate", .desc = "" },
- [ST_F_REQ_RATE_MAX] { .name = "req_rate_max", .desc = "" },
- [ST_F_REQ_TOT] { .name = "req_tot", .desc = "" },
- [ST_F_CLI_ABRT] { .name = "cli_abrt", .desc = "" },
- [ST_F_SRV_ABRT] { .name = "srv_abrt", .desc = "" },
- [ST_F_COMP_IN] { .name = "comp_in", .desc = "" },
- [ST_F_COMP_OUT] { .name = "comp_out", .desc = "" },
- [ST_F_COMP_BYP] { .name = "comp_byp", .desc = "" },
- [ST_F_COMP_RSP] { .name = "comp_rsp", .desc = "" },
- [ST_F_LASTSESS] { .name = "lastsess", .desc = "" },
- [ST_F_LAST_CHK] { .name = "last_chk", .desc = "" },
- [ST_F_LAST_AGT] { .name = "last_agt", .desc = "" },
- [ST_F_QTIME] { .name = "qtime", .desc = "" },
- [ST_F_CTIME] { .name = "ctime", .desc = "" },
- [ST_F_RTIME] { .name = "rtime", .desc = "" },
- [ST_F_TTIME] { .name = "ttime", .desc = "" },
- [ST_F_AGENT_STATUS] { .name = "agent_status", .desc = "" },
- [ST_F_AGENT_CODE] { .name = "agent_code", .desc = "" },
- [ST_F_AGENT_DURATION] { .name = "agent_duration", .desc = "" },
- [ST_F_CHECK_DESC] { .name = "check_desc", .desc = "" },
- [ST_F_AGENT_DESC] { .name = "agent_desc", .desc = "" },
- [ST_F_CHECK_RISE] { .name = "check_rise", .desc = "" },
- [ST_F_CHECK_FALL] { .name = "check_fall", .desc = "" },
- [ST_F_CHECK_HEALTH] { .name = "check_health", .desc = "" },
- [ST_F_AGENT_RISE] { .name = "agent_rise", .desc = "" },
- [ST_F_AGENT_FALL] { .name = "agent_fall", .desc = "" },
- [ST_F_AGENT_HEALTH] { .name = "agent_health", .desc = "" },
- [ST_F_ADDR] { .name = "addr", .desc = "" },
- [ST_F_COOKIE] { .name = "cookie", .desc = "" },
- [ST_F_MODE] { .name = "mode", .desc = "" },
- [ST_F_ALGO] { .name = "algo", .desc = "" },
- [ST_F_CONN_RATE] { .name = "conn_rate", .desc = "" },
- [ST_F_CONN_RATE_MAX] { .name = "conn_rate_max", .desc = "" },
- [ST_F_CONN_TOT] { .name = "conn_tot", .desc = "" },
- [ST_F_INTERCEPTED] { .name = "intercepted", .desc = "" },
- [ST_F_DCON] { .name = "dcon", .desc = "" },
- [ST_F_DSES] { .name = "dses", .desc = "" },
- [ST_F_WREW] { .name = "wrew", .desc = "" },
- [ST_F_CONNECT] { .name = "connect", .desc = "" },
- [ST_F_REUSE] { .name = "reuse", .desc = "" },
- [ST_F_CACHE_LOOKUPS] { .name = "cache_lookups", .desc = "" },
- [ST_F_CACHE_HITS] { .name = "cache_hits", .desc = "" },
- [ST_F_SRV_ICUR] { .name = "srv_icur", .desc = "" },
- [ST_F_SRV_ILIM] { .name = "src_ilim", .desc = "" },
+ [ST_F_PXNAME] { .name = "pxname", .desc = "Proxy name" },
+ [ST_F_SVNAME] { .name = "svname", .desc = "Server name" },
+ [ST_F_QCUR] { .name = "qcur", .desc = "Current number of connections waiting in the server of backend queue" },
+ [ST_F_QMAX] { .name = "qmax", .desc = "Highest value of qcur encountered since process started" },
+ [ST_F_SCUR] { .name = "scur", .desc = "Current number of sessions on the frontend, backend or server" },
+ [ST_F_SMAX] { .name = "smax", .desc = "Highest value of scur encountered since process started" },
+ [ST_F_SLIM] { .name = "slim", .desc = "Frontend/listener/server's maxconn, backend's fullconn" },
+ [ST_F_STOT] { .name = "stot", .desc = "Total number of sessions since process started" },
+ [ST_F_BIN] { .name = "bin", .desc = "Total number of request bytes since process started" },
+ [ST_F_BOUT] { .name = "bout", .desc = "Total number of response bytes since process started" },
+ [ST_F_DREQ] { .name = "dreq", .desc = "Total number of denied requests since process started" },
+ [ST_F_DRESP] { .name = "dresp", .desc = "Total number of denied responses since process started" },
+ [ST_F_EREQ] { .name = "ereq", .desc = "Total number of invalid requests since process started" },
+ [ST_F_ECON] { .name = "econ", .desc = "Total number of failed connections to server since the worker process started" },
+ [ST_F_ERESP] { .name = "eresp", .desc = "Total number of invalid responses since the worker process started" },
+ [ST_F_WRETR] { .name = "wretr", .desc = "Total number of server connection retries since the worker process started" },
+ [ST_F_WREDIS] { .name = "wredis", .desc = "Total number of server redispatches due to connection failures since the worker process started" },
+ [ST_F_STATUS] { .name = "status", .desc = "Frontend/listen status: OPEN/WAITING/FULL/STOP; backend: UP/DOWN; server: last check status" },
+ [ST_F_WEIGHT] { .name = "weight", .desc = "Server weight, or sum of active servers' weights for a backend" },
+ [ST_F_ACT] { .name = "act", .desc = "Total number of active UP servers with a non-zero weight" },
+ [ST_F_BCK] { .name = "bck", .desc = "Total number of backup UP servers with a non-zero weight" },
+ [ST_F_CHKFAIL] { .name = "chkfail", .desc = "Total number of failed individual health checks per server/backend, since the worker process started" },
+ [ST_F_CHKDOWN] { .name = "chkdown", .desc = "Total number of failed checks causing UP to DOWN server transitions, per server/backend, since the worker process started" },
+ [ST_F_LASTCHG] { .name = "lastchg", .desc = "How long ago the last server state changed, in seconds" },
+ [ST_F_DOWNTIME] { .name = "downtime", .desc = "Total time spent in DOWN state, for server or backend" },
+ [ST_F_QLIMIT] { .name = "qlimit", .desc = "Limit on the number of connections in queue, for servers only (maxqueue argument)" },
+ [ST_F_PID] { .name = "pid", .desc = "Relative worker process number (1..nbproc)" },
+ [ST_F_IID] { .name = "iid", .desc = "Frontend or Backend numeric identifier ('id' setting)" },
+ [ST_F_SID] { .name = "sid", .desc = "Server numeric identifier ('id' setting)" },
+ [ST_F_THROTTLE] { .name = "throttle", .desc = "Throttling ratio applied to a server's maxconn and weight during the slowstart period (0 to 100%)" },
+ [ST_F_LBTOT] { .name = "lbtot", .desc = "Total number of requests routed by load balancing since the worker process started (ignores queue pop and stickiness)" },
+ [ST_F_TRACKED] { .name = "tracked", .desc = "Name of the other server this server tracks for its state" },
+ [ST_F_TYPE] { .name = "type", .desc = "Type of the object (Listener, Frontend, Backend, Server)" },
+ [ST_F_RATE] { .name = "rate", .desc = "Total number of sessions processed by this object over the last second (sessions for listeners/frontends, requests for backends/servers)" },
+ [ST_F_RATE_LIM] { .name = "rate_lim", .desc = "Limit on the number of sessions accepted in a second (frontend only, 'rate-limit sessions' setting)" },
+ [ST_F_RATE_MAX] { .name = "rate_max", .desc = "Highest value of 'rate' observed since the worker process started" },
+ [ST_F_CHECK_STATUS] { .name = "check_status", .desc = "Status report of the server's latest health check, prefixed with '*' if a check is currently in progress" },
+ [ST_F_CHECK_CODE] { .name = "check_code", .desc = "HTTP/SMTP/LDAP status code reported by the latest server health check" },
+ [ST_F_CHECK_DURATION] { .name = "check_duration", .desc = "Total duration of the latest server health check, in milliseconds" },
+ [ST_F_HRSP_1XX] { .name = "hrsp_1xx", .desc = "Total number of HTTP responses with status 100-199 returned by this object since the worker process started" },
+ [ST_F_HRSP_2XX] { .name = "hrsp_2xx", .desc = "Total number of HTTP responses with status 200-299 returned by this object since the worker process started" },
+ [ST_F_HRSP_3XX] { .name = "hrsp_3xx", .desc = "Total number of HTTP responses with status 300-399 returned by this object since the worker process started" },
+ [ST_F_HRSP_4XX] { .name = "hrsp_4xx", .desc = "Total number of HTTP responses with status 400-499 returned by this object since the worker process started" },
+ [ST_F_HRSP_5XX] { .name = "hrsp_5xx", .desc = "Total number of HTTP responses with status 500-599 returned by this object since the worker process started" },
+ [ST_F_HRSP_OTHER] { .name = "hrsp_other", .desc = "Total number of HTTP responses with status <100, >599 returned by this object since the worker process started (error -1 included)" },
+ [ST_F_HANAFAIL] { .name = "hanafail", .desc = "Total number of failed checks caused by an 'on-error' directive after an 'observe' condition matched" },
+ [ST_F_REQ_RATE] { .name = "req_rate", .desc = "Number of HTTP requests processed over the last second on this object" },
+ [ST_F_REQ_RATE_MAX] { .name = "req_rate_max", .desc = "Highest value of 'req_rate' observed since the worker process started" },
+ [ST_F_REQ_TOT] { .name = "req_tot", .desc = "Total number of HTTP requests processed by this object since the worker process started" },
+ [ST_F_CLI_ABRT] { .name = "cli_abrt", .desc = "Total number of requests or connections aborted by the client since the worker process started" },
+ [ST_F_SRV_ABRT] { .name = "srv_abrt", .desc = "Total number of requests or connections aborted by the server since the worker process started" },
+ [ST_F_COMP_IN] { .name = "comp_in", .desc = "Total number of bytes submitted to the HTTP compressor for this object since the worker process started" },
+ [ST_F_COMP_OUT] { .name = "comp_out", .desc = "Total number of bytes emitted by the HTTP compressor for this object since the worker process started" },
+ [ST_F_COMP_BYP] { .name = "comp_byp", .desc = "Total number of bytes that bypassed HTTP compression for this object since the worker process started (CPU/memory/bandwidth limitation)" },
+ [ST_F_COMP_RSP] { .name = "comp_rsp", .desc = "Total number of HTTP responses that were compressed for this object since the worker process started" },
+ [ST_F_LASTSESS] { .name = "lastsess", .desc = "How long ago some traffic was seen on this object on this worker process, in seconds" },
+ [ST_F_LAST_CHK] { .name = "last_chk", .desc = "Short description of the latest health check report for this server (see also check_desc)" },
+ [ST_F_LAST_AGT] { .name = "last_agt", .desc = "Short description of the latest agent check report for this server (see also agent_desc)" },
+ [ST_F_QTIME] { .name = "qtime", .desc = "Time spent in the queue, in milliseconds, averaged over the 1024 last requests (backend/server)" },
+ [ST_F_CTIME] { .name = "ctime", .desc = "Time spent waiting for a connection to complete, in milliseconds, averaged over the 1024 last requests (backend/server)" },
+ [ST_F_RTIME] { .name = "rtime", .desc = "Time spent waiting for a server response, in milliseconds, averaged over the 1024 last requests (backend/server)" },
+ [ST_F_TTIME] { .name = "ttime", .desc = "Total request+response time (request+queue+connect+response+processing), in milliseconds, averaged over the 1024 last requests (backend/server)" },
+ [ST_F_AGENT_STATUS] { .name = "agent_status", .desc = "Status report of the server's latest agent check, prefixed with '*' if a check is currently in progress" },
+ [ST_F_AGENT_CODE] { .name = "agent_code", .desc = "Status code reported by the latest server agent check" },
+ [ST_F_AGENT_DURATION] { .name = "agent_duration", .desc = "Total duration of the latest server agent check, in milliseconds" },
+ [ST_F_CHECK_DESC] { .name = "check_desc", .desc = "Textual description of the latest health check report for this server" },
+ [ST_F_AGENT_DESC] { .name = "agent_desc", .desc = "Textual description of the latest agent check report for this server" },
+ [ST_F_CHECK_RISE] { .name = "check_rise", .desc = "Number of successful health checks before declaring a server UP (server 'rise' setting)" },
+ [ST_F_CHECK_FALL] { .name = "check_fall", .desc = "Number of failed health checks before declaring a server DOWN (server 'fall' setting)" },
+ [ST_F_CHECK_HEALTH] { .name = "check_health", .desc = "Current server health check level (0..fall-1=DOWN, fall..rise-1=UP)" },
+ [ST_F_AGENT_RISE] { .name = "agent_rise", .desc = "Number of successful agent checks before declaring a server UP (server 'rise' setting)" },
+ [ST_F_AGENT_FALL] { .name = "agent_fall", .desc = "Number of failed agent checks before declaring a server DOWN (server 'fall' setting)" },
+ [ST_F_AGENT_HEALTH] { .name = "agent_health", .desc = "Current server agent check level (0..fall-1=DOWN, fall..rise-1=UP)" },
+ [ST_F_ADDR] { .name = "addr", .desc = "Server's address:port, shown only if show-legends is set, or at levels oper/admin for the CLI" },
+ [ST_F_COOKIE] { .name = "cookie", .desc = "Backend's cookie name or Server's cookie value, shown only if show-legends is set, or at levels oper/admin for the CLI" },
+ [ST_F_MODE] { .name = "mode", .desc = "'mode' setting (tcp/http/health/cli)" },
+ [ST_F_ALGO] { .name = "algo", .desc = "Backend's load balancing algorithm, shown only if show-legends is set, or at levels oper/admin for the CLI" },
+ [ST_F_CONN_RATE] { .name = "conn_rate", .desc = "Number of new connections accepted over the last second on the frontend for this worker process" },
+ [ST_F_CONN_RATE_MAX] { .name = "conn_rate_max", .desc = "Highest value of 'conn_rate' observed since the worker process started" },
+ [ST_F_CONN_TOT] { .name = "conn_tot", .desc = "Total number of new connections accepted on this frontend since the worker process started" },
+ [ST_F_INTERCEPTED] { .name = "intercepted", .desc = "Total number of HTTP requests intercepted on the frontend (redirects/stats/services) since the worker process started" },
+ [ST_F_DCON] { .name = "dcon", .desc = "Total number of incoming connections blocked on a listener/frontend by a tcp-request connection rule since the worker process started" },
+ [ST_F_DSES] { .name = "dses", .desc = "Total number of incoming sessions blocked on a listener/frontend by a tcp-request connection rule since the worker process started" },
+ [ST_F_WREW] { .name = "wrew", .desc = "Total number of failed HTTP header rewrites since the worker process started" },
+ [ST_F_CONNECT] { .name = "connect", .desc = "Total number of outgoing connection attempts on this backend/server since the worker process started" },
+ [ST_F_REUSE] { .name = "reuse", .desc = "Total number of reused connection on this backend/server since the worker process started" },
+ [ST_F_CACHE_LOOKUPS] { .name = "cache_lookups", .desc = "Total number of HTTP requests looked up in the cache on this frontend/backend since the worker process started" },
+ [ST_F_CACHE_HITS] { .name = "cache_hits", .desc = "Total number of HTTP requests not found in the cache on this frontend/backend since the worker process started" },
+ [ST_F_SRV_ICUR] { .name = "srv_icur", .desc = "Current number of idle connections available for reuse on this server" },
+ [ST_F_SRV_ILIM] { .name = "src_ilim", .desc = "Limit on the number of available idle connections on this server (server 'pool_max_conn' directive)" },
};
/* one line of info */