Marius Cramer
2014-05-06 a03a840bfd8bb1743a9e75b934b1ce9f6505f80d
server/lib/classes/cron.d/100-monitor_disk_usage.inc.php
@@ -29,39 +29,41 @@
*/
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 */
@@ -70,9 +72,10 @@
      /** 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);
@@ -98,9 +101,9 @@
            $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']);
@@ -108,23 +111,23 @@
            //* 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;
            }
         }
      }
@@ -139,27 +142,27 @@
       * 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'] . "'" .
            ')';
         '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->_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();
   }
}