From 45c457a62941a7c4a86ce4327d7755edcd4b230e Mon Sep 17 00:00:00 2001 From: Emeric Brun Date: Thu, 9 Jul 2020 23:23:34 +0200 Subject: [PATCH] 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". --- include/haproxy/log.h | 4 ++++ include/haproxy/stats-t.h | 1 + src/log.c | 6 ++++++ src/stats.c | 2 ++ 4 files changed, 13 insertions(+) diff --git a/include/haproxy/log.h b/include/haproxy/log.h index d8b95a82bd..981086906c 100644 --- a/include/haproxy/log.h +++ b/include/haproxy/log.h @@ -49,6 +49,9 @@ extern struct proxy *cfg_log_forward; extern THREAD_LOCAL char *logline; extern THREAD_LOCAL char *logline_rfc5424; +/* global syslog message counter */ +extern int cum_log_messages; + /* syslog UDP message handler */ 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); + #endif /* _HAPROXY_LOG_H */ /* diff --git a/include/haproxy/stats-t.h b/include/haproxy/stats-t.h index baf2fac5d0..139b5468b1 100644 --- a/include/haproxy/stats-t.h +++ b/include/haproxy/stats-t.h @@ -317,6 +317,7 @@ enum info_field { INF_TOTAL_SPLICED_BYTES_OUT, INF_BYTES_OUT_RATE, INF_DEBUG_COMMANDS_ISSUED, + INF_CUM_LOG_MSGS, /* must always be the last one */ INF_TOTAL_FIELDS diff --git a/src/log.c b/src/log.c index f8ac522010..495a672d24 100644 --- a/src/log.c +++ b/src/log.c @@ -45,6 +45,8 @@ #include #include +/* global recv logs counter */ +int cum_log_messages; /* log forward proxy list */ struct proxy *cfg_log_forward; @@ -3538,6 +3540,10 @@ void syslog_fd_handler(int fd) } 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); process_send_log(&l->bind_conf->frontend->logsrvs, level, facility, metadata, message, size); diff --git a/src/stats.c b/src/stats.c index e8ea831a7e..d69c76462c 100644 --- a/src/stats.c +++ b/src/stats.c @@ -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_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_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] = { @@ -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_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_CUM_LOG_MSGS] = mkf_u32(FN_COUNTER, cum_log_messages); return 1; }