From 2332b2279d8a8599b4f041370315edc9544b1560 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Fri, 02 Aug 2013 10:48:38 -0400
Subject: [PATCH] Added support for mongodb. Many thanks to MaddinXx for the patch. http://www.howtoforge.com/forums/showthread.php?t=62691

---
 server/lib/classes/monitor_tools.inc.php |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 56 insertions(+), 1 deletions(-)

diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php
index 9ce9556..6b93e1e 100644
--- a/server/lib/classes/monitor_tools.inc.php
+++ b/server/lib/classes/monitor_tools.inc.php
@@ -755,6 +755,13 @@
 				$data['mysqlserver'] = 0;
 				$state = 'error'; // because service is down
 			}
+
+			if ($this->_checkTcp('localhost', 27017)) {
+				$data['mongodbserver'] = 1;
+			} else {
+				$data['mongodbserver'] = 0;
+				$state = 'error'; // because service is down
+			}
 		}
 
 		/*
@@ -1299,6 +1306,51 @@
 		return $res;
 	}
 
+	public function monitorMongoDB() {
+		global $conf;
+
+		/* the id of the server as int */
+		$server_id = intval($conf['server_id']);
+
+		/** The type of the data */
+		$type = 'log_mongodb';
+
+		/* This monitoring is only available if MongoDB is installed */
+		system('which mongod', $retval); // Debian, Ubuntu, Fedora
+		if ($retval !== 0)
+			system('which mongod', $retval); // CentOS
+		if ($retval === 0) {
+			/*  Get the data of the log */
+			$data = $this->_getLogData($type);
+
+			/*
+			 * At this moment, there is no state (maybe later)
+			 */
+			$state = 'no_state';
+		} else {
+			/*
+			 * MongoDB is not installed, so there is no data and no state
+			 *
+			 * no_state, NOT unknown, because "unknown" is shown as state
+			 * inside the GUI. no_state is hidden.
+			 *
+			 * We have to write NO DATA inside the DB, because the GUI
+			 * could not know, if there is any dat, or not...
+			 */
+			$state = 'no_state';
+			$data = '';
+		}
+
+		/*
+		 * Return the Result
+		 */
+		$res['server_id'] = $server_id;
+		$res['type'] = $type;
+		$res['data'] = $data;
+		$res['state'] = $state;
+		return $res;
+	}
+
 	public function monitorIPTables() {
 				global $conf;
 
@@ -1745,6 +1797,9 @@
 					$logfile = '/var/log/fail2ban.log';
 				}
 				break;
+			case 'log_mongodb':
+					$logfile = '/var/log/mongodb/mongodb.log';
+				break;
 			case 'log_ispconfig':
 				if ($dist == 'debian') {
 					$logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log';
@@ -1926,4 +1981,4 @@
 
 }
 
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1