| | |
| | | var $actions_available = array(); |
| | | /** The Tools */ |
| | | private $_tools = null; |
| | | //** time the script was called |
| | | private $_run_time = null; |
| | | |
| | | /** |
| | | * This function is called during ispconfig installation to determine |
| | |
| | | */ |
| | | public function onLoad() { |
| | | global $app; |
| | | |
| | | |
| | | //* store the running time |
| | | $this->_run_time = time(); |
| | | |
| | | /* |
| | | * Do the monitor every n minutes and write the result to the db |
| | | */ |
| | | $min = @date('i'); |
| | | $min = @date('i', $this->_run_time); |
| | | if (($min % $this->interval) == 0) { |
| | | $this->_doMonitor(); |
| | | } |
| | |
| | | $this->_tools = new monitor_tools(); |
| | | |
| | | /* |
| | | * Calls the single Monitoring steps |
| | | * Calls the single Monitoring steps |
| | | */ |
| | | $this->_monitorEmailQuota(); |
| | | $this->_monitorHDQuota(); |
| | |
| | | $this->_monitorRaid(); |
| | | $this->_monitorRkHunter(); |
| | | $this->_monitorFail2ban(); |
| | | $this->_monitorMongoDB(); |
| | | $this->_monitorIPTables(); |
| | | $this->_monitorSysLog(); |
| | | } |
| | | |
| | | private function _monitorEmailQuota() { |
| | | global $app; |
| | | global $app, $conf; |
| | | |
| | | /* |
| | | * This monitoring is expensive, so do it only every 15 minutes |
| | | */ |
| | | $min = @date('i'); |
| | | $min = @date('i', $this->_run_time); |
| | | if ($min % 15 != 0) return; |
| | | |
| | | |
| | | |
| | | $app->uses('getconf'); |
| | | $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); |
| | | if($mail_config['mailbox_quota_stats'] == 'n') return; |
| | | |
| | | |
| | | /* |
| | | * First we get the Monitoring-data from the tools |
| | | */ |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * This monitoring is expensive, so do it only once an hour |
| | | */ |
| | | $min = @date('i'); |
| | | $min = @date('i', $this->_run_time); |
| | | if ($min != 0) |
| | | return; |
| | | |
| | |
| | | * First we get the Monitoring-data from the tools |
| | | */ |
| | | $res = $this->_tools->monitorSystemUpdate(); |
| | | |
| | | |
| | | //* Ensure that output is encoded so that it does not break the serialize |
| | | $res['data']['output'] = htmlentities($res['data']['output']); |
| | | //$res['data']['output'] = htmlentities($res['data']['output']); |
| | | $res['data']['output'] = htmlentities($res['data']['output'],ENT_QUOTES,'UTF-8'); |
| | | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * This monitoring is expensive, so do it only once a day |
| | | */ |
| | | $min = @date('i'); |
| | | $hour = @date('H'); |
| | | $min = @date('i', $this->_run_time); |
| | | $hour = @date('H', $this->_run_time); |
| | | if (!($min == 0 && $hour == 23)) |
| | | return; |
| | | /* |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | | 'UNIX_TIMESTAMP(), ' . |
| | | "'" . $app->dbmaster->quote(serialize($res['data'])) . "', " . |
| | | "'" . $res['state'] . "'" . |
| | | ')'; |
| | | $app->dbmaster->query($sql); |
| | | |
| | | /* The new data is written, now we can delete the old one */ |
| | | $this->_delOldRecords($res['type'], $res['server_id']); |
| | | } |
| | | |
| | | private function _monitorMongoDB() { |
| | | global $app; |
| | | |
| | | /* |
| | | * First we get the Monitoring-data from the tools |
| | | */ |
| | | $res = $this->_tools->monitorMongoDB(); |
| | | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | * First we get the Monitoring-data from the tools |
| | | */ |
| | | $res = $this->_tools->monitorISPCCronLog(); |
| | | |
| | | |
| | | //* Ensure that output is encoded so that it does not break the serialize |
| | | $res['data']['output'] = htmlentities($res['data']['output']); |
| | | if(is_array($res) && isset($res['data'])) $res['data'] = htmlentities($res['data']); |
| | | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | /* |
| | | * Insert the data into the database |
| | | */ |
| | | $sql = 'INSERT INTO monitor_data (server_id, type, created, data, state) ' . |
| | | $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . |
| | | 'VALUES (' . |
| | | $res['server_id'] . ', ' . |
| | | "'" . $app->dbmaster->quote($res['type']) . "', " . |
| | |
| | | // $now = time(); |
| | | // $old = $now - (4 * 60); // 4 minutes |
| | | $old = 'UNIX_TIMESTAMP() - 240'; |
| | | |
| | | |
| | | /* |
| | | * ATTENTION if i do NOT pay attention of the server id, i delete all data (of the type) |
| | | * of ALL servers. This means, if i have a multiserver-environment and a server has a |
| | | * of ALL servers. This means, if i have a multiserver-environment and a server has a |
| | | * time not synced with the others (for example, all server has 11:00 and ONE server has |
| | | * 10:45) then the actual data of this server (with the time-stamp 10:45) get lost |
| | | * even though it is the NEWEST data of this server. To avoid this i HAVE to include |
| | |
| | | |
| | | } |
| | | |
| | | ?> |
| | | ?> |