diff options
| author | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2003-10-17 09:34:54 +0000 |
|---|---|---|
| committer | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2003-10-17 09:34:54 +0000 |
| commit | e3eca8ce0ecfaf8fbb40c2de6099bf1dfe811ca9 (patch) | |
| tree | 904b9441b9bb0688ddf6e1d89e5603222125529a /include | |
| parent | 622a603eec30f6bf1d65218dc0e9ca861e16e12c (diff) | |
| download | zabbix-e3eca8ce0ecfaf8fbb40c2de6099bf1dfe811ca9.tar.gz zabbix-e3eca8ce0ecfaf8fbb40c2de6099bf1dfe811ca9.tar.xz zabbix-e3eca8ce0ecfaf8fbb40c2de6099bf1dfe811ca9.zip | |
- support of delta flag in item definition (Alexei)
git-svn-id: svn://svn.zabbix.com/trunk@994 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'include')
| -rw-r--r-- | include/db.h | 4 | ||||
| -rw-r--r-- | include/functions.c | 55 |
2 files changed, 49 insertions, 10 deletions
diff --git a/include/db.h b/include/db.h index d7a9daa7..e5787927 100644 --- a/include/db.h +++ b/include/db.h @@ -79,7 +79,10 @@ DB_ITEM int port; int delay; int history; + double prevorgvalue; + int prevorgvalue_null; double lastvalue; + int lastclock; char *lastvalue_str; int lastvalue_null; double prevvalue; @@ -89,6 +92,7 @@ DB_ITEM time_t lastcheck; time_t nextcheck; int value_type; + int delta; }; DB_FUNCTION diff --git a/include/functions.c b/include/functions.c index a4573c70..f90dd3e2 100644 --- a/include/functions.c +++ b/include/functions.c @@ -1298,6 +1298,7 @@ void process_new_value(DB_ITEM *item,char *value) double value_double; char *e; + now = time(NULL); zabbix_log( LOG_LEVEL_DEBUG, "In process_new_value()"); value_double=strtod(value,&e); @@ -1306,7 +1307,19 @@ void process_new_value(DB_ITEM *item,char *value) { if(item->value_type==ITEM_VALUE_TYPE_FLOAT) { - DBadd_history(item->itemid,value_double); + /* Should we store delta or original value? */ + if(item->delta == 0) + { + DBadd_history(item->itemid,value_double); + } + else + { + /* Save delta */ + if(item->prevorgvalue_null == 0) + { + DBadd_history(item->itemid, (value_double - item->prevorgvalue)/(now-item->lastclock)); + } + } } else { @@ -1314,23 +1327,45 @@ void process_new_value(DB_ITEM *item,char *value) } } - now = time(NULL); - if((item->prevvalue_null == 1) || (strcmp(value,item->lastvalue_str) != 0) || (strcmp(item->prevvalue_str,item->lastvalue_str) != 0) ) + if(item->delta ==0) + { + if((item->prevvalue_null == 1) || (strcmp(value,item->lastvalue_str) != 0) || (strcmp(item->prevvalue_str,item->lastvalue_str) != 0) ) + { + sprintf(sql,"update items set nextcheck=%d,prevvalue=lastvalue,lastvalue='%s',lastclock=%d where itemid=%d",now+item->delay,value,now,item->itemid); + item->prevvalue=item->lastvalue; + item->lastvalue=value_double; + item->prevvalue_str=item->lastvalue_str; + /* Risky !!!*/ + item->lastvalue_str=value; + item->prevvalue_null=item->lastvalue_null; + item->lastvalue_null=0; + } + else + { + sprintf(sql,"update items set nextcheck=%d,lastclock=%d where itemid=%d",now+item->delay,now,item->itemid); + } + } + /* Logic for delta */ + else { - sprintf(sql,"update items set nextcheck=%d,prevvalue=lastvalue,lastvalue='%s',lastclock=%d where itemid=%d",now+item->delay,value,now,item->itemid); + if(item->prevorgvalue_null == 0) + { + sprintf(sql,"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->lastclock),now,item->itemid); + } + else + { + sprintf(sql,"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->lastvalue=(value_double - item->prevorgvalue)/(now-item->lastclock); item->prevvalue_str=item->lastvalue_str; -/* Risky !!!*/ + /* Risky !!!*/ item->lastvalue_str=value; item->prevvalue_null=item->lastvalue_null; item->lastvalue_null=0; } - else - { - sprintf(sql,"update items set nextcheck=%d,lastclock=%d where itemid=%d",now+item->delay,now,item->itemid); - } DBexecute(sql); update_functions( item ); |
