mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 22:31:28 +02:00
MINOR: stats: prepare to add a description with each stat/info field
Several times some users have expressed the non-intuitive aspect of some of our stat/info metrics and suggested to add some help. This patch replaces the char* arrays with an array of name_desc so that we now have some reserved room to store a description with each stat or info field. These descriptions are currently empty and not reported yet.
This commit is contained in:
parent
2f39738750
commit
eaa55370c3
@ -92,12 +92,11 @@ static inline struct field mkf_flt(uint32_t type, double value)
|
||||
|
||||
extern const char *stat_status_codes[];
|
||||
|
||||
/* These two structs contains all field names according with
|
||||
* the the number of entries in "enum stat_field" and
|
||||
* "enum info_field"
|
||||
/* These two structs contains all field names and descriptions according to
|
||||
* the the number of entries in "enum stat_field" and "enum info_field"
|
||||
*/
|
||||
extern const char *info_field_names[];
|
||||
extern const char *stat_field_names[];
|
||||
extern const struct name_desc stat_fields[];
|
||||
extern const struct name_desc info_fields[];
|
||||
|
||||
int stats_fill_info(struct field *info, int len);
|
||||
int stats_fill_fe_stats(struct proxy *px, struct field *stats, int len);
|
||||
|
@ -356,7 +356,7 @@ static int hlua_get_info(lua_State *L)
|
||||
|
||||
lua_newtable(L);
|
||||
for (i=0; i<INF_TOTAL_FIELDS; i++) {
|
||||
lua_pushstring(L, info_field_names[i]);
|
||||
lua_pushstring(L, info_fields[i].name);
|
||||
hlua_fcn_pushfield(L, &stats[i]);
|
||||
lua_settable(L, -3);
|
||||
}
|
||||
@ -862,7 +862,7 @@ int hlua_listener_get_stats(lua_State *L)
|
||||
|
||||
lua_newtable(L);
|
||||
for (i=0; i<ST_F_TOTAL_FIELDS; i++) {
|
||||
lua_pushstring(L, stat_field_names[i]);
|
||||
lua_pushstring(L, stat_fields[i].name);
|
||||
hlua_fcn_pushfield(L, &stats[i]);
|
||||
lua_settable(L, -3);
|
||||
}
|
||||
@ -918,7 +918,7 @@ int hlua_server_get_stats(lua_State *L)
|
||||
|
||||
lua_newtable(L);
|
||||
for (i=0; i<ST_F_TOTAL_FIELDS; i++) {
|
||||
lua_pushstring(L, stat_field_names[i]);
|
||||
lua_pushstring(L, stat_fields[i].name);
|
||||
hlua_fcn_pushfield(L, &stats[i]);
|
||||
lua_settable(L, -3);
|
||||
}
|
||||
@ -1333,7 +1333,7 @@ int hlua_proxy_get_stats(lua_State *L)
|
||||
stats_fill_fe_stats(px, stats, STATS_LEN);
|
||||
lua_newtable(L);
|
||||
for (i=0; i<ST_F_TOTAL_FIELDS; i++) {
|
||||
lua_pushstring(L, stat_field_names[i]);
|
||||
lua_pushstring(L, stat_fields[i].name);
|
||||
hlua_fcn_pushfield(L, &stats[i]);
|
||||
lua_settable(L, -3);
|
||||
}
|
||||
|
327
src/stats.c
327
src/stats.c
@ -72,7 +72,6 @@
|
||||
#include <proto/stream_interface.h>
|
||||
#include <proto/task.h>
|
||||
|
||||
|
||||
/* status codes available for the stats admin page (strictly 4 chars length) */
|
||||
const char *stat_status_codes[STAT_STATUS_SIZE] = {
|
||||
[STAT_STATUS_DENY] = "DENY",
|
||||
@ -89,163 +88,163 @@ const char *stat_status_codes[STAT_STATUS_SIZE] = {
|
||||
* to always use the exact same name except that the strings for new names must
|
||||
* be lower case or CamelCase while the enum entries must be upper case.
|
||||
*/
|
||||
const char *info_field_names[INF_TOTAL_FIELDS] = {
|
||||
[INF_NAME] = "Name",
|
||||
[INF_VERSION] = "Version",
|
||||
[INF_RELEASE_DATE] = "Release_date",
|
||||
[INF_NBTHREAD] = "Nbthread",
|
||||
[INF_NBPROC] = "Nbproc",
|
||||
[INF_PROCESS_NUM] = "Process_num",
|
||||
[INF_PID] = "Pid",
|
||||
[INF_UPTIME] = "Uptime",
|
||||
[INF_UPTIME_SEC] = "Uptime_sec",
|
||||
[INF_MEMMAX_MB] = "Memmax_MB",
|
||||
[INF_POOL_ALLOC_MB] = "PoolAlloc_MB",
|
||||
[INF_POOL_USED_MB] = "PoolUsed_MB",
|
||||
[INF_POOL_FAILED] = "PoolFailed",
|
||||
[INF_ULIMIT_N] = "Ulimit-n",
|
||||
[INF_MAXSOCK] = "Maxsock",
|
||||
[INF_MAXCONN] = "Maxconn",
|
||||
[INF_HARD_MAXCONN] = "Hard_maxconn",
|
||||
[INF_CURR_CONN] = "CurrConns",
|
||||
[INF_CUM_CONN] = "CumConns",
|
||||
[INF_CUM_REQ] = "CumReq",
|
||||
[INF_MAX_SSL_CONNS] = "MaxSslConns",
|
||||
[INF_CURR_SSL_CONNS] = "CurrSslConns",
|
||||
[INF_CUM_SSL_CONNS] = "CumSslConns",
|
||||
[INF_MAXPIPES] = "Maxpipes",
|
||||
[INF_PIPES_USED] = "PipesUsed",
|
||||
[INF_PIPES_FREE] = "PipesFree",
|
||||
[INF_CONN_RATE] = "ConnRate",
|
||||
[INF_CONN_RATE_LIMIT] = "ConnRateLimit",
|
||||
[INF_MAX_CONN_RATE] = "MaxConnRate",
|
||||
[INF_SESS_RATE] = "SessRate",
|
||||
[INF_SESS_RATE_LIMIT] = "SessRateLimit",
|
||||
[INF_MAX_SESS_RATE] = "MaxSessRate",
|
||||
[INF_SSL_RATE] = "SslRate",
|
||||
[INF_SSL_RATE_LIMIT] = "SslRateLimit",
|
||||
[INF_MAX_SSL_RATE] = "MaxSslRate",
|
||||
[INF_SSL_FRONTEND_KEY_RATE] = "SslFrontendKeyRate",
|
||||
[INF_SSL_FRONTEND_MAX_KEY_RATE] = "SslFrontendMaxKeyRate",
|
||||
[INF_SSL_FRONTEND_SESSION_REUSE_PCT] = "SslFrontendSessionReuse_pct",
|
||||
[INF_SSL_BACKEND_KEY_RATE] = "SslBackendKeyRate",
|
||||
[INF_SSL_BACKEND_MAX_KEY_RATE] = "SslBackendMaxKeyRate",
|
||||
[INF_SSL_CACHE_LOOKUPS] = "SslCacheLookups",
|
||||
[INF_SSL_CACHE_MISSES] = "SslCacheMisses",
|
||||
[INF_COMPRESS_BPS_IN] = "CompressBpsIn",
|
||||
[INF_COMPRESS_BPS_OUT] = "CompressBpsOut",
|
||||
[INF_COMPRESS_BPS_RATE_LIM] = "CompressBpsRateLim",
|
||||
[INF_ZLIB_MEM_USAGE] = "ZlibMemUsage",
|
||||
[INF_MAX_ZLIB_MEM_USAGE] = "MaxZlibMemUsage",
|
||||
[INF_TASKS] = "Tasks",
|
||||
[INF_RUN_QUEUE] = "Run_queue",
|
||||
[INF_IDLE_PCT] = "Idle_pct",
|
||||
[INF_NODE] = "node",
|
||||
[INF_DESCRIPTION] = "description",
|
||||
[INF_STOPPING] = "Stopping",
|
||||
[INF_JOBS] = "Jobs",
|
||||
[INF_UNSTOPPABLE_JOBS] = "Unstoppable Jobs",
|
||||
[INF_LISTENERS] = "Listeners",
|
||||
[INF_ACTIVE_PEERS] = "ActivePeers",
|
||||
[INF_CONNECTED_PEERS] = "ConnectedPeers",
|
||||
[INF_DROPPED_LOGS] = "DroppedLogs",
|
||||
[INF_BUSY_POLLING] = "BusyPolling",
|
||||
[INF_FAILED_RESOLUTIONS] = "FailedResolutions",
|
||||
[INF_TOTAL_BYTES_OUT] = "TotalBytesOut",
|
||||
[INF_BYTES_OUT_RATE] = "BytesOutRate",
|
||||
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 = "" },
|
||||
};
|
||||
|
||||
const char *stat_field_names[ST_F_TOTAL_FIELDS] = {
|
||||
[ST_F_PXNAME] = "pxname",
|
||||
[ST_F_SVNAME] = "svname",
|
||||
[ST_F_QCUR] = "qcur",
|
||||
[ST_F_QMAX] = "qmax",
|
||||
[ST_F_SCUR] = "scur",
|
||||
[ST_F_SMAX] = "smax",
|
||||
[ST_F_SLIM] = "slim",
|
||||
[ST_F_STOT] = "stot",
|
||||
[ST_F_BIN] = "bin",
|
||||
[ST_F_BOUT] = "bout",
|
||||
[ST_F_DREQ] = "dreq",
|
||||
[ST_F_DRESP] = "dresp",
|
||||
[ST_F_EREQ] = "ereq",
|
||||
[ST_F_ECON] = "econ",
|
||||
[ST_F_ERESP] = "eresp",
|
||||
[ST_F_WRETR] = "wretr",
|
||||
[ST_F_WREDIS] = "wredis",
|
||||
[ST_F_STATUS] = "status",
|
||||
[ST_F_WEIGHT] = "weight",
|
||||
[ST_F_ACT] = "act",
|
||||
[ST_F_BCK] = "bck",
|
||||
[ST_F_CHKFAIL] = "chkfail",
|
||||
[ST_F_CHKDOWN] = "chkdown",
|
||||
[ST_F_LASTCHG] = "lastchg",
|
||||
[ST_F_DOWNTIME] = "downtime",
|
||||
[ST_F_QLIMIT] = "qlimit",
|
||||
[ST_F_PID] = "pid",
|
||||
[ST_F_IID] = "iid",
|
||||
[ST_F_SID] = "sid",
|
||||
[ST_F_THROTTLE] = "throttle",
|
||||
[ST_F_LBTOT] = "lbtot",
|
||||
[ST_F_TRACKED] = "tracked",
|
||||
[ST_F_TYPE] = "type",
|
||||
[ST_F_RATE] = "rate",
|
||||
[ST_F_RATE_LIM] = "rate_lim",
|
||||
[ST_F_RATE_MAX] = "rate_max",
|
||||
[ST_F_CHECK_STATUS] = "check_status",
|
||||
[ST_F_CHECK_CODE] = "check_code",
|
||||
[ST_F_CHECK_DURATION] = "check_duration",
|
||||
[ST_F_HRSP_1XX] = "hrsp_1xx",
|
||||
[ST_F_HRSP_2XX] = "hrsp_2xx",
|
||||
[ST_F_HRSP_3XX] = "hrsp_3xx",
|
||||
[ST_F_HRSP_4XX] = "hrsp_4xx",
|
||||
[ST_F_HRSP_5XX] = "hrsp_5xx",
|
||||
[ST_F_HRSP_OTHER] = "hrsp_other",
|
||||
[ST_F_HANAFAIL] = "hanafail",
|
||||
[ST_F_REQ_RATE] = "req_rate",
|
||||
[ST_F_REQ_RATE_MAX] = "req_rate_max",
|
||||
[ST_F_REQ_TOT] = "req_tot",
|
||||
[ST_F_CLI_ABRT] = "cli_abrt",
|
||||
[ST_F_SRV_ABRT] = "srv_abrt",
|
||||
[ST_F_COMP_IN] = "comp_in",
|
||||
[ST_F_COMP_OUT] = "comp_out",
|
||||
[ST_F_COMP_BYP] = "comp_byp",
|
||||
[ST_F_COMP_RSP] = "comp_rsp",
|
||||
[ST_F_LASTSESS] = "lastsess",
|
||||
[ST_F_LAST_CHK] = "last_chk",
|
||||
[ST_F_LAST_AGT] = "last_agt",
|
||||
[ST_F_QTIME] = "qtime",
|
||||
[ST_F_CTIME] = "ctime",
|
||||
[ST_F_RTIME] = "rtime",
|
||||
[ST_F_TTIME] = "ttime",
|
||||
[ST_F_AGENT_STATUS] = "agent_status",
|
||||
[ST_F_AGENT_CODE] = "agent_code",
|
||||
[ST_F_AGENT_DURATION] = "agent_duration",
|
||||
[ST_F_CHECK_DESC] = "check_desc",
|
||||
[ST_F_AGENT_DESC] = "agent_desc",
|
||||
[ST_F_CHECK_RISE] = "check_rise",
|
||||
[ST_F_CHECK_FALL] = "check_fall",
|
||||
[ST_F_CHECK_HEALTH] = "check_health",
|
||||
[ST_F_AGENT_RISE] = "agent_rise",
|
||||
[ST_F_AGENT_FALL] = "agent_fall",
|
||||
[ST_F_AGENT_HEALTH] = "agent_health",
|
||||
[ST_F_ADDR] = "addr",
|
||||
[ST_F_COOKIE] = "cookie",
|
||||
[ST_F_MODE] = "mode",
|
||||
[ST_F_ALGO] = "algo",
|
||||
[ST_F_CONN_RATE] = "conn_rate",
|
||||
[ST_F_CONN_RATE_MAX] = "conn_rate_max",
|
||||
[ST_F_CONN_TOT] = "conn_tot",
|
||||
[ST_F_INTERCEPTED] = "intercepted",
|
||||
[ST_F_DCON] = "dcon",
|
||||
[ST_F_DSES] = "dses",
|
||||
[ST_F_WREW] = "wrew",
|
||||
[ST_F_CONNECT] = "connect",
|
||||
[ST_F_REUSE] = "reuse",
|
||||
[ST_F_CACHE_LOOKUPS] = "cache_lookups",
|
||||
[ST_F_CACHE_HITS] = "cache_hits",
|
||||
[ST_F_SRV_ICUR] = "srv_icur",
|
||||
[ST_F_SRV_ILIM] = "src_ilim"
|
||||
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 = "" },
|
||||
};
|
||||
|
||||
/* one line of info */
|
||||
@ -316,7 +315,7 @@ static void stats_dump_csv_header()
|
||||
|
||||
chunk_appendf(&trash, "# ");
|
||||
for (field = 0; field < ST_F_TOTAL_FIELDS; field++)
|
||||
chunk_appendf(&trash, "%s,", stat_field_names[field]);
|
||||
chunk_appendf(&trash, "%s,", stat_fields[field].name);
|
||||
|
||||
chunk_appendf(&trash, "\n");
|
||||
}
|
||||
@ -539,7 +538,7 @@ static int stats_dump_fields_typed(struct buffer *out,
|
||||
stats[ST_F_TYPE].u.u32 == STATS_TYPE_SV ? 'S' :
|
||||
'?',
|
||||
stats[ST_F_IID].u.u32, stats[ST_F_SID].u.u32,
|
||||
field, stat_field_names[field], stats[ST_F_PID].u.u32);
|
||||
field, stat_fields[field].name, stats[ST_F_PID].u.u32);
|
||||
|
||||
if (!stats_emit_field_tags(out, &stats[field], ':'))
|
||||
return 0;
|
||||
@ -575,7 +574,7 @@ static int stats_dump_json_info_fields(struct buffer *out,
|
||||
chunk_appendf(out,
|
||||
"{\"field\":{\"pos\":%d,\"name\":\"%s\"},"
|
||||
"\"processNum\":%u,",
|
||||
field, info_field_names[field],
|
||||
field, info_fields[field].name,
|
||||
info[INF_PROCESS_NUM].u.u32);
|
||||
if (old_len == out->data)
|
||||
goto err;
|
||||
@ -642,7 +641,7 @@ static int stats_dump_fields_json(struct buffer *out,
|
||||
"\"processNum\":%u,",
|
||||
obj_type, stats[ST_F_IID].u.u32,
|
||||
stats[ST_F_SID].u.u32, field,
|
||||
stat_field_names[field], stats[ST_F_PID].u.u32);
|
||||
stat_fields[field].name, stats[ST_F_PID].u.u32);
|
||||
if (old_len == out->data)
|
||||
goto err;
|
||||
|
||||
@ -3324,7 +3323,7 @@ static int stats_dump_info_fields(struct buffer *out,
|
||||
if (!field_format(info, field))
|
||||
continue;
|
||||
|
||||
if (!chunk_appendf(out, "%s: ", info_field_names[field]))
|
||||
if (!chunk_appendf(out, "%s: ", info_fields[field].name))
|
||||
return 0;
|
||||
if (!stats_emit_raw_data_field(out, &info[field]))
|
||||
return 0;
|
||||
@ -3344,7 +3343,7 @@ static int stats_dump_typed_info_fields(struct buffer *out,
|
||||
if (!field_format(info, field))
|
||||
continue;
|
||||
|
||||
if (!chunk_appendf(out, "%d.%s.%u:", field, info_field_names[field], info[INF_PROCESS_NUM].u.u32))
|
||||
if (!chunk_appendf(out, "%d.%s.%u:", field, info_fields[field].name, info[INF_PROCESS_NUM].u.u32))
|
||||
return 0;
|
||||
if (!stats_emit_field_tags(out, &info[field], ':'))
|
||||
return 0;
|
||||
@ -3864,8 +3863,8 @@ static int cli_io_handler_dump_json_schema(struct appctx *appctx)
|
||||
/* register cli keywords */
|
||||
static struct cli_kw_list cli_kws = {{ },{
|
||||
{ { "clear", "counters", NULL }, "clear counters : clear max statistics counters (add 'all' for all counters)", cli_parse_clear_counters, NULL, NULL },
|
||||
{ { "show", "info", NULL }, "show info : report information about the running process [json|typed]", cli_parse_show_info, cli_io_handler_dump_info, NULL },
|
||||
{ { "show", "stat", NULL }, "show stat : report counters for each proxy and server [json|typed]", cli_parse_show_stat, cli_io_handler_dump_stat, NULL },
|
||||
{ { "show", "info", NULL }, "show info : report information about the running process [desc|json|typed]*", cli_parse_show_info, cli_io_handler_dump_info, NULL },
|
||||
{ { "show", "stat", NULL }, "show stat : report counters for each proxy and server [desc|json|typed]*", cli_parse_show_stat, cli_io_handler_dump_stat, NULL },
|
||||
{ { "show", "schema", "json", NULL }, "show schema json : report schema used for stats", NULL, cli_io_handler_dump_json_schema, NULL },
|
||||
{{},}
|
||||
}};
|
||||
|
Loading…
x
Reference in New Issue
Block a user