summaryrefslogtreecommitdiffstats
path: root/src/zabbix_server
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-02-22 12:39:55 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-02-22 12:39:55 +0000
commitbb235bd63289bd6debf4a951e4169fb3c9430a5f (patch)
tree2151874c5fb08cb56cc80846f44c4e8b2113ff63 /src/zabbix_server
parentbc3b6068812aa65d806b74b9b89ff1aa74ee0ccb (diff)
downloadzabbix-bb235bd63289bd6debf4a951e4169fb3c9430a5f.tar.gz
zabbix-bb235bd63289bd6debf4a951e4169fb3c9430a5f.tar.xz
zabbix-bb235bd63289bd6debf4a951e4169fb3c9430a5f.zip
- added value mapping for e-mail content (Eugene)
- fixed frontend (Eugene) git-svn-id: svn://svn.zabbix.com/trunk@2671 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/zabbix_server')
-rw-r--r--src/zabbix_server/evalfunc.c176
-rw-r--r--src/zabbix_server/evalfunc.h2
-rw-r--r--src/zabbix_server/functions.c2
3 files changed, 130 insertions, 50 deletions
diff --git a/src/zabbix_server/evalfunc.c b/src/zabbix_server/evalfunc.c
index d7fec673..71a9e9ea 100644
--- a/src/zabbix_server/evalfunc.c
+++ b/src/zabbix_server/evalfunc.c
@@ -668,22 +668,18 @@ static int evaluate_NODATA(char *value,DB_ITEM *item,int parameter)
* Comments: *
* *
******************************************************************************/
-int evaluate_FUNCTION(char *value,DB_ITEM *item,char *function,char *parameter,int flag)
+int evaluate_FUNCTION(char *value,DB_ITEM *item,char *function,char *parameter)
{
int ret = SUCCEED;
time_t now;
struct tm *tm;
- float value_float;
- float value_float_abs;
- char suffix[MAX_STRING_LEN];
-
int fuzlow, fuzhig;
int day;
int len;
- zabbix_log( LOG_LEVEL_DEBUG, "In evaluate_FUNCTION() Function [%s] flag [%d]",function,flag);
+ zabbix_log( LOG_LEVEL_DEBUG, "In evaluate_FUNCTION() Function [%s]",function);
if(strcmp(function,"last")==0)
{
@@ -963,53 +959,131 @@ int evaluate_FUNCTION(char *value,DB_ITEM *item,char *function,char *parameter,i
zabbix_log( LOG_LEVEL_DEBUG, "In evaluate_FUNCTION() 7 Units [%s]", item->units);
zabbix_log( LOG_LEVEL_DEBUG, "In evaluate_FUNCTION() 7 Value [%s] Units [%s] Formula [%s]", value, item->units, item->formula);
+ zabbix_log( LOG_LEVEL_DEBUG, "End of evaluate_FUNCTION. Result [%s]",value);
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Function: add_value_suffix *
+ * *
+ * Purpose: Add suffix for value *
+ * *
+ * Parameters: value - value to replacing *
+ * valuemapid - index of value map *
+ * *
+ * Return value: SUCCEED - suffix added succesfully, value contains new value *
+ * FAIL - adding failed, value contains old value *
+ * *
+ * Author: Eugene Grigorjev *
+ * *
+ * Comments: *
+ * *
+ ******************************************************************************/
+int add_value_suffix(char *value, DB_ITEM *item)
+{
+ float value_float;
+ float value_float_abs;
+
+ char suffix[MAX_STRING_LEN];
+
+ zabbix_log( LOG_LEVEL_DEBUG, "In add_value_suffix() Value [%s]",value);
+
/* Add suffix: 1000000 -> 1 MB */
- if( (EVALUATE_FUNCTION_SUFFIX == flag) && (ITEM_VALUE_TYPE_FLOAT == item->value_type) &&
- (SUCCEED == ret) && strlen(item->units)>0)
- {
- value_float=atof(value);
- /* Custom multiplier? */
+ if(!(
+ (ITEM_VALUE_TYPE_FLOAT == item->value_type) &&
+ (strlen(item->units)>0))
+ ) return FAIL;
+
+ value_float=atof(value);
+ /* Custom multiplier? */
/*
- if(item->multiplier == 1)
- {
- value_float=value_float*atof(item->formula);
- }*/
+ if(item->multiplier == 1)
+ {
+ value_float=value_float*atof(item->formula);
+ }*/
- value_float_abs=abs(value_float);
+ value_float_abs=abs(value_float);
- if(value_float_abs<1024)
- {
- strscpy(suffix,"");
- }
- else if(value_float_abs<1024*1024)
- {
- strscpy(suffix,"K");
- value_float=value_float/1024;
- }
- else if(value_float_abs<1024*1024*1024)
- {
- strscpy(suffix,"M");
- value_float=value_float/(1024*1024);
- }
- else
- {
- strscpy(suffix,"G");
- value_float=value_float/(1024*1024*1024);
- }
- zabbix_log( LOG_LEVEL_DEBUG, "Value [%s] [%f] Suffix [%s] Units [%s]",value,value_float,suffix,item->units);
+ if(value_float_abs<1024)
+ {
+ strscpy(suffix,"");
+ }
+ else if(value_float_abs<1024*1024)
+ {
+ strscpy(suffix,"K");
+ value_float=value_float/1024;
+ }
+ else if(value_float_abs<1024*1024*1024)
+ {
+ strscpy(suffix,"M");
+ value_float=value_float/(1024*1024);
+ }
+ else
+ {
+ strscpy(suffix,"G");
+ value_float=value_float/(1024*1024*1024);
+ }
// if(cmp_double((double)round(value_float), value_float) == 0)
- if(cmp_double((int)(value_float+0.5), value_float) == 0)
- {
- snprintf(value, MAX_STRING_LEN-1, "%.0f %s%s", value_float, suffix, item->units);
- }
- else
- {
- snprintf(value, MAX_STRING_LEN-1, "%.2f %s%s", value_float, suffix, item->units);
- }
+ if(cmp_double((int)(value_float+0.5), value_float) == 0)
+ {
+ snprintf(value, MAX_STRING_LEN-1, "%.0f %s%s", value_float, suffix, item->units);
}
+ else
+ {
+ snprintf(value, MAX_STRING_LEN-1, "%.2f %s%s", value_float, suffix, item->units);
+ }
+
+ zabbix_log(LOG_LEVEL_DEBUG, "Value [%s] [%f] Suffix [%s] Units [%s]",value,value_float,suffix,item->units);
+ return SUCCEED;
+}
- zabbix_log( LOG_LEVEL_DEBUG, "End of evaluate_FUNCTION. Result [%s]",value);
- return ret;
+/******************************************************************************
+ * *
+ * Function: replace_value_by_map *
+ * *
+ * Purpose: replace value by mapping value *
+ * *
+ * Parameters: value - value to replacing *
+ * valuemapid - index of value map *
+ * *
+ * Return value: SUCCEED - evaluated succesfully, value contains new value *
+ * FAIL - evaluation failed, value contains old value *
+ * *
+ * Author: Eugene Grigorjev *
+ * *
+ * Comments: *
+ * *
+ ******************************************************************************/
+int replace_value_by_map(char *value, int valuemapid)
+{
+ DB_RESULT *result;
+
+ char new_value[MAX_STRING_LEN];
+ char sql[MAX_STRING_LEN];
+ char *or_value;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In replace_value_by_map()" );
+
+ if(valuemapid == 0) return FAIL;
+
+ snprintf(sql,sizeof(sql)-1,"select newvalue from mappings where valuemapid=%d and value='%s'",
+ valuemapid, value);
+ result = DBselect(sql);
+
+ if(DBnum_rows(result) == 0) return FAIL;
+
+ strcpy(new_value,DBget_field(result,0,0));
+ DBfree_result(result);
+
+ del_zeroes(new_value);
+ or_value = sql; // sql variarbvle used as tmp - original value
+ strncpy(sql,value,MAX_STRING_LEN);
+
+ snprintf(value, MAX_STRING_LEN-1, "%s (%s)", new_value, or_value);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "Value: $s", value);
+ return SUCCEED;
}
/******************************************************************************
@@ -1039,7 +1113,7 @@ int evaluate_FUNCTION2(char *value,char *host,char *key,char *function,char *par
char sql[MAX_STRING_LEN];
int res;
- zabbix_log(LOG_LEVEL_DEBUG, "In get_lastvalue()" );
+ zabbix_log(LOG_LEVEL_DEBUG, "In evaluate_FUNCTION2()" );
snprintf(sql,sizeof(sql)-1,"select %s where h.host='%s' and h.hostid=i.hostid and i.key_='%s'", ZBX_SQL_ITEM_SELECT, host, key );
result = DBselect(sql);
@@ -1058,7 +1132,13 @@ int evaluate_FUNCTION2(char *value,char *host,char *key,char *function,char *par
zabbix_log(LOG_LEVEL_DEBUG, "Before evaluate_FUNCTION()" );
- res = evaluate_FUNCTION(value,&item,function,parameter, EVALUATE_FUNCTION_SUFFIX);
+// res = evaluate_FUNCTION(value,&item,function,parameter, EVALUATE_FUNCTION_SUFFIX);
+ res = evaluate_FUNCTION(value,&item,function,parameter);
+
+ if(replace_value_by_map(value, item.valuemapid) != SUCCEED)
+ {
+ add_value_suffix(value, &item);
+ }
/* Cannot call DBfree_result until evaluate_FUNC */
DBfree_result(result);
diff --git a/src/zabbix_server/evalfunc.h b/src/zabbix_server/evalfunc.h
index af88c2bc..348a61f0 100644
--- a/src/zabbix_server/evalfunc.h
+++ b/src/zabbix_server/evalfunc.h
@@ -31,7 +31,7 @@
#define ZBX_FLAG_VALUES 1
-int evaluate_FUNCTION(char *value,DB_ITEM *item,char *function,char *parameter, int flag);
+int evaluate_FUNCTION(char *value,DB_ITEM *item,char *function,char *parameter);
int evaluate_FUNCTION2(char *value,char *host,char *key,char *function,char *parameter);
#endif
diff --git a/src/zabbix_server/functions.c b/src/zabbix_server/functions.c
index 417d7c90..8bd854ee 100644
--- a/src/zabbix_server/functions.c
+++ b/src/zabbix_server/functions.c
@@ -93,7 +93,7 @@ void update_functions(DB_ITEM *item)
zabbix_log( LOG_LEVEL_DEBUG, "ItemId:%d Evaluating %s(%d)\n",function.itemid,function.function,function.parameter);
- ret = evaluate_FUNCTION(value,item,function.function,function.parameter, EVALUATE_FUNCTION_NORMAL);
+ ret = evaluate_FUNCTION(value,item,function.function,function.parameter);
if( FAIL == ret)
{
zabbix_log( LOG_LEVEL_DEBUG, "Evaluation failed for function:%s\n",function.function);