Module: check_mk
Branch: master
Commit: 8936d654c873e36ddedadbef142474ee317b417a
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8936d654c873e3…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Oct 23 16:00:19 2012 +0200
New columns livestatus_threads, livestatus_{active,queued}_connections
---
ChangeLog | 1 +
livestatus/src/TableStatus.cc | 10 ++++++++++
livestatus/src/module.c | 8 +++++++-
3 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 350990f..e04bd90 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -30,6 +30,7 @@
* Added new table statehist, used for SLA queries
* Added new column check_command_expanded in table hosts
* Added new column check_command_expanded in table services
+ * New columns livestatus_threads, livestatus_{active,queued}_connections
BI:
* Added missing localizations
diff --git a/livestatus/src/TableStatus.cc b/livestatus/src/TableStatus.cc
index ca6aa91..213911f 100644
--- a/livestatus/src/TableStatus.cc
+++ b/livestatus/src/TableStatus.cc
@@ -58,6 +58,9 @@ extern int g_num_hosts;
extern int g_num_services;
extern int livechecks_performed;
extern int livecheck_overflows;
+extern int g_num_clientthreads;
+extern int g_num_queued_connections;
+extern int g_num_active_connections;
extern circular_buffer external_command_buffer;
extern int external_command_buffer_slots;
@@ -177,6 +180,13 @@ TableStatus::TableStatus()
"The current number of log messages MK Livestatus keeps in
memory", &num_cached_log_messages ));
addColumn(new StringPointerColumn("livestatus_version",
"The version of the MK Livestatus module", (char *)VERSION));
+ addColumn(new IntPointerColumn("livestatus_active_connections",
+ "The current number of active connections to MK Livestatus",
&g_num_active_connections));
+ addColumn(new IntPointerColumn("livestatus_queued_connections",
+ "The current number of queued connections to MK Livestatus (that
wait for a free thread)", &g_num_queued_connections));
+ addColumn(new IntPointerColumn("livestatus_threads",
+ "The maximum number of connections to MK Livestatus that can be
handled in parallel", &g_num_clientthreads));
+
// Livecheck
}
diff --git a/livestatus/src/module.c b/livestatus/src/module.c
index acef1ff..73bdcd8 100644
--- a/livestatus/src/module.c
+++ b/livestatus/src/module.c
@@ -73,7 +73,9 @@ extern char *log_file;
int g_idle_timeout_msec = 300 * 1000; /* maximum idle time for connection in keep alive
state */
int g_query_timeout_msec = 10 * 1000; /* maximum time for reading a query */
-unsigned g_num_clientthreads = 10; /* allow 10 concurrent connections per default */
+int g_num_clientthreads = 10; /* allow 10 concurrent connections per default */
+int g_num_queued_connections = 0; /* current number of queued connections (for
statistics) */
+int g_num_active_connections = 0; /* current number of active connections (for
statistics) */
size_t g_thread_stack_size = 65536; /* stack size of threads */
#define false 0
@@ -195,6 +197,7 @@ void *main_thread(void *data __attribute__ ((__unused__)))
if (0 < fcntl(cc, F_SETFD, FD_CLOEXEC))
logger(LG_INFO, "Cannot set FD_CLOEXEC on client socket: %s",
strerror(errno));
queue_add_connection(cc); // closes fd
+ g_num_queued_connections++;
g_counters[COUNTER_CONNECTIONS]++;
}
}
@@ -209,6 +212,8 @@ void *client_thread(void *data __attribute__ ((__unused__)))
while (!g_should_terminate) {
int cc = queue_pop_connection();
+ g_num_queued_connections--;
+ g_num_active_connections++;
if (cc >= 0) {
if (g_debug_level >= 2)
logger(LG_INFO, "Accepted client connection on fd %d", cc);
@@ -225,6 +230,7 @@ void *client_thread(void *data __attribute__ ((__unused__)))
}
close(cc);
}
+ g_num_active_connections--;
}
delete_outputbuffer(output_buffer);
delete_inputbuffer(input_buffer);