summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-01-07 09:11:53 +0000
committersasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-01-07 09:11:53 +0000
commitfdd60d239ebf94a0cb7f42ee7ca90273c0af108f (patch)
tree9ee47f59460b4766a325cca4dfdd6870a9c2b4db
parent876098b1b8c3610acc0f7309c107b2eca344c185 (diff)
downloadzabbix-fdd60d239ebf94a0cb7f42ee7ca90273c0af108f.tar.gz
zabbix-fdd60d239ebf94a0cb7f42ee7ca90273c0af108f.tar.xz
zabbix-fdd60d239ebf94a0cb7f42ee7ca90273c0af108f.zip
- [ZBX-243] speed improvement for windows agent for eventlog[] processing (sasha)
[svn merge svn://svn.zabbix.com/branches/1.4.j -r5217:5218] git-svn-id: svn://svn.zabbix.com/trunk@5219 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r--build/win32/project/zabbix_agentd.vcproj6
-rw-r--r--src/zabbix_agent/active.c85
-rwxr-xr-xsrc/zabbix_agent/eventlog.c10
3 files changed, 49 insertions, 52 deletions
diff --git a/build/win32/project/zabbix_agentd.vcproj b/build/win32/project/zabbix_agentd.vcproj
index f710c1d8..e2d5f120 100644
--- a/build/win32/project/zabbix_agentd.vcproj
+++ b/build/win32/project/zabbix_agentd.vcproj
@@ -610,7 +610,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="./,../include/,../../../include/,../../../src/zabbix_agent"
- PreprocessorDefinitions="_DEBUG;DEBUG;WIN32;_WINDOWS;HAVE_LDAP;HAVE_ASSERT_H;_CONSOLE;ZABBIX_SERVICE;WITH_COMMON_METRICS;WITH_SPECIFIC_METRICS;WITH_SIMPLE_METRICS"
+ PreprocessorDefinitions="_DEBUG;DEBUG;WIN32;_WINDOWS;HAVE_LDAP;HAVE_ASSERT_H;_CONSOLE;ZABBIX_SERVICE;WITH_COMMON_METRICS;WITH_SPECIFIC_METRICS;WITH_SIMPLE_METRICS;HAVE_IPV6"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -637,11 +637,11 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="ws2_32.lib pdh.lib psapi.lib odbc32.lib odbccp32.lib Wldap32.lib"
- OutputFile=".\Debug/zabbix_agentd.exe"
+ OutputFile="../../../bin/win32/zabbix_agentd.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Debug/zabbix_agentd.pdb"
+ ProgramDatabaseFile="../../../bin/win32/zabbix_agentd.pdb"
SubSystem="1"
TargetMachine="1"
/>
diff --git a/src/zabbix_agent/active.c b/src/zabbix_agent/active.c
index 59f737c1..eb669d55 100644
--- a/src/zabbix_agent/active.c
+++ b/src/zabbix_agent/active.c
@@ -276,8 +276,8 @@ static int get_active_checks(
parse_list_of_checks(buf);
}
}
+ zbx_tcp_close(&s);
}
- zbx_tcp_close(&s);
if( FAIL == ret )
{
@@ -351,34 +351,30 @@ static int send_value(
{
zabbix_log( LOG_LEVEL_DEBUG, "NOT OK [%s:%s] [%s]", host, key, buf);
}
- }
- }
- }
- zbx_tcp_close(&s);
+ } else
+ zabbix_log(LOG_LEVEL_DEBUG, "Send value error: [recv] %s", zbx_tcp_strerror());
+ } else
+ zabbix_log(LOG_LEVEL_DEBUG, "Send value error: [send] %s", zbx_tcp_strerror());
+ zbx_tcp_close(&s);
+ } else
+ zabbix_log(LOG_LEVEL_DEBUG, "Send value error: [connect] %s", zbx_tcp_strerror());
- if( FAIL == ret )
- {
- zabbix_log(LOG_LEVEL_DEBUG, "Send value error: %s", zbx_tcp_strerror());
- }
return ret;
}
-static int process_active_checks(char *server, unsigned short port)
+static void process_active_checks(char *server, unsigned short port)
{
register int i, s_count, p_count;
-
- char **pvalue;
-
- int now, send_err = SUCCEED, ret = SUCCEED;
-
+ char **pvalue;
+ int now, send_err = SUCCEED, ret;
unsigned long timestamp;
char *source = NULL;
char *value = NULL;
unsigned short severity;
-
- char params[MAX_STRING_LEN];
- char filename[MAX_STRING_LEN];
- char pattern[MAX_STRING_LEN];
+ long lastlogsize;
+ char params[MAX_STRING_LEN];
+ char filename[MAX_STRING_LEN];
+ char pattern[MAX_STRING_LEN];
AGENT_RESULT result;
@@ -411,22 +407,25 @@ static int process_active_checks(char *server, unsigned short port)
s_count = 0;
p_count = 0;
- while (SUCCEED == (ret = process_log(filename, &active_metrics[i].lastlogsize, &value))) {
+ lastlogsize = active_metrics[i].lastlogsize;
+ while (SUCCEED == send_err && SUCCEED == (ret = process_log(filename, &lastlogsize, &value))) {
if (!value) /* EOF */
break;
if ('\0' == *pattern || NULL != zbx_regexp_match(value, pattern, NULL)) {
- send_err = send_value(
+ if (SUCCEED == (send_err = send_value(
server,
port,
CONFIG_HOSTNAME,
active_metrics[i].key,
value,
- &active_metrics[i].lastlogsize,
+ &lastlogsize,
NULL,
NULL,
- NULL
- );
+ NULL)))
+ {
+ active_metrics[i].lastlogsize = lastlogsize;
+ }
s_count++;
}
@@ -480,22 +479,27 @@ static int process_active_checks(char *server, unsigned short port)
s_count = 0;
p_count = 0;
- while (SUCCEED == (ret = process_eventlog(filename,&active_metrics[i].lastlogsize, &timestamp, &source, &severity, &value))) {
+ lastlogsize = active_metrics[i].lastlogsize;
+ while (SUCCEED == send_err && SUCCEED == (ret = process_eventlog(filename, &lastlogsize,
+ &timestamp, &source, &severity, &value)))
+ {
if (!value) /* EOF */
break;
if (!pattern || NULL != zbx_regexp_match(value, pattern, NULL)) {
- send_err = send_value(
+ if (SUCCEED == (send_err = send_value(
server,
port,
CONFIG_HOSTNAME,
active_metrics[i].key,
value,
- &active_metrics[i].lastlogsize,
+ &lastlogsize,
&timestamp,
source,
- &severity
- );
+ &severity)))
+ {
+ active_metrics[i].lastlogsize = lastlogsize;
+ }
s_count++;
}
@@ -566,7 +570,6 @@ static int process_active_checks(char *server, unsigned short port)
}
active_metrics[i].nextcheck = (int)time(NULL)+active_metrics[i].refresh;
}
- return ret;
}
static void refresh_metrics(char *server, unsigned short port)
@@ -622,26 +625,17 @@ ZBX_THREAD_ENTRY(active_checks_thread, args)
{
zbx_setproctitle("processing active checks");
- if(process_active_checks(activechk_args.host, activechk_args.port) == FAIL)
- {
- zbx_sleep(60);
- continue;
- }
+ process_active_checks(activechk_args.host, activechk_args.port);
nextcheck = get_min_nextcheck();
- if(FAIL == nextcheck)
- {
+ if (FAIL == nextcheck)
sleeptime = 60;
- }
- else
- {
+ else {
sleeptime = nextcheck - (int)time(NULL);
-
sleeptime = MAX(sleeptime, 0);
}
- if(sleeptime > 0)
- {
+ if (sleeptime > 0) {
sleeptime = MIN(sleeptime, 60);
zabbix_log(LOG_LEVEL_DEBUG, "Sleeping for %d seconds", sleeptime );
@@ -649,11 +643,8 @@ ZBX_THREAD_ENTRY(active_checks_thread, args)
zbx_setproctitle("poller [sleeping for %d seconds]", sleeptime);
zbx_sleep( sleeptime );
- }
- else
- {
+ } else
zabbix_log(LOG_LEVEL_DEBUG, "No sleeping" );
- }
if(time(NULL) >= nextrefresh)
{
diff --git a/src/zabbix_agent/eventlog.c b/src/zabbix_agent/eventlog.c
index 480b5d92..6a620145 100755
--- a/src/zabbix_agent/eventlog.c
+++ b/src/zabbix_agent/eventlog.c
@@ -43,6 +43,9 @@ static int zbx_open_eventlog(
assert(pNumRecords);
assert(pLatestRecord);
+ zabbix_log(LOG_LEVEL_DEBUG, "In zbx_open_eventlog() [source:%s]",
+ source);
+
*eventlog_handle = 0;
*pNumRecords = 0;
@@ -63,7 +66,6 @@ static int zbx_open_eventlog(
RegCloseKey(hk);
-
if ( !(*eventlog_handle = OpenEventLog(NULL, source))) /* open log file */
{
@@ -115,6 +117,10 @@ static long zbx_get_eventlog_message(
assert(out_severity);
assert(out_timestamp);
+ zabbix_log(LOG_LEVEL_DEBUG, "In zbx_get_eventlog_message() [source:%s] [which:%ld]",
+ source,
+ which);
+
*out_source = NULL;
*out_message = NULL;
*out_severity = 0;
@@ -238,8 +244,8 @@ static long zbx_get_eventlog_message(
*out_message = zbx_strdcatf(*out_message, ",%s", aInsertStrs[i]);
}
}
- return 0;
+ return 0;
}
#endif /* _WINDOWS */