horfic
2011-01-06 07405653f111c4eb8fd1c83d45e66287807036d7
server/mods-available/monitor_core_module.inc.php
@@ -53,7 +53,7 @@
      /*
         * Do the monitor every n minutes and write the result to the db
      */
      $min = date('i');
      $min = @date('i');
      if (($min % $this->interval) == 0) {
         $this->doMonitor();
      }
@@ -203,8 +203,10 @@
      $this->monitorMemUsage();
      $this->monitorCpu();
      $this->monitorServices();
      $this->monitorOpenVzHost();
      $this->monitorOpenVzUserBeancounter();
      if(@file_exists('/proc/user_beancounters')) {
         $this->monitorOpenVzHost();
         $this->monitorOpenVzUserBeancounter();
      }
      $this->monitorMailLog();
      $this->monitorMailWarnLog();
      $this->monitorMailErrLog();
@@ -238,7 +240,7 @@
      $state = 'ok';
      
      /** Fetch the data for all users*/
      $dfData = shell_exec('repquota -asu');
      $dfData = shell_exec('repquota -au');
      // split into array
      $df = explode("\n", $dfData);
@@ -253,14 +255,22 @@
            */
            $s = preg_split ('/[\s]+/', $df[$i]);
            $username = $s[0];
            $data['user'][$username]['used'] = $s[2];
            $data['user'][$username]['soft'] = $s[3];
            $data['user'][$username]['hard'] = $s[4];
            if(substr($username,0,3) == 'web') {
            if(isset($data['user'][$username])) {
               $data['user'][$username]['used'] += $s[2];
               $data['user'][$username]['soft'] += $s[3];
               $data['user'][$username]['hard'] += $s[4];
            } else {
               $data['user'][$username]['used'] = $s[2];
               $data['user'][$username]['soft'] = $s[3];
               $data['user'][$username]['hard'] = $s[4];
            }
            }
         }
      }
      
      /** Fetch the data for all users*/
      $dfData = shell_exec('repquota -asg');
      $dfData = shell_exec('repquota -ag');
      // split into array
      $df = explode("\n", $dfData);
@@ -275,9 +285,17 @@
            */
            $s = preg_split ('/[\s]+/', $df[$i]);
            $groupname = $s[0];
            $data['group'][$groupname]['used'] = $s[1];
            $data['group'][$groupname]['soft'] = $s[2];
            $data['group'][$groupname]['hard'] = $s[3];
            if(substr($groupname,0,6) == 'client') {
            if(isset($data['group'][$groupname])) {
               $data['group'][$groupname]['used'] += $s[1];
               $data['group'][$groupname]['soft'] += $s[2];
               $data['group'][$groupname]['hard'] += $s[3];
            } else {
               $data['group'][$groupname]['used'] = $s[1];
               $data['group'][$groupname]['soft'] = $s[2];
               $data['group'][$groupname]['hard'] = $s[3];
            }
            }
         }
      }
@@ -1082,49 +1100,51 @@
      /*
       * Check, if we have mpt-status installed (LSIsoftware-raid)
      */
      system('which mpt-status', $retval);
      if($retval === 0) {
         /*
             * Fetch the output
         */
         $data['output'] = shell_exec('mpt-status --autoload -n');
         /*
             * Then calc the state.
         */
         $state = 'ok';
         foreach ($data['output'] as $item) {
      if(file_exists('/proc/mpt/summary')) {
         system('which mpt-status', $retval);
         if($retval === 0) {
            /*
             * The output contains information for every RAID and every HDD.
             * We only need the state of the RAID
            * Fetch the output
            */
            if (strpos($item, 'raidlevel:') !== false) {
            $data['output'] = shell_exec('mpt-status --autoload -n');
            /*
            * Then calc the state.
            */
            $state = 'ok';
            foreach ($data['output'] as $item) {
               /*
                * We found a raid, process the state of it
               * The output contains information for every RAID and every HDD.
               * We only need the state of the RAID
               */
               if (strpos($item, ' ONLINE ') !== false) {
                  $this->_setState($state, 'ok');
               }
               elseif (strpos($item, ' OPTIMAL ') !== false) {
                  $this->_setState($state, 'ok');
               }
               elseif (strpos($item, ' INITIAL ') !== false) {
                  $this->_setState($state, 'info');
               }
               elseif (strpos($item, ' INACTIVE ') !== false) {
                  $this->_setState($state, 'critical');
               }
               elseif (strpos($item, ' RESYNC ') !== false) {
                  $this->_setState($state, 'info');
               }
               elseif (strpos($item, ' DEGRADED ') !== false) {
                  $this->_setState($state, 'critical');
               }
               else {
                  /* we don't know the state. so we set the state to critical, that the
                   * admin is warned, that something is wrong
               if (strpos($item, 'raidlevel:') !== false) {
                  /*
                  * We found a raid, process the state of it
                  */
                  $this->_setState($state, 'critical');
                  if (strpos($item, ' ONLINE ') !== false) {
                     $this->_setState($state, 'ok');
                  }
                  elseif (strpos($item, ' OPTIMAL ') !== false) {
                     $this->_setState($state, 'ok');
                  }
                  elseif (strpos($item, ' INITIAL ') !== false) {
                     $this->_setState($state, 'info');
                  }
                  elseif (strpos($item, ' INACTIVE ') !== false) {
                     $this->_setState($state, 'critical');
                  }
                  elseif (strpos($item, ' RESYNC ') !== false) {
                     $this->_setState($state, 'info');
                  }
                  elseif (strpos($item, ' DEGRADED ') !== false) {
                     $this->_setState($state, 'critical');
                  }
                  else {
                     /* we don't know the state. so we set the state to critical, that the
                     * admin is warned, that something is wrong
                     */
                     $this->_setState($state, 'critical');
                  }
               }
            }
         }