diff options
author | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-07-29 09:09:09 +0000 |
---|---|---|
committer | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-07-29 09:09:09 +0000 |
commit | 94a24eeb14bc3866360f0492956d1cbf4518c62d (patch) | |
tree | e6449f3220c27ea2a7700b93a3b4fc04fae829f7 | |
parent | 5c3768ceaa3080321c3bf6481640fcdd380d0025 (diff) | |
download | zabbix-94a24eeb14bc3866360f0492956d1cbf4518c62d.tar.gz zabbix-94a24eeb14bc3866360f0492956d1cbf4518c62d.tar.xz zabbix-94a24eeb14bc3866360f0492956d1cbf4518c62d.zip |
- [DEV-197] added support of trends_uint
git-svn-id: svn://svn.zabbix.com/trunk@5845 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | frontends/php/history.php | 2 | ||||
-rw-r--r-- | frontends/php/include/classes/chart.inc.php | 10 | ||||
-rw-r--r-- | frontends/php/include/classes/pie.inc.php | 11 | ||||
-rw-r--r-- | frontends/php/include/graphs.inc.php | 37 | ||||
-rw-r--r-- | src/libs/zbxdbhigh/db.c | 54 |
6 files changed, 105 insertions, 10 deletions
@@ -1,5 +1,6 @@ Changes for 1.5.4 + - [DEV-197] added support of trends_uint (Sasha) - [ZBX-391] added charset info to the email header. Thanks to Vadim Pilipenko. (Sasha) - [DEV-189] added full clone to hosts (Artem) - [DEV-182] added massupdate for triggers (Artem) diff --git a/frontends/php/history.php b/frontends/php/history.php index ce58bf04..83ed592d 100644 --- a/frontends/php/history.php +++ b/frontends/php/history.php @@ -136,7 +136,7 @@ include_once "include/page_header.php"; ' FROM items i,hosts h '. ' WHERE i.itemid IN ('.(is_array($_REQUEST["itemid"]) ? implode(',', $_REQUEST["itemid"]) : $_REQUEST["itemid"]).') '. ' AND h.hostid=i.hostid '. - ' AND '.DBcondition('h.hostid',$available_host, true)))) + ' AND '.DBcondition('h.hostid',$available_hosts, true)))) { access_deny(); } diff --git a/frontends/php/include/classes/chart.inc.php b/frontends/php/include/classes/chart.inc.php index 50f076c6..c80a1107 100644 --- a/frontends/php/include/classes/chart.inc.php +++ b/frontends/php/include/classes/chart.inc.php @@ -748,6 +748,16 @@ class Chart extends Graph{ ' AND clock>='.$from_time. ' AND clock<='.$to_time. ' GROUP BY itemid,'.$calc_field + , + + 'SELECT itemid,'.$calc_field.' as i,'. + ' sum(num) as count,avg(value_avg) as avg,min(value_min) as min,'. + ' max(value_max) as max,max(clock) as clock'. + ' FROM trends_uint '. + ' WHERE itemid='.$this->items[$i]['itemid']. + ' AND clock>='.$from_time. + ' AND clock<='.$to_time. + ' GROUP BY itemid,'.$calc_field ); $this->items[$i]['delay'] = max($this->items[$i]['delay'],3600); diff --git a/frontends/php/include/classes/pie.inc.php b/frontends/php/include/classes/pie.inc.php index ad92298d..822431b9 100644 --- a/frontends/php/include/classes/pie.inc.php +++ b/frontends/php/include/classes/pie.inc.php @@ -132,6 +132,17 @@ function selectData(){ ' AND t.clock>='.$from_time. ' AND t.clock<='.$to_time. ' GROUP BY t.itemid' + , + + 'SELECT t.itemid, '. + ' avg(t.value_avg) AS avg,min(t.value_min) AS min,'. + ' max(t.value_max) AS max,max(t.clock) AS clock, max(i.lastvalue) as lst'. + ' FROM trends_uint t '. + ' LEFT JOIN items i ON t.itemid = i.itemid'. + ' WHERE t.itemid='.$this->items[$i]['itemid']. + ' AND t.clock>='.$from_time. + ' AND t.clock<='.$to_time. + ' GROUP BY t.itemid' ); } diff --git a/frontends/php/include/graphs.inc.php b/frontends/php/include/graphs.inc.php index 84bfa6c6..e20342b9 100644 --- a/frontends/php/include/graphs.inc.php +++ b/frontends/php/include/graphs.inc.php @@ -247,15 +247,26 @@ * Aly * */ - function get_min_itemclock_by_graphid($graphid){ + function get_min_itemclock_by_graphid($graphid) + { + $min = 0; $row = DBfetch(DBselect('SELECT MIN(t.clock) as clock '. ' FROM graphs_items gi, trends t '. ' WHERE gi.graphid='.$graphid. ' AND t.itemid = gi.itemid')); - if(!empty($row) && $row) - return $row['clock']; - return 0; + if(!empty($row) && $row && $row['clock']) + $min = $row['clock']; + + $row = DBfetch(DBselect('SELECT MIN(t.clock) as clock '. + ' FROM graphs_items gi, trends_uint t '. + ' WHERE gi.graphid='.$graphid. + ' AND t.itemid = gi.itemid')); + + if(!empty($row) && $row && $row['clock']) + $min = $min == 0 ? $row['clock'] : min($min, $row['clock']); + + return $min; } /* @@ -268,14 +279,24 @@ * Aly * */ - function get_min_itemclock_by_itemid($itemid){ + function get_min_itemclock_by_itemid($itemid) + { + $min = 0; $row = DBfetch(DBselect('SELECT MIN(t.clock) as clock '. ' FROM trends t '. ' WHERE t.itemid='.$itemid)); - if(!empty($row) && $row) - return $row['clock']; - return 0; + if(!empty($row) && $row && $row['clock']) + $min = $row['clock']; + + $row = DBfetch(DBselect('SELECT MIN(t.clock) as clock '. + ' FROM trends_uint t '. + ' WHERE t.itemid='.$itemid)); + + if(!empty($row) && $row && $row['clock']) + $min = $min == 0 ? $row['clock'] : min($min, $row['clock']); + + return $min; } // Show History Graph diff --git a/src/libs/zbxdbhigh/db.c b/src/libs/zbxdbhigh/db.c index 5976252d..2e02361f 100644 --- a/src/libs/zbxdbhigh/db.c +++ b/src/libs/zbxdbhigh/db.c @@ -1052,6 +1052,58 @@ int DBadd_trend(zbx_uint64_t itemid, double value, int clock) return SUCCEED; } +static int DBadd_trend_uint(zbx_uint64_t itemid, zbx_uint64_t value, int clock) +{ + DB_RESULT result; + DB_ROW row; + int hour; + int num; + zbx_uint64_t value_min, value_avg, value_max; + + zabbix_log(LOG_LEVEL_DEBUG,"In add_trend_uint()"); + + hour=clock-clock%3600; + + result = DBselect("select num,value_min,value_avg,value_max from trends_uint where itemid=" ZBX_FS_UI64 " and clock=%d", + itemid, + hour); + + row=DBfetch(result); + + if(row) + { + num = atoi(row[0]); + value_min = zbx_atoui64(row[1]); + value_avg = zbx_atoui64(row[2]); + value_max = zbx_atoui64(row[3]); + if(value<value_min) value_min=value; + if(value>value_max) value_max=value; + value_avg=(num*value_avg+value)/(num+1); + num++; + DBexecute("update trends_uint set num=%d,value_min=" ZBX_FS_UI64 ",value_avg=" ZBX_FS_UI64 ",value_max=" ZBX_FS_UI64 " where itemid=" ZBX_FS_UI64 " and clock=%d", + num, + value_min, + value_avg, + value_max, + itemid, + hour); + } + else + { + DBexecute("insert into trends_uint (clock,itemid,num,value_min,value_avg,value_max) values (%d," ZBX_FS_UI64 ",%d," ZBX_FS_UI64 "," ZBX_FS_UI64 "," ZBX_FS_UI64 ")", + hour, + itemid, + 1, + value, + value, + value); + } + + DBfree_result(result); + + return SUCCEED; +} + int DBadd_history(zbx_uint64_t itemid, double value, int clock) { zabbix_log(LOG_LEVEL_DEBUG,"In add_history()"); @@ -1098,7 +1150,7 @@ int DBadd_history_uint(zbx_uint64_t itemid, zbx_uint64_t value, int clock) value); } - DBadd_trend(itemid, (double)value, clock); + DBadd_trend_uint(itemid, value, clock); if((CONFIG_NODE_NOHISTORY == 0) && (CONFIG_MASTER_NODEID>0)) { |