client: add serverstats command

This commit is contained in:
Miroslav Lichvar 2016-01-18 17:13:26 +01:00
parent 9b019a03e7
commit 070f2706b7
2 changed files with 46 additions and 0 deletions

View file

@ -3396,6 +3396,7 @@ interface.
* reselectdist command:: Set improvement in distance needed to reselect a source * reselectdist command:: Set improvement in distance needed to reselect a source
* retries command:: Set maximum number of retries * retries command:: Set maximum number of retries
* rtcdata command:: Display RTC parameters * rtcdata command:: Display RTC parameters
* serverstats command:: Display statistics of the server
* settime command:: Provide a manual input of the current time * settime command:: Provide a manual input of the current time
* smoothing command:: Display current time smoothing state * smoothing command:: Display current time smoothing state
* smoothtime command:: Reset/activate server time smoothing * smoothtime command:: Reset/activate server time smoothing
@ -4314,6 +4315,24 @@ right when it crosses a particular second boundary. Then it would be 1
microsecond fast when it crosses its next second boundary. microsecond fast when it crosses its next second boundary.
@end table @end table
@c }}} @c }}}
@c {{{ serverstats command
@node serverstats command
@subsubsection serverstats command
The @code{serverstats} command displays how many valid NTP and command requests
@code{chronyd} as a server received from clients, how many of them were dropped
to limit the response rate as configured by the @code{ratelimit} and
@code{cmdratelimit} directives, and how many client log records were dropped
due to the memory limit configured by the @code{clientloglimit} directive. An
example of the output is shown below.
@example
NTP packets received : 1598
NTP packets dropped : 8
Command packets received : 19
Command packets dropped : 0
Client log records dropped : 0
@end example
@c }}}
@c {{{ settime @c {{{ settime
@node settime command @node settime command
@subsubsection settime @subsubsection settime

View file

@ -1225,6 +1225,7 @@ give_help(void)
"\0\0NTP access:\0\0" "\0\0NTP access:\0\0"
"accheck <address>\0Check whether address is allowed\0" "accheck <address>\0Check whether address is allowed\0"
"clients\0Report on clients that have accessed the server\0" "clients\0Report on clients that have accessed the server\0"
"serverstats\0Display statistics of the server\0"
"allow [<subnet>]\0Allow access to subnet as a default\0" "allow [<subnet>]\0Allow access to subnet as a default\0"
"allow all [<subnet>]\0Allow access to subnet and all children\0" "allow all [<subnet>]\0Allow access to subnet and all children\0"
"deny [<subnet>]\0Deny access to subnet as a default\0" "deny [<subnet>]\0Deny access to subnet as a default\0"
@ -1962,6 +1963,29 @@ process_cmd_tracking(char *line)
} }
return 0; return 0;
} }
/* ================================================== */
static int
process_cmd_serverstats(char *line)
{
CMD_Request request;
CMD_Reply reply;
request.command = htons(REQ_SERVER_STATS);
if (!request_reply(&request, &reply, RPY_SERVER_STATS, 0))
return 0;
printf("NTP packets received : %"PRIu32"\n", ntohl(reply.data.server_stats.ntp_hits));
printf("NTP packets dropped : %"PRIu32"\n", ntohl(reply.data.server_stats.ntp_drops));
printf("Command packets received : %"PRIu32"\n", ntohl(reply.data.server_stats.cmd_hits));
printf("Command packets dropped : %"PRIu32"\n", ntohl(reply.data.server_stats.cmd_drops));
printf("Client log records dropped : %"PRIu32"\n", ntohl(reply.data.server_stats.log_drops));
return 1;
}
/* ================================================== */ /* ================================================== */
static int static int
@ -2590,6 +2614,9 @@ process_line(char *line)
} else if (!strcmp(command, "rtcdata")) { } else if (!strcmp(command, "rtcdata")) {
do_normal_submit = 0; do_normal_submit = 0;
ret = process_cmd_rtcreport(line); ret = process_cmd_rtcreport(line);
} else if (!strcmp(command, "serverstats")) {
do_normal_submit = 0;
ret = process_cmd_serverstats(line);
} else if (!strcmp(command, "settime")) { } else if (!strcmp(command, "settime")) {
do_normal_submit = 0; do_normal_submit = 0;
ret = process_cmd_settime(line); ret = process_cmd_settime(line);