]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: stats: convert stats_dump_li_stats() to use stats_dump_fields_csv()
authorWilly Tarreau <w@1wt.eu>
Wed, 6 Jan 2016 14:41:29 +0000 (15:41 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 11 Mar 2016 16:08:04 +0000 (17:08 +0100)
This function now only fills the relevant fields with raw values and
calls stats_dump_fields_csv() for the CSV part. The output remains
exactly the same for now.

It is worth mentionning that l->cum_conn is being dumped into a cum_sess
field and that once we introduce an official cum_conn field we may have
to dump the same value at both places to maintain compatibility with the
existing stats.

src/dumpstats.c

index 45290f6578b04501a3cec467f54434d135b980a3..d7691ffa0eb5eeaec1016f517492415e373e0b49 100644 (file)
@@ -3433,6 +3433,25 @@ static int stats_dump_li_stats(struct stream_interface *si, struct proxy *px, st
 {
        struct appctx *appctx = __objt_appctx(si->end);
 
+       memset(&stats, 0, sizeof(stats));
+
+       stats[ST_F_PXNAME]   = mkf_str(FO_KEY|FN_NAME|FS_SERVICE, px->id);
+       stats[ST_F_SVNAME]   = mkf_str(FO_KEY|FN_NAME|FS_SERVICE, l->name);
+       stats[ST_F_SCUR]     = mkf_u32(0, l->nbconn);
+       stats[ST_F_SMAX]     = mkf_u32(FN_MAX, l->counters->conn_max);
+       stats[ST_F_SLIM]     = mkf_u32(FO_CONFIG|FN_LIMIT, l->maxconn);
+       stats[ST_F_STOT]     = mkf_u64(FN_COUNTER, l->counters->cum_conn);
+       stats[ST_F_BIN]      = mkf_u64(FN_COUNTER, l->counters->bytes_in);
+       stats[ST_F_BOUT]     = mkf_u64(FN_COUNTER, l->counters->bytes_out);
+       stats[ST_F_DREQ]     = mkf_u64(FN_COUNTER, l->counters->denied_req);
+       stats[ST_F_DRESP]    = mkf_u64(FN_COUNTER, l->counters->denied_resp);
+       stats[ST_F_EREQ]     = mkf_u64(FN_COUNTER, l->counters->failed_req);
+       stats[ST_F_STATUS]   = mkf_str(FO_STATUS, (l->nbconn < l->maxconn) ? "OPEN" : "FULL");
+       stats[ST_F_PID]      = mkf_u32(FO_KEY, relative_pid);
+       stats[ST_F_IID]      = mkf_u32(FO_KEY|FS_SERVICE, px->uuid);
+       stats[ST_F_SID]      = mkf_u32(FO_KEY|FS_SERVICE, l->luid);
+       stats[ST_F_TYPE]     = mkf_u32(FO_CONFIG|FS_SERVICE, STATS_TYPE_SO);
+
        if (appctx->ctx.stats.flags & STAT_FMT_HTML) {
                chunk_appendf(&trash, "<tr class=socket>");
                if (px->cap & PR_CAP_BE && px->srv && (appctx->ctx.stats.flags & STAT_ADMIN)) {
@@ -3506,50 +3525,8 @@ static int stats_dump_li_stats(struct stream_interface *si, struct proxy *px, st
                              (l->nbconn < l->maxconn) ? (l->state == LI_LIMITED) ? "WAITING" : "OPEN" : "FULL");
        }
        else { /* CSV mode */
-               chunk_appendf(&trash,
-                             /* pxid, name, queue cur, queue max, */
-                             "%s,%s,,,"
-                             /* sessions: current, max, limit, total */
-                             "%d,%d,%d,%lld,"
-                             /* bytes: in, out */
-                             "%lld,%lld,"
-                             /* denied: req, resp */
-                             "%lld,%lld,"
-                             /* errors: request, connect, response */
-                             "%lld,,,"
-                             /* warnings: retries, redispatches */
-                             ",,"
-                             /* server status: reflect listener status */
-                             "%s,"
-                             /* rest of server: nothing */
-                             ",,,,,,,,"
-                             /* pid, iid, sid, throttle, lbtot, tracked, type */
-                             "%d,%d,%d,,,,%d,"
-                             /* rate, rate_lim, rate_max */
-                             ",,,"
-                             /* check_status, check_code, check_duration */
-                             ",,,"
-                             /* http response: 1xx, 2xx, 3xx, 4xx, 5xx, other */
-                             ",,,,,,"
-                             /* failed health analyses */
-                             ","
-                             /* requests : req_rate, req_rate_max, req_tot, */
-                             ",,,"
-                             /* errors: cli_aborts, srv_aborts */
-                             ",,"
-                             /* compression: in, out, bypassed, comp_rsp */
-                             ",,,,"
-                             /* lastsess, last_chk, last_agt, qtime, ctime, rtime, ttime, */
-                             ",,,,,,,"
-                             "\n",
-                             px->id, l->name,
-                             l->nbconn, l->counters->conn_max,
-                             l->maxconn, l->counters->cum_conn,
-                             l->counters->bytes_in, l->counters->bytes_out,
-                             l->counters->denied_req, l->counters->denied_resp,
-                             l->counters->failed_req,
-                             (l->nbconn < l->maxconn) ? "OPEN" : "FULL",
-                             relative_pid, px->uuid, l->luid, STATS_TYPE_SO);
+               /* dump everything */
+               stats_dump_fields_csv(&trash, stats);
        }
        return 1;
 }