MINOR: log: adds counters on received syslog messages.

This patch adds a global counter of received syslog messages
and this one is exported on CLI "show info" as "CumRecvLogs".

This patch also updates internal conn counter and freq
of the listener and the proxy for each received log message to
prepare a further export on the "show stats".
This commit is contained in:
Emeric Brun 2020-07-09 23:23:34 +02:00 committed by Willy Tarreau
parent 12941c82d0
commit 45c457a629
4 changed files with 13 additions and 0 deletions

View File

@ -49,6 +49,9 @@ extern struct proxy *cfg_log_forward;
extern THREAD_LOCAL char *logline; extern THREAD_LOCAL char *logline;
extern THREAD_LOCAL char *logline_rfc5424; extern THREAD_LOCAL char *logline_rfc5424;
/* global syslog message counter */
extern int cum_log_messages;
/* syslog UDP message handler */ /* syslog UDP message handler */
void syslog_fd_handler(int fd); void syslog_fd_handler(int fd);
@ -165,6 +168,7 @@ static inline int build_logline(struct stream *s, char *dst, size_t maxsize, str
} }
struct ist *build_log_header(enum log_fmt format, int level, int facility, struct ist *metadata, size_t *nbelem); struct ist *build_log_header(enum log_fmt format, int level, int facility, struct ist *metadata, size_t *nbelem);
#endif /* _HAPROXY_LOG_H */ #endif /* _HAPROXY_LOG_H */
/* /*

View File

@ -317,6 +317,7 @@ enum info_field {
INF_TOTAL_SPLICED_BYTES_OUT, INF_TOTAL_SPLICED_BYTES_OUT,
INF_BYTES_OUT_RATE, INF_BYTES_OUT_RATE,
INF_DEBUG_COMMANDS_ISSUED, INF_DEBUG_COMMANDS_ISSUED,
INF_CUM_LOG_MSGS,
/* must always be the last one */ /* must always be the last one */
INF_TOTAL_FIELDS INF_TOTAL_FIELDS

View File

@ -45,6 +45,8 @@
#include <haproxy/tools.h> #include <haproxy/tools.h>
#include <haproxy/version.h> #include <haproxy/version.h>
/* global recv logs counter */
int cum_log_messages;
/* log forward proxy list */ /* log forward proxy list */
struct proxy *cfg_log_forward; struct proxy *cfg_log_forward;
@ -3538,6 +3540,10 @@ void syslog_fd_handler(int fd)
} }
buf->data = ret; buf->data = ret;
/* update counters */
_HA_ATOMIC_ADD(&cum_log_messages, 1);
proxy_inc_fe_conn_ctr(l, l->bind_conf->frontend);
parse_log_message(buf->area, buf->data, &level, &facility, metadata, &message, &size); parse_log_message(buf->area, buf->data, &level, &facility, metadata, &message, &size);
process_send_log(&l->bind_conf->frontend->logsrvs, level, facility, metadata, message, size); process_send_log(&l->bind_conf->frontend->logsrvs, level, facility, metadata, message, size);

View File

@ -147,6 +147,7 @@ const struct name_desc info_fields[INF_TOTAL_FIELDS] = {
[INF_TOTAL_SPLICED_BYTES_OUT] = { .name = "TotalSplicdedBytesOut", .desc = "Total number of bytes emitted by current worker process through a kernel pipe since started" }, [INF_TOTAL_SPLICED_BYTES_OUT] = { .name = "TotalSplicdedBytesOut", .desc = "Total number of bytes emitted by current worker process through a kernel pipe since started" },
[INF_BYTES_OUT_RATE] = { .name = "BytesOutRate", .desc = "Number of bytes emitted by current worker process over the last second" }, [INF_BYTES_OUT_RATE] = { .name = "BytesOutRate", .desc = "Number of bytes emitted by current worker process over the last second" },
[INF_DEBUG_COMMANDS_ISSUED] = { .name = "DebugCommandsIssued", .desc = "Number of debug commands issued on this process (anything > 0 is unsafe)" }, [INF_DEBUG_COMMANDS_ISSUED] = { .name = "DebugCommandsIssued", .desc = "Number of debug commands issued on this process (anything > 0 is unsafe)" },
[INF_CUM_LOG_MSGS] = { .name = "CumRecvLogs", .desc = "Total number of log messages received by log-forwarding listeners on this worker process since started" },
}; };
const struct name_desc stat_fields[ST_F_TOTAL_FIELDS] = { const struct name_desc stat_fields[ST_F_TOTAL_FIELDS] = {
@ -3523,6 +3524,7 @@ int stats_fill_info(struct field *info, int len)
info[INF_TOTAL_SPLICED_BYTES_OUT] = mkf_u64(0, global.spliced_out_bytes); info[INF_TOTAL_SPLICED_BYTES_OUT] = mkf_u64(0, global.spliced_out_bytes);
info[INF_BYTES_OUT_RATE] = mkf_u64(FN_RATE, (unsigned long long)read_freq_ctr(&global.out_32bps) * 32); info[INF_BYTES_OUT_RATE] = mkf_u64(FN_RATE, (unsigned long long)read_freq_ctr(&global.out_32bps) * 32);
info[INF_DEBUG_COMMANDS_ISSUED] = mkf_u32(0, debug_commands_issued); info[INF_DEBUG_COMMANDS_ISSUED] = mkf_u32(0, debug_commands_issued);
info[INF_CUM_LOG_MSGS] = mkf_u32(FN_COUNTER, cum_log_messages);
return 1; return 1;
} }