summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2004-05-25 07:40:51 +0000
committerhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2004-05-25 07:40:51 +0000
commit231faf1162a0aac6feb4e30b18da7bd14bb8de11 (patch)
tree5c9266d54cb8b65d5014629871ff730547268bdb /include
parentd3efc4c51bb20d6122b9b45964017a9d1eae7c3a (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.c30
-rw-r--r--include/functions.c41
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 );