tbrehm
2011-01-13 5bbfc1b098302671bcbf2f754efc627d50eaa5c7
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];
            }
            }
         }
      }
@@ -921,20 +939,17 @@
             * Then test the upgrade.
             * if there is any output, then there is a needed update
         */
         $emergeData = shell_exec('emerge -puDNt --color n --nospinner --quiet world');
         $emergeData = shell_exec('glsa-check -t affected');
         if ($emergeData == '') {
            /* There is nothing to update! */
            $state = 'ok';
            $data['output'] = 'No unapplied GLSA\'s found on the system.';
         }
         else {
            /* There is something to update! */
            $state = 'warning';
            $state = 'info';
            $data['output'] = shell_exec('glsa-check -pv --nocolor affected 2>/dev/null');
         }
         /*
             * Fetch the output
         */
         $data['output'] = shell_exec('emerge -pvuDNt --color n --nospinner world');
      }
      else {
         /*
@@ -1085,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');
                  }
               }
            }
         }
@@ -1677,13 +1694,13 @@
         case 'log_freshclam':
            if($dist == 'debian') { $logfile = '/var/log/clamav/freshclam.log'; }
            elseif($dist == 'redhat') { $logfile = (is_file('/var/log/clamav/freshclam.log') ? '/var/log/clamav/freshclam.log' : '/var/log/freshclam.log'); }
            elseif($dist == 'suse') { $logfile = ''; }
            elseif($dist == 'suse') { $logfile = '/var/log/freshclam.log'; }
            elseif($dist == 'gentoo') { $logfile = '/var/log/clamav/freshclam.log'; }
            break;
         case 'log_clamav':
            if($dist == 'debian') { $logfile = '/var/log/clamav/clamav.log'; }
            elseif($dist == 'redhat') { $logfile = (is_file('/var/log/clamav/clamd.log') ? '/var/log/clamav/clamd.log' : '/var/log/maillog'); }
            elseif($dist == 'suse') { $logfile = ''; }
            elseif($dist == 'suse') { $logfile = '/var/log/clamd.log'; }
            elseif($dist == 'gentoo') { $logfile = '/var/log/clamav/clamd.log'; }
            break;
         case 'log_fail2ban':