diff options
| author | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2004-05-25 07:40:51 +0000 |
|---|---|---|
| committer | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2004-05-25 07:40:51 +0000 |
| commit | 231faf1162a0aac6feb4e30b18da7bd14bb8de11 (patch) | |
| tree | 5c9266d54cb8b65d5014629871ff730547268bdb /include | |
| parent | d3efc4c51bb20d6122b9b45964017a9d1eae7c3a (diff) | |
- added support for real delta. item.delta=2. (Alexei)
- new selection for triggers.php (Alexei)
- new selection for items.php (Alexei)
- removed helpdesk.php (Alexei)
- fixed check of permissions for screenedit.php (Alexei)
- new selection for graphs in charts.php (Alexei)
- new selection of maps in maps.php (Alexei)
- new selection of group and host for latest.php (Alexei)
- added support for macro {IPADDRESS} (Alexei)
git-svn-id: svn://svn.zabbix.com/trunk@1348 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'include')
| -rw-r--r-- | include/expression.c | 30 | ||||
| -rw-r--r-- | include/functions.c | 41 |
2 files changed, 66 insertions, 5 deletions
diff --git a/include/expression.c b/include/expression.c index def30ef2..b4683d19 100644 --- a/include/expression.c +++ b/include/expression.c @@ -645,7 +645,8 @@ void substitute_simple_macros(DB_TRIGGER *trigger, DB_ACTION *action, char *exp) if( (s = strstr(str,"{HOSTNAME}")) != NULL ) { - snprintf(sql,sizeof(sql)-1,"select distinct t.description,h.host from triggers t, functions f,items i, hosts h where t.triggerid=%d and f.triggerid=t.triggerid and f.itemid=i.itemid and h.hostid=i.hostid", trigger->triggerid); +/* snprintf(sql,sizeof(sql)-1,"select distinct t.description,h.host from triggers t, functions f,items i, hosts h where t.triggerid=%d and f.triggerid=t.triggerid and f.itemid=i.itemid and h.hostid=i.hostid", trigger->triggerid);*/ + snprintf(sql,sizeof(sql)-1,"select distinct h.host from triggers t, functions f,items i, hosts h where t.triggerid=%d and f.triggerid=t.triggerid and f.itemid=i.itemid and h.hostid=i.hostid", trigger->triggerid); result = DBselect(sql); if(DBnum_rows(result) == 0) @@ -656,7 +657,7 @@ void substitute_simple_macros(DB_TRIGGER *trigger, DB_ACTION *action, char *exp) } else { - strscpy(tmp,DBget_field(result,0,1)); + strscpy(tmp,DBget_field(result,0,0)); DBfree_result(result); } @@ -668,6 +669,31 @@ void substitute_simple_macros(DB_TRIGGER *trigger, DB_ACTION *action, char *exp) found = SUCCEED; } + else if( (s = strstr(str,"{IPADDRESS}")) != NULL ) + { + snprintf(sql,sizeof(sql)-1,"select distinct h.ip from triggers t, functions f,items i, hosts h where t.triggerid=%d and f.triggerid=t.triggerid and f.itemid=i.itemid and h.hostid=i.hostid and i.useip=1", trigger->triggerid); + result = DBselect(sql); + + if(DBnum_rows(result) == 0) + { + zabbix_log( LOG_LEVEL_ERR, "No IP address in substitute_simple_macros. Triggerid [%d]", trigger->triggerid); + strscpy(tmp, "*UNKNOWN IP*"); + DBfree_result(result); + } + else + { + strscpy(tmp,DBget_field(result,0,0)); + + DBfree_result(result); + } + + s[0]=0; + strcpy(exp, str); + strncat(exp, tmp, MAX_STRING_LEN); + strncat(exp, s+strlen("{IPADDRESS}"), MAX_STRING_LEN); + + found = SUCCEED; + } else if( (s = strstr(str,"{DATE}")) != NULL ) { now=time(NULL); diff --git a/include/functions.c b/include/functions.c index 45aad36f..0412373c 100644 --- a/include/functions.c +++ b/include/functions.c @@ -1190,7 +1190,8 @@ void process_new_value(DB_ITEM *item,char *value) { DBadd_history(item->itemid,value_double,now); } - else + /* Delta as speed of change */ + else if(item->delta == 1) { /* Save delta */ if((item->prevorgvalue_null == 0) && (item->prevorgvalue <= value_double) ) @@ -1198,6 +1199,20 @@ void process_new_value(DB_ITEM *item,char *value) DBadd_history(item->itemid, (value_double - item->prevorgvalue)/(now-item->lastclock), now); } } + /* Real delta: simple difference between values */ + else if(item->delta == 2) + { + /* Save delta */ + if((item->prevorgvalue_null == 0) && (item->prevorgvalue <= value_double) ) + { + DBadd_history(item->itemid, (value_double - item->prevorgvalue), now); + } + } + else + { + zabbix_log(LOG_LEVEL_ERR, "Value not stored for itemid [%d]. Unknown delta [%d]", item->itemid, item->delta); + return; + } } else { @@ -1224,8 +1239,8 @@ void process_new_value(DB_ITEM *item,char *value) snprintf(sql,sizeof(sql)-1,"update items set nextcheck=%d,lastclock=%d where itemid=%d",now+item->delay,now,item->itemid); } } - /* Logic for delta */ - else + /* Logic for delta as speed of change */ + else if(item->delta == 1) { if((item->prevorgvalue_null == 0) && (item->prevorgvalue <= value_double) ) { @@ -1244,6 +1259,26 @@ void process_new_value(DB_ITEM *item,char *value) item->prevvalue_null=item->lastvalue_null; item->lastvalue_null=0; } + /* Real delta: simple difference between values */ + else if(item->delta == 2) + { + if((item->prevorgvalue_null == 0) && (item->prevorgvalue <= value_double) ) + { + snprintf(sql,sizeof(sql)-1,"update items set nextcheck=%d,prevvalue=lastvalue,prevorgvalue=%f,lastvalue='%f',lastclock=%d where itemid=%d",now+item->delay,value_double,(value_double - item->prevorgvalue),now,item->itemid); + } + else + { + snprintf(sql,sizeof(sql)-1,"update items set nextcheck=%d,prevorgvalue=%f,lastclock=%d where itemid=%d",now+item->delay,value_double,now,item->itemid); + } + + item->prevvalue=item->lastvalue; + item->lastvalue=(value_double - item->prevorgvalue); + item->prevvalue_str=item->lastvalue_str; + /* Risky !!!*/ + item->lastvalue_str=value; + item->prevvalue_null=item->lastvalue_null; + item->lastvalue_null=0; + } DBexecute(sql); update_functions( item ); |
