| | |
| | | */ |
| | | |
| | | class cronjob_monitor_disk_usage extends cronjob { |
| | | |
| | | // job schedule |
| | | protected $_schedule = '*/5 * * * *'; |
| | | protected $_run_at_new = true; |
| | | |
| | | private $_tools = null; |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onPrepare() { |
| | | global $app; |
| | | |
| | | parent::onPrepare(); |
| | | } |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onBeforeRun() { |
| | | global $app; |
| | | |
| | | return parent::onBeforeRun(); |
| | | } |
| | | |
| | | public function onRunJob() { |
| | | global $app, $conf; |
| | | |
| | | /* used for all monitor cronjobs */ |
| | | $app->load('monitor_tools'); |
| | | $this->_tools = new monitor_tools(); |
| | | /* end global section for monitor cronjobs */ |
| | | |
| | | |
| | | // job schedule |
| | | protected $_schedule = '*/5 * * * *'; |
| | | protected $_run_at_new = true; |
| | | |
| | | private $_tools = null; |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onPrepare() { |
| | | global $app; |
| | | |
| | | parent::onPrepare(); |
| | | } |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onBeforeRun() { |
| | | global $app; |
| | | |
| | | return parent::onBeforeRun(); |
| | | } |
| | | |
| | | public function onRunJob() { |
| | | global $app, $conf; |
| | | |
| | | /* used for all monitor cronjobs */ |
| | | $app->load('monitor_tools'); |
| | | $this->_tools = new monitor_tools(); |
| | | /* end global section for monitor cronjobs */ |
| | | |
| | | /* the id of the server as int */ |
| | | $server_id = intval($conf['server_id']); |
| | | |
| | | /** The type of the data */ |
| | | |
| | | |
| | | $type = 'disk_usage'; |
| | | |
| | | /** The state of the disk-usage */ |
| | |
| | | /** Fetch the data of ALL devices into a array (needed for monitoring!) */ |
| | | //$dfData = shell_exec('df -hT 2>/dev/null'); |
| | | $app->uses('getconf'); |
| | | $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); |
| | | $dfData = shell_exec('df -hT|grep -v "'.$web_config['website_basedir'].'/" 2>/dev/null'); |
| | | |
| | | $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); |
| | | |
| | | $dfData = shell_exec('df -hT -x simfs | awk \'!x[$1]++\' 2>/dev/null'); |
| | | |
| | | // split into array |
| | | $df = explode("\n", $dfData); |
| | | |
| | |
| | | $usePercent = floatval($data[$i]['percent']); |
| | | |
| | | //* get the free memsize |
| | | if(substr($data[$i]['available'],-1) == 'G') { |
| | | if(substr($data[$i]['available'], -1) == 'G') { |
| | | $freesize = floatval($data[$i]['available'])*1024; |
| | | } elseif(substr($data[$i]['available'],-1) == 'T') { |
| | | } elseif(substr($data[$i]['available'], -1) == 'T') { |
| | | $freesize = floatval($data[$i]['available'])*1024*1024; |
| | | } else { |
| | | $freesize = floatval($data[$i]['available']); |
| | |
| | | |
| | | //* We don't want to check some filesystem which have no sensible filling levels |
| | | switch ($data[$i]['type']) { |
| | | case 'iso9660': |
| | | case 'cramfs': |
| | | case 'udf': |
| | | case 'tmpfs': |
| | | case 'devtmpfs': |
| | | case 'udev': |
| | | break; |
| | | default: |
| | | if ($usePercent > 75 && $freesize < 2000) |
| | | $state = $this->_tools->_setState($state, 'info'); |
| | | if ($usePercent > 80 && $freesize < 1000) |
| | | $state = $this->_tools->_setState($state, 'warning'); |
| | | if ($usePercent > 90 && $freesize < 500) |
| | | $state = $this->_tools->_setState($state, 'critical'); |
| | | if ($usePercent > 95 && $freesize < 100) |
| | | $state = $this->_tools->_setState($state, 'error'); |
| | | break; |
| | | case 'iso9660': |
| | | case 'cramfs': |
| | | case 'udf': |
| | | case 'tmpfs': |
| | | case 'devtmpfs': |
| | | case 'udev': |
| | | break; |
| | | default: |
| | | if ($usePercent > 75 && $freesize < 2000) |
| | | $state = $this->_tools->_setState($state, 'info'); |
| | | if ($usePercent > 80 && $freesize < 1000) |
| | | $state = $this->_tools->_setState($state, 'warning'); |
| | | if ($usePercent > 90 && $freesize < 500) |
| | | $state = $this->_tools->_setState($state, 'critical'); |
| | | if ($usePercent > 95 && $freesize < 100) |
| | | $state = $this->_tools->_setState($state, 'error'); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | |
| | | * 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']) . "', " . |
| | | 'UNIX_TIMESTAMP(), ' . |
| | | "'" . $app->dbmaster->quote(serialize($res['data'])) . "', " . |
| | | "'" . $res['state'] . "'" . |
| | | ')'; |
| | | $app->dbmaster->query($sql); |
| | | 'VALUES (?, ?, UNIX_TIMESTAMP(), ?, ?)'; |
| | | $app->dbmaster->query($sql, $res['server_id'], $res['type'], serialize($res['data']), $res['state']); |
| | | |
| | | /* The new data is written, now we can delete the old one */ |
| | | $this->_tools->delOldRecords($res['type'], $res['server_id']); |
| | | |
| | | parent::onRunJob(); |
| | | } |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onAfterRun() { |
| | | global $app; |
| | | |
| | | parent::onAfterRun(); |
| | | } |
| | | |
| | | parent::onRunJob(); |
| | | } |
| | | |
| | | /* this function is optional if it contains no custom code */ |
| | | public function onAfterRun() { |
| | | global $app; |
| | | |
| | | parent::onAfterRun(); |
| | | } |
| | | |
| | | } |
| | | |