Now that units are coherent we can merge the info description from haproxy stats. Description were not always the same, but I guess we may eventually improve them in the future.
Signed-off-by: William Dauchy <wdau...@gmail.com> --- .../prometheus-exporter/service-prometheus.c | 89 +++---------------- 1 file changed, 12 insertions(+), 77 deletions(-) diff --git a/contrib/prometheus-exporter/service-prometheus.c b/contrib/prometheus-exporter/service-prometheus.c index 3c5663a94..81fa8e4e0 100644 --- a/contrib/prometheus-exporter/service-prometheus.c +++ b/contrib/prometheus-exporter/service-prometheus.c @@ -645,77 +645,6 @@ const struct ist promex_st_metric_names[ST_F_TOTAL_FIELDS] = { [ST_F_NEED_CONN_EST] = IST("need_connections_current"), }; -/* Description of all info fields */ -const struct ist promex_inf_metric_desc[INF_TOTAL_FIELDS] = { - [INF_NAME] = IST("Product name."), - [INF_VERSION] = IST("HAProxy version."), - [INF_RELEASE_DATE] = IST("HAProxy release date."), - [INF_BUILD_INFO] = IST("HAProxy build info."), - [INF_NBTHREAD] = IST("Configured number of threads."), - [INF_NBPROC] = IST("Configured number of processes."), - [INF_PROCESS_NUM] = IST("Relative process id, starting at 1."), - [INF_PID] = IST("HAProxy PID."), - [INF_UPTIME] = IST("Uptime in a human readable format."), - [INF_UPTIME_SEC] = IST("Uptime in seconds."), - [INF_START_TIME_SEC] = IST("Start time in seconds."), - [INF_MEMMAX_BYTES] = IST("Per-process memory limit (in bytes); 0=unset."), - [INF_POOL_ALLOC_BYTES] = IST("Total amount of memory allocated in pools (in bytes)."), - [INF_POOL_USED_BYTES] = IST("Total amount of memory used in pools (in bytes)."), - [INF_POOL_FAILED] = IST("Total number of failed pool allocations."), - [INF_ULIMIT_N] = IST("Maximum number of open file descriptors; 0=unset."), - [INF_MAXSOCK] = IST("Maximum number of open sockets."), - [INF_MAXCONN] = IST("Maximum number of concurrent connections."), - [INF_HARD_MAXCONN] = IST("Initial Maximum number of concurrent connections."), - [INF_CURR_CONN] = IST("Number of active sessions."), - [INF_CUM_CONN] = IST("Total number of created sessions."), - [INF_CUM_REQ] = IST("Total number of requests (TCP or HTTP)."), - [INF_MAX_SSL_CONNS] = IST("Configured maximum number of concurrent SSL connections."), - [INF_CURR_SSL_CONNS] = IST("Number of opened SSL connections."), - [INF_CUM_SSL_CONNS] = IST("Total number of opened SSL connections."), - [INF_MAXPIPES] = IST("Configured maximum number of pipes."), - [INF_PIPES_USED] = IST("Number of pipes in used."), - [INF_PIPES_FREE] = IST("Number of pipes unused."), - [INF_CONN_RATE] = IST("Current number of connections per second over last elapsed second."), - [INF_CONN_RATE_LIMIT] = IST("Configured maximum number of connections per second."), - [INF_MAX_CONN_RATE] = IST("Maximum observed number of connections per second."), - [INF_SESS_RATE] = IST("Current number of sessions per second over last elapsed second."), - [INF_SESS_RATE_LIMIT] = IST("Configured maximum number of sessions per second."), - [INF_MAX_SESS_RATE] = IST("Maximum observed number of sessions per second."), - [INF_SSL_RATE] = IST("Current number of SSL sessions per second over last elapsed second."), - [INF_SSL_RATE_LIMIT] = IST("Configured maximum number of SSL sessions per second."), - [INF_MAX_SSL_RATE] = IST("Maximum observed number of SSL sessions per second."), - [INF_SSL_FRONTEND_KEY_RATE] = IST("Current frontend SSL Key computation per second over last elapsed second."), - [INF_SSL_FRONTEND_MAX_KEY_RATE] = IST("Maximum observed frontend SSL Key computation per second."), - [INF_SSL_FRONTEND_SESSION_REUSE_PCT] = IST("SSL session reuse ratio (percent)."), - [INF_SSL_BACKEND_KEY_RATE] = IST("Current backend SSL Key computation per second over last elapsed second."), - [INF_SSL_BACKEND_MAX_KEY_RATE] = IST("Maximum observed backend SSL Key computation per second."), - [INF_SSL_CACHE_LOOKUPS] = IST("Total number of SSL session cache lookups."), - [INF_SSL_CACHE_MISSES] = IST("Total number of SSL session cache misses."), - [INF_COMPRESS_BPS_IN] = IST("Number of bytes per second over last elapsed second, before http compression."), - [INF_COMPRESS_BPS_OUT] = IST("Number of bytes per second over last elapsed second, after http compression."), - [INF_COMPRESS_BPS_RATE_LIM] = IST("Configured maximum input compression rate in bytes."), - [INF_ZLIB_MEM_USAGE] = IST("Current memory used for zlib in bytes."), - [INF_MAX_ZLIB_MEM_USAGE] = IST("Configured maximum amount of memory for zlib in bytes."), - [INF_TASKS] = IST("Current number of tasks."), - [INF_RUN_QUEUE] = IST("Current number of tasks in the run-queue."), - [INF_IDLE_PCT] = IST("Idle to total ratio over last sample (percent)."), - [INF_NODE] = IST("Node name."), - [INF_DESCRIPTION] = IST("Node description."), - [INF_STOPPING] = IST("Non zero means stopping in progress."), - [INF_JOBS] = IST("Current number of active jobs (listeners, sessions, open devices)."), - [INF_UNSTOPPABLE_JOBS] = IST("Current number of active jobs that can't be stopped during a soft stop."), - [INF_LISTENERS] = IST("Current number of active listeners."), - [INF_ACTIVE_PEERS] = IST("Current number of active peers."), - [INF_CONNECTED_PEERS] = IST("Current number of connected peers."), - [INF_DROPPED_LOGS] = IST("Total number of dropped logs."), - [INF_BUSY_POLLING] = IST("Non zero if the busy polling is enabled."), - [INF_FAILED_RESOLUTIONS] = IST("Total number of failed DNS resolutions."), - [INF_TOTAL_BYTES_OUT] = IST("Total number of bytes emitted."), - [INF_TOTAL_SPLICED_BYTES_OUT] = IST("Total number of bytes emitted through a kernel pipe."), - [INF_BYTES_OUT_RATE] = IST("Number of bytes emitted over the last elapsed second."), - [INF_DEBUG_COMMANDS_ISSUED] = IST("Number of debug commands issued on this process (anything > 0 is unsafe)."), -}; - /* Description of all stats fields */ const struct ist promex_st_metric_desc[ST_F_TOTAL_FIELDS] = { [ST_F_PXNAME] = IST("The proxy name."), @@ -1230,20 +1159,26 @@ static int promex_dump_metric_header(struct appctx *appctx, struct htx *htx, { const struct ist *desc, *types; + if (istcat(out, ist("# HELP "), max) == -1 || + istcat(out, name, max) == -1 || + istcat(out, ist(" "), max) == -1) + goto full; + if (appctx->ctx.stats.flags & PROMEX_FL_INFO_METRIC) { - desc = promex_inf_metric_desc; types = promex_inf_metric_types; + + if (istcat(out, ist(info_fields[appctx->st2].desc), max) == -1) + goto full; } else { desc = promex_st_metric_desc; types = promex_st_metric_types; + + if (istcat(out, desc[appctx->st2], max) == -1) + goto full; } - if (istcat(out, ist("# HELP "), max) == -1 || - istcat(out, name, max) == -1 || - istcat(out, ist(" "), max) == -1 || - istcat(out, desc[appctx->st2], max) == -1 || - istcat(out, ist("\n# TYPE "), max) == -1 || + if (istcat(out, ist("\n# TYPE "), max) == -1 || istcat(out, name, max) == -1 || istcat(out, ist(" "), max) == -1 || istcat(out, types[appctx->st2], max) == -1 || -- 2.29.2