summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-07-29 09:09:09 +0000
committersasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-07-29 09:09:09 +0000
commit94a24eeb14bc3866360f0492956d1cbf4518c62d (patch)
treee6449f3220c27ea2a7700b93a3b4fc04fae829f7
parent5c3768ceaa3080321c3bf6481640fcdd380d0025 (diff)
downloadzabbix-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--ChangeLog1
-rw-r--r--frontends/php/history.php2
-rw-r--r--frontends/php/include/classes/chart.inc.php10
-rw-r--r--frontends/php/include/classes/pie.inc.php11
-rw-r--r--frontends/php/include/graphs.inc.php37
-rw-r--r--src/libs/zbxdbhigh/db.c54
6 files changed, 105 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index f044b180..a82b8a28 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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))
{