From 2bce5107f97161078a9ed020d9eb3dd84b88ac7e Mon Sep 17 00:00:00 2001 From: Michael Clemens Date: Mon, 11 May 2009 15:07:42 +0000 Subject: [PATCH] PollD enhancements --- includes/functions.php | 27 ++++++- includes/polld.php | 178 +++++++++++++++++++++++++++++------------ 2 files changed, 155 insertions(+), 50 deletions(-) diff --git a/includes/functions.php b/includes/functions.php index 2e30a76..2fb826f 100644 --- a/includes/functions.php +++ b/includes/functions.php @@ -1040,9 +1040,34 @@ function getPollDStat() { $i=1; $outp = ""; + $outp .= ""; + + $sql = "SELECT enabled, status, lastrun, nextrun from log_polldstat"; + $sqlres = fetchArrayDB($sql, $conn); + foreach ($sqlres as $row) { + if ($row['enabled'] == "1") { + if ($row['status'] == "running") { + $cellcolor = "green"; + } else if ($row['status'] == "sleeping") { + $cellcolor = "yellow"; + } else { + $cellcolor = "red"; + } + if ($row['nextrun'] != "") $nextrun = strftime("%Y/%m/%d %H:%M:%S", $row['nextrun']); + $status = $row['status']; + } else { + $status = "disabled"; + $cellcolor = "red"; + } + if ($row['lastrun'] != "") $lastrun = strftime("%Y/%m/%d %H:%M:%S", $row['lastrun']); + $outp .= ""; + } + $outp .= "
StatusLast RunNext Run
".$status."".$lastrun."".$nextrun."


"; + + $outp .= ""; $outp .= ""; - $sql = "SELECT * from log_polldstat where timestamp > '".(time()-86400)."' order by timestamp desc"; + $sql = "SELECT * from log_polldlog where timestamp > '".(time()-86400)."' order by timestamp desc"; $_SESSION["lastsql"] = $sql; $rs = fetchSplitArrayDB($sql,$conn,20); foreach ($rs as $row) { diff --git a/includes/polld.php b/includes/polld.php index 116042a..b0b4850 100644 --- a/includes/polld.php +++ b/includes/polld.php @@ -337,14 +337,6 @@ function pollQuery($query = "", $server = "", $ignorePollFreq = FALSE, $timestam $tablename = "res_".$query["name"]."_".$server["servername"]; if (!$ignorePollFreq) echo "---------".$query["name"].": "; - // drop result table if init=yes - if ($init == "yes") { - $dropsql = "drop table ".$tablename; - $this->fireMySQLQuery($dropsql, FALSE); - $updatehashsql = "delete from log_hashes where tablename='".$tablename."'"; - $this->fireMySQLQuery($updatehashsql, FALSE); - //echo "------------deleted hash for ".$tablename."\n"; - } // create table if not exists $showsql = "SHOW TABLES LIKE '".$tablename."'"; $res = $this->fireMySQLQuery($showsql, TRUE); @@ -399,9 +391,6 @@ function pollOverviewQuery($query = "", $server = "", $timestamp){ $tablename = "res_overview_".$server["servername"]; echo "---------".$query["name"].": "; - if ($init == "yes") { - - } //$ctsql = "CREATE TABLE IF NOT EXISTS ".$tablename." LIKE smp_overview"; $ctsql = "CREATE TABLE IF NOT EXISTS ".$tablename." ( `name` varchar(35) collate utf8_unicode_ci NOT NULL, `result` varchar(255) collate utf8_unicode_ci NOT NULL, UNIQUE KEY `name` (`name`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $this->fireMySQLQuery($ctsql, FALSE); @@ -419,14 +408,98 @@ function pollOverviewQuery($query = "", $server = "", $timestamp){ + +/** + * cleanupDatabase - cleans up database (single result tables and/or hash entry) + * + * @param string $servername + * @param string $queryname + * @param string $overviewqueryname + * @param string $hashonly do not drop table, just delete entry in log_hashes + */ + +function cleanupDatabase($servername = "", $queryname = "", $overviewqueryname = "", $hashonly = "yes"){ + + if ($servername != "" && $queryname != "" && $overviewqueryname != "") { + foreach ($this->servers as $server) { + if ($servername == "all" || $server["servername"] == $servername) { + foreach ($this->queries as $query) { + if (($queryname == "all" || $query["name"] == $queryname) && $queryname != "none") { + $tablename = "res_".$query["name"]."_".$server["servername"]; + if ($hashonly != "yes") { + $dropsql = "drop table ".$tablename; + echo $dropsql; + $bla = $this->fireMySQLQuery($dropsql, TRUE); + var_dump($bla); + } + $delsql = "DELETE FROM log_hashes where `tablename` = '".$tablename."'"; + $this->fireMySQLQuery($delsql, FALSE); + } + } + foreach ($this->overviewqueries as $query) { + if (($overviewqueryname == "all" || $query["name"] == $overviewqueryname) && $overviewqueryname != "none") { + $tablename = "res_overview_".$server["servername"]; + $dropsql = "drop table ".$tablename; + $this->fireMySQLQuery($dropsql, FALSE); + } + } + } + } + } +} + + + + +/** + * setPollDStatus + * + * @param string $status + * @param string $lastrun + * @param string $nextrun + */ + +function setPollDStatus($status, $lastrun, $nextrun) { + + if ($status != "") $status = "`status`='".$status."'"; + if ($lastrun != "") $lastrun = ", `lastrun`='".$lastrun."'"; + if ($nextrun != "") $nextrun = ", `nextrun`='".$nextrun."'"; + + $sql = "update log_polldstat set ".$status." ".$lastrun." ".$nextrun." WHERE `id`='1'"; + $this->fireMySQLQuery($sql, FALSE); + +} + + + +/** + * isEnabled - returns true if PollD is enabled + * + * @returns boolean + */ + +function isEnabled() { + + $sql = "select enabled from log_polldstat WHERE `id`='1'"; + $enabled = $this->fireMySQLQuery($sql, TRUE); + + if ($enabled != "" && $enabled[0]->enabled == "1"){ + return TRUE; + } else { + return FALSE; + } + +} + + + /** * poll - the main function that polls the data * - * @param string $init deletes all result tables and sets TSM Monitor back to the state of virginity if "yes" is given * @return boolean */ -function poll($init = "no"){ +function poll(){ $sleeptime = $this->getSleeptime(); @@ -436,47 +509,54 @@ function poll($init = "no"){ // infinite loop while(true) { + + if ($this->isEnabled()) { - $timestamp = time(); + $timestamp = time(); - echo "running!\n"; - echo "timestamp for this run is ".$timestamp."\n"; + echo "running!\n"; + echo "timestamp for this run is ".$timestamp."\n"; + + $this->setPollDStatus("running", "", ""); + + foreach ($this->servers as $server) { + $this->log_timeneeded = time(); + $this->log_unchangedresult = 0; + $this->log_pollfreqnoreached = 0; + $this->log_updated = 0; + // go through all queries defined in xml file + echo "---querying server ".$server["servername"]."\n"; + echo "------querying normal queries\n"; + foreach ($this->queries as $query) { + $this->pollQuery($query, $server, FALSE, $timestamp); + } + echo "------querying overview queries\n"; + foreach ($this->overviewqueries as $query) { + $this->pollOverviewQuery($query, $server, $timestamp); + } + $sql = 'INSERT INTO log_polldlog VALUES ("'.$timestamp.'", "'.$server["servername"].'", "'.$log_updated.'", "'.$log_unchangedresult.'", "'.$log_pollfreqnoreached.'", "'.(time()-$log_timeneeded).'")'; + $this->fireMySQLQuery($sql, FALSE); + } + $init = "no"; + + + echo "needed ".(time()-$timestamp)." seconds for this run.\n"; + //$tempsleeptime = $sleeptime-(time()-$timestamp); + $tempsleeptime = 900 -(time()-$timestamp); + echo "sleeping for ".$tempsleeptime." seconds...\n"; + echo "next run will be at ".strftime("%H:%M:%S", (time()+$tempsleeptime))."\n\n"; + + $this->setPollDStatus("sleeping", $timestamp, (time()+$tempsleeptime)); - foreach ($this->servers as $server) { - $this->log_timeneeded = time(); - $this->log_unchangedresult = 0; - $this->log_pollfreqnoreached = 0; - $this->log_updated = 0; - // go through all queries defined in xml file - echo "---querying server ".$server["servername"]."\n"; - echo "------querying normal queries\n"; - foreach ($this->queries as $query) { - $this->pollQuery($query, $server, FALSE, $timestamp); - } - echo "------querying overview queries\n"; - if ($init == "yes") { - $tablename = "res_overview_".$server["servername"]; - $dropsql = "drop table ".$tablename; - $this->fireMySQLQuery($dropsql, FALSE); - } - foreach ($this->overviewqueries as $query) { - $this->pollOverviewQuery($query, $server, $timestamp); - } - $sql = 'INSERT INTO log_polldstat VALUES ("'.$timestamp.'", "'.$server["servername"].'", "'.$log_updated.'", "'.$log_unchangedresult.'", "'.$log_pollfreqnoreached.'", "'.(time()-$log_timeneeded).'")'; - $this->fireMySQLQuery($sql, FALSE); + sleep ($tempsleeptime); + + } else { + + echo "PollD is disabled. Sleeping for 5 minutes...\n"; + sleep (300); + } - $init = "no"; - - - echo "needed ".(time()-$timestamp)." seconds for this run.\n"; - //$tempsleeptime = $sleeptime-(time()-$timestamp); - $tempsleeptime = 900 -(time()-$timestamp); - echo "sleeping for ".$tempsleeptime." seconds...\n"; - echo "next run will be at ".strftime("%H:%M:%S", (time()+$tempsleeptime))."\n\n"; - - sleep ($tempsleeptime); - } }
TimeServernameUpdatedUnchangedPollfreq not reachedTime needed (s)