ftimme
2012-09-04 b889edb33e4a09cc1f65d2fb9ad9f9ea16b1eae9
server/mods-available/monitor_core_module.inc.php
@@ -86,6 +86,7 @@
      /*
       * Calls the single Monitoring steps 
       */
      $this->_monitorEmailQuota();
      $this->_monitorHDQuota();
      $this->_monitorServer();
      $this->_monitorOsVer();
@@ -111,8 +112,45 @@
      $this->_monitorRaid();
      $this->_monitorRkHunter();
      $this->_monitorFail2ban();
      $this->_monitorIPTables();
      $this->_monitorSysLog();
   }
    private function _monitorEmailQuota() {
        global $app, $conf;
        /*
       *  This monitoring is expensive, so do it only every 15 minutes
       */
      $min = @date('i');
      if ($min % 15 != 0) return;
      $app->uses('getconf');
      $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
      if($mail_config['mailbox_quota_stats'] == 'n') return;
      /*
         * First we get the Monitoring-data from the tools
         */
        $res = $this->_tools->monitorEmailQuota();
        /*
         * Insert the data into the database
         */
        $sql = 'INSERT 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'] . "'" .
                ')';
        $app->dbmaster->query($sql);
        /* The new data is written, now we can delete the old one */
        $this->_delOldRecords($res['type'], $res['server_id']);
    }
   private function _monitorHDQuota() {
      global $app;
@@ -129,14 +167,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorServer() {
@@ -154,14 +192,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorOsVer() {
@@ -179,14 +217,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorIspcVer() {
@@ -204,14 +242,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorDiskUsage() {
@@ -229,14 +267,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorMemUsage() {
@@ -253,14 +291,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorCpu() {
@@ -277,14 +315,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorServices() {
@@ -302,14 +340,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorOpenVzHost() {
@@ -327,14 +365,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorOpenVzUserBeancounter() {
@@ -352,21 +390,21 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorSystemUpdate() {
      /*
       *  This monitoring is expensive, so do it only once an hour
       */
      $min = date('i');
      $min = @date('i');
      if ($min != 0)
         return;
@@ -379,6 +417,9 @@
       * First we get the Monitoring-data from the tools
       */
      $res = $this->_tools->monitorSystemUpdate();
      //* Ensure that output is encoded so that it does not break the serialize
      $res['data']['output'] = htmlentities($res['data']['output']);
      /*
       * Insert the data into the database
@@ -387,14 +428,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorMailQueue() {
@@ -412,14 +453,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorRaid() {
@@ -437,22 +478,22 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorRkHunter() {
      /*
       *  This monitoring is expensive, so do it only once a day
       */
      $min = date('i');
      $hour = date('H');
      $min = @date('i');
      $hour = @date('H');
      if (!($min == 0 && $hour == 23))
         return;
      /*
@@ -472,23 +513,49 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorFail2ban() {
        global $app;
        /*
         * First we get the Monitoring-data from the tools
         */
        $res = $this->_tools->monitorFail2ban();
        /*
         * Insert the data into the database
         */
        $sql = 'INSERT 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'] . "'" .
                ')';
        $app->dbmaster->query($sql);
        /* The new data is written, now we can delete the old one */
        $this->_delOldRecords($res['type'], $res['server_id']);
    }
   private function _monitorIPTables() {
      global $app;
      /*
       * First we get the Monitoring-data from the tools
       */
      $res = $this->_tools->monitorFail2ban();
      $res = $this->_tools->monitorIPTables();
      /*
       * Insert the data into the database
@@ -497,14 +564,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorSysLog() {
@@ -522,14 +589,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorMailLog() {
@@ -547,14 +614,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorMailWarnLog() {
@@ -572,14 +639,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorMailErrLog() {
@@ -597,14 +664,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorMessagesLog() {
@@ -622,14 +689,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorISPCCronLog() {
@@ -639,6 +706,9 @@
       * First we get the Monitoring-data from the tools
       */
      $res = $this->_tools->monitorISPCCronLog();
      //* Ensure that output is encoded so that it does not break the serialize
      $res['data'] = htmlentities($res['data']);
      /*
       * Insert the data into the database
@@ -647,14 +717,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorFreshClamLog() {
@@ -672,14 +742,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorClamAvLog() {
@@ -697,14 +767,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   private function _monitorIspConfigLog() {
@@ -722,14 +792,14 @@
            'VALUES (' .
            $res['server_id'] . ', ' .
            "'" . $app->dbmaster->quote($res['type']) . "', " .
            time() . ', ' .
            '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->_delOldRecords($type, $res['server_id']);
      $this->_delOldRecords($res['type'], $res['server_id']);
   }
   /**
@@ -741,8 +811,10 @@
   private function _delOldRecords($type, $serverId) {
      global $app;
      $now = time();
      $old = $now - (4 * 60); // 4 minutes
      // $now = time();
      // $old = $now - (4 * 60); // 4 minutes
      $old = 'UNIX_TIMESTAMP() - 240';
      /*
       * ATTENTION if i do NOT pay attention of the server id, i delete all data (of the type)
       * of ALL servers. This means, if i have a multiserver-environment and a server has a 
@@ -763,4 +835,4 @@
}
?>
?>