]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[MINOR] Add "clear counters" to clear statistics counters
authorKrzysztof Piotr Oledzki <ole@ans.pl>
Sun, 4 Oct 2009 13:02:46 +0000 (15:02 +0200)
committerWilly Tarreau <w@1wt.eu>
Sun, 4 Oct 2009 16:40:08 +0000 (18:40 +0200)
Now, when statistics counters are moved to separate
structures, adding "clear counters" is extremely easy.

[wt: updated the help message]

doc/configuration.txt
src/dumpstats.c

index 254382bba2523bdfb5487b017b0614e206d109cd..cd3d17b34d66a6f38ea93d83418ed361db6523a1 100644 (file)
@@ -6724,6 +6724,10 @@ show stat [<iid> <type> <sid>]
     A similar empty line appears at the end of the second block (stats) so that
     the reader knows the output has not been trucated.
 
+clear counters
+  Clear statistics counters in each proxy (frontend & backend) and in each
+  server.
+
 /*
  * Local variables:
  *  fill-column: 79
index 41b2dd32894e85460e08ff5b6eefecd4b2a90a81..777b9fc19b83f108bdb1741258074652814e6fe1 100644 (file)
 #include <proto/task.h>
 
 const char stats_sock_usage_msg[] =
-        "Unknown command. Please enter one of the following commands only :\n"
-        "  help        : this message\n"
-        "  prompt      : toggle interactive mode with prompt\n"
-        "  quit        : disconnect\n"
-        "  show info   : report information about the running process\n"
-        "  show stat   : report counters for each proxy and server\n"
-        "  show errors : report last request and response errors for each proxy\n"
-        "  show sess   : report the list of current sessions\n"
+       "Unknown command. Please enter one of the following commands only :\n"
+       "  clear counters : clear statistics counters\n"
+       "  help           : this message\n"
+       "  prompt         : toggle interactive mode with prompt\n"
+       "  quit           : disconnect\n"
+       "  show info      : report information about the running process\n"
+       "  show stat      : report counters for each proxy and server\n"
+       "  show errors    : report last request and response errors for each proxy\n"
+       "  show sess      : report the list of current sessions\n"
        "";
 
 const struct chunk stats_sock_usage = {
@@ -299,11 +300,29 @@ int stats_sock_parse_request(struct stream_interface *si, char *line)
                        s->data_state = DATA_ST_INIT;
                        si->st0 = STAT_CLI_O_ERR; // stats_dump_errors_to_buffer
                }
-               else { /* neither "stat" nor "info" nor "sess" */
+               else { /* neither "stat" nor "info" nor "sess" nor "errors"*/
                        return 0;
                }
        }
-       else { /* not "show" */
+       else if (strcmp(args[0], "clear") == 0) {
+               if (strcmp(args[1], "counters") == 0) {
+                       struct proxy *px;
+                       struct server *sv;
+
+                       for (px = proxy; px; px = px->next) {
+                               memset(&px->counters, 0, sizeof(px->counters));
+
+                               for (sv = px->srv; sv; sv = sv->next)
+                                       memset(&sv->counters, 0, sizeof(sv->counters));
+                       }
+
+                       return 1;
+               }
+               else {
+                       return 0;
+               }
+       }
+       else { /* not "show" nor "clear"*/
                return 0;
        }
        return 1;