[MINOR] Add "clear counters" to clear statistics counters

Now, when statistics counters are moved to separate
structures, adding "clear counters" is extremely easy.

[wt: updated the help message]
This commit is contained in:
Krzysztof Piotr Oledzki 2009-10-04 15:02:46 +02:00 committed by Willy Tarreau
parent 052d4fd07d
commit 719e726c97
2 changed files with 33 additions and 10 deletions

View 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

View File

@ -53,14 +53,15 @@
#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;