diff options
| author | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-07-29 09:43:53 +0000 |
|---|---|---|
| committer | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-07-29 09:43:53 +0000 |
| commit | f7cd0be8cdcedcc34656ced6982dd7abadca01fc (patch) | |
| tree | a6aa538b83fd84824e8a8431bd9c2ecc694dafc3 /src/libs/zbxserver | |
| parent | e3248ce4bc1b34d8623359d5333cfa9712b5eb73 (diff) | |
- [DEV-196] improved performance of server module
git-svn-id: svn://svn.zabbix.com/trunk@5848 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/libs/zbxserver')
| -rw-r--r-- | src/libs/zbxserver/expression.c | 10 | ||||
| -rw-r--r-- | src/libs/zbxserver/expression.h | 1 | ||||
| -rw-r--r-- | src/libs/zbxserver/functions.c | 28 |
3 files changed, 23 insertions, 16 deletions
diff --git a/src/libs/zbxserver/expression.c b/src/libs/zbxserver/expression.c index fdc23363..3141d35d 100644 --- a/src/libs/zbxserver/expression.c +++ b/src/libs/zbxserver/expression.c @@ -1503,9 +1503,9 @@ void substitute_macros(DB_EVENT *event, DB_ACTION *action, char **data) if('\0' == *data[0]) return; - zabbix_log(LOG_LEVEL_DEBUG, "Before substitute_simple_macros(%s)", *data); +/* zabbix_log(LOG_LEVEL_DEBUG, "Before substitute_simple_macros(%s)", *data);*/ substitute_simple_macros(event, action, data, MACRO_TYPE_MESSAGE_SUBJECT | MACRO_TYPE_MESSAGE_BODY); - zabbix_log(LOG_LEVEL_DEBUG, "After substitute_simple_macros(%s)", *data); +/* zabbix_log(LOG_LEVEL_DEBUG, "After substitute_simple_macros(%s)", *data);*/ pl = *data; while((pr = strchr(pl, '{'))) @@ -1599,7 +1599,7 @@ void substitute_macros(DB_EVENT *event, DB_ACTION *action, char **data) * Comments: example: "({15}>10)|({123}=0)" => "(6.456>10)|(0=0) * * * ******************************************************************************/ -int substitute_functions(char **exp, char *error, int maxerrlen) +static int substitute_functions(char **exp, char *error, int maxerrlen) { char *value; char functionid[MAX_STRING_LEN]; @@ -1674,7 +1674,7 @@ int substitute_functions(char **exp, char *error, int maxerrlen) * ({a0:system[procload].max(300)}>3) * * * ******************************************************************************/ -int evaluate_expression(int *result,char **expression, int trigger_value, char *error, int maxerrlen) +int evaluate_expression(int *result,char **expression, DB_TRIGGER *trigger, char *error, int maxerrlen) { /* Required for substitution of macros */ DB_EVENT event; @@ -1686,7 +1686,7 @@ int evaluate_expression(int *result,char **expression, int trigger_value, char * /* Substitute macros first */ memset(&event,0,sizeof(DB_EVENT)); memset(&action,0,sizeof(DB_ACTION)); - event.value = trigger_value; + event.value = trigger->value; substitute_simple_macros(&event, &action, expression, MACRO_TYPE_TRIGGER_EXPRESSION); diff --git a/src/libs/zbxserver/expression.h b/src/libs/zbxserver/expression.h index 9876dc08..15678c81 100644 --- a/src/libs/zbxserver/expression.h +++ b/src/libs/zbxserver/expression.h @@ -26,7 +26,6 @@ int cmp_double(double a,double b); int find_char(char *str,char c); -int evaluate_expression(int *result,char **expression, int triggger_value, char *error, int maxerrlen); void delete_reol(char *c); #endif diff --git a/src/libs/zbxserver/functions.c b/src/libs/zbxserver/functions.c index f453a9ca..e63e4121 100644 --- a/src/libs/zbxserver/functions.c +++ b/src/libs/zbxserver/functions.c @@ -152,7 +152,7 @@ void update_triggers(zbx_uint64_t itemid) trigger.type = atoi(row[8]); exp = strdup(trigger.expression); - if( evaluate_expression(&exp_value, &exp, trigger.value, error, sizeof(error)) != 0 ) + if( evaluate_expression(&exp_value, &exp, &trigger, error, sizeof(error)) != 0 ) { zabbix_log( LOG_LEVEL_WARNING, "Expression [%s] cannot be evaluated [%s]", trigger.expression, @@ -295,7 +295,8 @@ static int add_history(DB_ITEM *item, AGENT_RESULT *value, int now) else if(item->value_type==ITEM_VALUE_TYPE_LOG) { if(GET_STR_RESULT(value)) - DBadd_history_log(0, item->itemid,value->str,now,item->timestamp,item->eventlog_source,item->eventlog_severity); + DBadd_history_log(item->itemid, value->str, now, item->timestamp, item->eventlog_source, + item->eventlog_severity, item->lastlogsize); } else if(item->value_type==ITEM_VALUE_TYPE_TEXT) { @@ -575,10 +576,16 @@ void process_new_value(DB_ITEM *item, AGENT_RESULT *value, time_t now) } } } +/* +zabbix_log(LOG_LEVEL_CRIT, "I"); +*/ add_history(item, value, now); - update_item(item, value, now); - update_functions(item); + if (0 == CONFIG_DBSYNCER_FORKS) + { + update_item(item, value, now); + update_functions(item); + } } /****************************************************************************** @@ -625,27 +632,27 @@ static int proxy_add_history(DB_ITEM *item, AGENT_RESULT *value, int now) if(item->value_type==ITEM_VALUE_TYPE_UINT64) { if(GET_UI64_RESULT(value)) - DBproxy_add_history_uint(item->host_name, item->key, now, value->ui64); + DBproxy_add_history_uint(item->itemid, value->ui64, now); } else if(item->value_type==ITEM_VALUE_TYPE_FLOAT) { if(GET_DBL_RESULT(value)) - DBproxy_add_history(item->host_name, item->key, now, value->dbl); + DBproxy_add_history(item->itemid, value->dbl, now); } else if(item->value_type==ITEM_VALUE_TYPE_STR) { if(GET_STR_RESULT(value)) - DBproxy_add_history_str(item->host_name, item->key, now, value->str); + DBproxy_add_history_str(item->itemid, value->str, now); } else if(item->value_type==ITEM_VALUE_TYPE_LOG) { if(GET_STR_RESULT(value)) - DBproxy_add_history_log(item->host_name, item->key, now, item->timestamp, item->eventlog_source, item->eventlog_severity, value->str); + DBproxy_add_history_log(item->itemid, value->str, now, item->timestamp, item->eventlog_source, item->eventlog_severity, item->lastlogsize); } else if(item->value_type==ITEM_VALUE_TYPE_TEXT) { if(GET_TEXT_RESULT(value)) - DBproxy_add_history_text(item->host_name, item->key, now, value->text); + DBproxy_add_history_text(item->itemid, value->str, now); } else { @@ -738,5 +745,6 @@ void proxy_process_new_value(DB_ITEM *item, AGENT_RESULT *value, time_t now) item->key); proxy_add_history(item, value, now); - proxy_update_item(item, value, now); + if (0 == CONFIG_DBSYNCER_FORKS) + proxy_update_item(item, value, now); } |
