| | |
| | | /* |
| | | * 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(); |
| | | } |
| | |
| | | $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(); |
| | |
| | | $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); |
| | |
| | | */ |
| | | $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); |
| | |
| | | */ |
| | | $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]; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | * 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 { |
| | | /* |
| | |
| | | /* |
| | | * 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'); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 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': |