occtl: improved presentation of printed statistics

Also added different values to keep authentication failures
and closed sessions, in total and per accounting period.

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
This commit is contained in:
Nikos Mavrogiannopoulos
2017-03-22 11:49:21 +01:00
committed by Nikos Mavrogiannopoulos
parent 99b2fdcd06
commit ccb80b5d4f
3 changed files with 43 additions and 27 deletions

View File

@@ -27,6 +27,10 @@ message status_rep
required uint32 avg_session_mins = 20;
required uint32 max_auth_time = 21;
required uint32 max_session_mins = 22;
required uint64 auth_failures = 23;
required uint64 total_sessions_closed = 24;
required uint64 total_auth_failures = 25;
}
message bool_msg

View File

@@ -200,6 +200,10 @@ static void method_status(method_ctx *ctx, int cfd, uint8_t * msg,
rep.max_auth_time = ctx->s->stats.max_auth_time;
rep.max_session_mins = ctx->s->stats.max_session_mins;
rep.auth_failures = ctx->s->stats.auth_failures;
rep.total_auth_failures = ctx->s->stats.total_auth_failures;
rep.total_sessions_closed = ctx->s->stats.total_sessions_closed;
ret = send_msg(ctx->pool, cfd, CTL_CMD_STATUS_REP, &rep,
(pack_size_func) status_rep__get_packed_size,
(pack_func) status_rep__pack);

View File

@@ -287,13 +287,41 @@ int handle_stats_cmd(struct unix_ctx *ctx, const char *arg, cmd_params_st *param
print_separator(stdout, params);
if (NO_JSON(params))
printf("Sessions:\n");
printf("General info:\n");
t = rep->start_time;
tm = localtime(&t);
print_time_ival7(buf, time(0), t);
strftime(str_since, sizeof(str_since), DATE_TIME_FMT, tm);
print_single_value_ex(stdout, params, "Up since", str_since, buf, 1);
print_single_value_int(stdout, params, "Active sessions", rep->active_clients, 1);
print_single_value_int(stdout, params, "Handled (closed) sessions", rep->sessions_closed, 1);
print_single_value_int(stdout, params, "Total sessions", rep->total_sessions_closed, 1);
print_single_value_int(stdout, params, "Total authentication failures", rep->total_auth_failures, 1);
print_single_value_int(stdout, params, "IPs in ban list", rep->banned_ips, 1);
if (params->debug) {
print_single_value_int(stdout, params, "Sec-mod client entries", rep->secmod_client_entries, 1);
print_single_value_int(stdout, params, "TLS DB entries", rep->stored_tls_sessions, 1);
}
print_separator(stdout, params);
if (NO_JSON(params))
printf("Current stats period:\n");
t = rep->last_reset;
if (t > 0 && t != rep->start_time) {
tm = localtime(&t);
print_time_ival7(buf, time(0), t);
strftime(str_since, sizeof(str_since), DATE_TIME_FMT, tm);
print_single_value_ex(stdout, params, "Last stats reset", str_since, buf, 1);
}
print_single_value_int(stdout, params, "Sessions handled", rep->sessions_closed, 1);
print_single_value_int(stdout, params, "Timed out sessions", rep->session_timeouts, 1);
print_single_value_int(stdout, params, "Timed out (idle) sessions", rep->session_idle_timeouts, 1);
print_single_value_int(stdout, params, "Closed due to error sessions", rep->session_errors, 1);
print_single_value_int(stdout, params, "Authentication failures", rep->auth_failures, 1);
print_time_ival7(buf, rep->avg_auth_time, 0);
print_single_value(stdout, params, "Average auth time", buf, 1);
@@ -307,35 +335,15 @@ int handle_stats_cmd(struct unix_ctx *ctx, const char *arg, cmd_params_st *param
print_time_ival7(buf, rep->max_session_mins*60, 0);
print_single_value(stdout, params, "Max session time", buf, 1);
print_separator(stdout, params);
if (NO_JSON(params))
printf("General:\n");
t = rep->start_time;
tm = localtime(&t);
print_time_ival7(buf, time(0), t);
strftime(str_since, sizeof(str_since), DATE_TIME_FMT, tm);
print_single_value_ex(stdout, params, "Up since", str_since, buf, 1);
t = rep->last_reset;
if (t > 0 && t != rep->start_time) {
tm = localtime(&t);
print_time_ival7(buf, time(0), t);
strftime(str_since, sizeof(str_since), DATE_TIME_FMT, tm);
print_single_value_ex(stdout, params, "Last stats reset", str_since, buf, 1);
}
print_single_value_int(stdout, params, "IPs in ban list", rep->banned_ips, 1);
if (params->debug) {
print_single_value_int(stdout, params, "Sec-mod client entries", rep->secmod_client_entries, 1);
print_single_value_int(stdout, params, "TLS DB entries", rep->stored_tls_sessions, 1);
}
bytes2human(rep->kbytes_in*1000, buf, sizeof(buf), "");
print_single_value(stdout, params, "RX", buf, 1);
bytes2human(rep->kbytes_out*1000, buf, sizeof(buf), "");
print_single_value(stdout, params, "TX", buf, 1);
if (rep->min_mtu > 0)
print_single_value_int(stdout, params, "Min MTU", rep->min_mtu, 1);
if (rep->max_mtu > 0)
print_single_value_int(stdout, params, "Max MTU", rep->max_mtu, 1);
}
print_end_block(stdout, params, 0);