tbrehm
2009-01-25 045beddf0eab55fe0cf94c43f9d146a1f3ad1e45
server/mods-available/monitor_core_module.inc.php
@@ -36,7 +36,16 @@
    /* No actions at this time. maybe later... */
    var $actions_available = array();
    /*
    //* This function is called during ispconfig installation to determine
   //  if a symlink shall be created for this plugin.
   function onInstall() {
      global $conf;
      return true;
   }
   /*
        This function is called when the module is loaded
    */
    function onLoad() {
@@ -104,6 +113,7 @@
        $this->monitorMailWarnLog();
        $this->monitorMailErrLog();
        $this->monitorMessagesLog();
        $this->monitorISPCCronLog();
        $this->monitorFreshClamLog();
        $this->monitorClamAvLog();
        $this->monitorIspConfigLog();
@@ -111,6 +121,7 @@
        $this->monitorMailQueue();
        $this->monitorRaid();
        $this->monitorRkHunter();
        $this->monitorSysLog();
    }
    function monitorServer(){
@@ -180,8 +191,8 @@
        /** The state of the disk-usage */
        $state = 'ok';
        /** Fetch the data into a array */
        $dfData = shell_exec("df");
        /** Fetch the data of ALL devices into a array (needed for monitoring!)*/
        $dfData = shell_exec("df -hT");
        // split into array
        $df = explode("\n", $dfData);
@@ -197,11 +208,12 @@
                 */
                $s = preg_split ("/[\s]+/", $df[$i]);
                $data[$i]['fs'] = $s[0];
                $data[$i]['size'] = $s[1];
                $data[$i]['used'] = $s[2];
                $data[$i]['available'] = $s[3];
                $data[$i]['percent'] = $s[4];
                $data[$i]['mounted'] = $s[5];
                $data[$i]['type'] = $s[1];
                $data[$i]['size'] = $s[2];
                $data[$i]['used'] = $s[3];
                $data[$i]['available'] = $s[4];
                $data[$i]['percent'] = $s[5];
                $data[$i]['mounted'] = $s[6];
                /*
                 * calculate the state
                 */
@@ -251,7 +263,7 @@
        $memInfo = explode("\n", $miData);
        foreach($memInfo as $line){
            $part = split(":", $line);
            $part = preg_split("/:/", $line);
            $key = trim($part[0]);
            $tmp = explode(" ", trim($part[1]));
            $value = 0;
@@ -301,7 +313,7 @@
        $cpuInfo = explode("\n", $cpuData);
        foreach($cpuInfo as $line){
            $part = split(":", $line);
            $part = preg_split("/:/", $line);
            $key = trim($part[0]);
            $value = trim($part[1]);
            $data[$key] = $value;
@@ -626,6 +638,22 @@
                    /* both Disk are not working */
                    $state = $this->_setState($state, 'error');
                }
                if (strpos($line, '[UU]') !== false)
                {
                    /* The disks are OK.
                     * if the next line starts with "[>" or "[=" then
                     * recovery (resync) is in state and the state is
                     * information instead of ok
                     */
                    $nextLine = $tmp[$i+1];
                    if ((strpos($nextLine, '[>') === false) && (strpos($nextLine, '[=') === false)) {
                        $state = $this->_setState($state, 'ok');
                    }
                    else
                    {
                        $state = $this->_setState($state, 'info');
                    }
                }
            }
        }
@@ -682,7 +710,7 @@
            /*
             * Fetch the output
             */
            $data['output'] = shell_exec('rkhunter --update --check --nocolors --skip-keypress');
            $data['output'] = shell_exec('rkhunter --update --checkall --nocolors --skip-keypress');
            /*
             * At this moment, there is no state (maybe later)
@@ -720,7 +748,49 @@
        $this->_delOldRecords($type, 0, 2);
    }
    function monitorMailLog()
    function monitorSysLog(){
        global $app;
        global $conf;
        /* the id of the server as int */
        $server_id = intval($conf["server_id"]);
        /** The type of the data */
        $type = 'sys_log';
   /*
    * is there any warning or error for this server?
    */
   $state = 'ok';
        $dbData = $app->dbmaster->queryAllRecords("SELECT loglevel FROM sys_log WHERE server_id = " . $server_id . " AND loglevel > 0");
   if (is_array($dbData)) {
       foreach($dbData as $item){
      if ($item['loglevel'] == 1) $state = $this->_setState($state, 'warning');
      if ($item['loglevel'] == 2) $state = $this->_setState($state, 'error');
       }
   }
   /** There is no monitor-data because the data is in the sys_log table */
        $data['output']= '';
        /*
         * Insert the data into the database
         */
        $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
            "VALUES (".
        $server_id . ", " .
            "'" . $app->dbmaster->quote($type) . "', " .
        time() . ", " .
            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
            "'" . $state . "'" .
            ")";
        $app->dbmaster->query($sql);
        /* The new data is written, now we can delete the old one */
        $this->_delOldRecords($type, 10);
    }
function monitorMailLog()
    {
        global $app;
        global $conf;
@@ -869,6 +939,43 @@
        $this->_delOldRecords($type, 10);
    }
    function monitorISPCCronLog()
    {
        global $app;
        global $conf;
        /* the id of the server as int */
        $server_id = intval($conf["server_id"]);
        /** The type of the data */
        $type = 'log_ispc_cron';
        /* Get the data of the log */
        $data = $this->_getLogData($type);
        /*
         * actually this info has no state.
         * maybe someone knows better...???...
         */
        $state = 'no_state';
        /*
        Insert the data into the database
        */
        $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " .
            "VALUES (".
        $server_id . ", " .
            "'" . $app->dbmaster->quote($type) . "', " .
        time() . ", " .
            "'" . $app->dbmaster->quote(serialize($data)) . "', " .
            "'" . $state . "'" .
            ")";
        $app->dbmaster->query($sql);
        /* The new data is written, now we can delete the old one */
        $this->_delOldRecords($type, 10);
    }
    function monitorFreshClamLog()
    {
        global $app;
@@ -1023,6 +1130,9 @@
                break;
            case 'log_messages':
                $logfile = '/var/log/messages';
                break;
            case 'log_ispc_cron':
                $logfile = '/var/log/ispconfig/cron.log';
                break;
            case 'log_freshclam':
                $logfile = '/var/log/clamav/freshclam.log';
@@ -1195,4 +1305,4 @@
} // end class
?>
?>