From f8cd03b2feb5cbcda9b61811feb8cc26017c01ee Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Mon, 26 Sep 2011 10:50:21 -0400
Subject: [PATCH] - Adjusted <Directory> path for mod_python.
---
server/lib/classes/monitor_tools.inc.php | 174 ++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 145 insertions(+), 29 deletions(-)
diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php
index f5258e3..4e82e0a 100644
--- a/server/lib/classes/monitor_tools.inc.php
+++ b/server/lib/classes/monitor_tools.inc.php
@@ -407,6 +407,15 @@
* calculate the state
*/
$usePercent = floatval($data[$i]['percent']);
+
+ //* get the free memsize
+ if(substr($data[$i]['available'],-1) == 'G') {
+ $freesize = floatval($data[$i]['available'])*1024;
+ } elseif(substr($data[$i]['available'],-1) == 'T') {
+ $freesize = floatval($data[$i]['available'])*1024*1024;
+ } else {
+ $freesize = floatval($data[$i]['available']);
+ }
//* We don't want to check some filesystem which have no sensible filling levels
switch ($data[$i]['type']) {
@@ -418,13 +427,13 @@
case 'udev':
break;
default:
- if ($usePercent > 75)
+ if ($usePercent > 75 && $freesize < 2000)
$state = $this->_setState($state, 'info');
- if ($usePercent > 80)
+ if ($usePercent > 80 && $freesize < 1000)
$state = $this->_setState($state, 'warning');
- if ($usePercent > 90)
+ if ($usePercent > 90 && $freesize < 500)
$state = $this->_setState($state, 'critical');
- if ($usePercent > 95)
+ if ($usePercent > 95 && $freesize < 100)
$state = $this->_setState($state, 'error');
break;
}
@@ -993,37 +1002,94 @@
* Then calc the state.
*/
$state = 'ok';
- foreach ($data['output'] as $item) {
- /*
- * The output contains information for every RAID and every HDD.
- * We only need the state of the RAID
- */
- if (strpos($item, 'raidlevel:') !== false) {
+ if(is_array($data['output'])) {
+ foreach ($data['output'] as $item) {
/*
- * We found a raid, process the state of it
- */
- 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');
+ * The output contains information for every RAID and every HDD.
+ * We only need the state of the RAID
+ */
+ if (strpos($item, 'raidlevel:') !== false) {
+ /*
+ * We found a raid, process the state of it
+ */
+ 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');
+ }
}
}
}
}
}
+
+ /*
+ * 3ware Controller
+ */
+ system('which tw_cli', $retval);
+ if($retval === 0) {
+
+ $data['output'] = shell_exec('tw_cli info c0');
+
+ $state = 'ok';
+ foreach ($data['output'] as $item) {
+ if (strpos($item, 'RAID') !== false) {
+ if (strpos($item, ' VERIFYING ') !== false) {
+ $this->_setState($state, 'info');
+ }
+ else if (strpos($item, ' MIGRATE-PAUSED ') !== false) {
+ $this->_setState($state, 'info');
+ }
+ else if (strpos($item, ' MIGRATING ') !== false) {
+ $this->_setState($state, 'ok');
+ }
+ else if (strpos($item, ' INITIALIZING ') !== false) {
+ $this->_setState($state, 'info');
+ }
+ else if (strpos($item, ' INIT-PAUSED ') !== false) {
+ $this->_setState($state, 'info');
+ }
+ else if (strpos($item, ' REBUILDING ') !== false) {
+ $this->_setState($state, 'info');
+ }
+ else if (strpos($item, ' REBUILD-PAUSED ') !== false) {
+ $this->_setState($state, 'warning');
+ }
+ else if (strpos($item, ' RECOVERY ') !== false) {
+ $this->_setState($state, 'warning');
+ }
+ else if (strpos($item, ' DEGRADED ') !== false) {
+ $this->_setState($state, 'critical');
+ }
+ else if (strpos($item, ' UNKNOWN ') !== false) {
+ $this->_setState($state, 'critical');
+ }
+ else if (strpos($item, ' OK ') !== false) {
+ $this->_setState($state, 'ok');
+ }
+ else if (strpos($item, ' OPTIMAL ') !== false) {
+ $this->_setState($state, 'ok');
+ }
+ else {
+ $this->_setState($state, 'critical');
+ }
+ }
+ }
+ }
+
/*
* Return the Result
@@ -1125,6 +1191,56 @@
return $res;
}
+ public function monitorIPTables() {
+ global $conf;
+
+ /* the id of the server as int */
+ $server_id = intval($conf['server_id']);
+
+ /** The type of the data */
+ $type = 'iptables_rules';
+
+ /* This monitoring is only available if fail2ban is installed */
+ system('which iptables', $retval); // Debian, Ubuntu, Fedora
+ if ($retval === 0) {
+ /* Get the data of the log */
+ $data['output'] = '<h2>iptables -S (ipv4)</h2>'.shell_exec('iptables -S');
+
+ /*
+ * At this moment, there is no state (maybe later)
+ */
+ $state = 'no_state';
+ } else {
+ $state = 'no_state';
+ $data = '';
+ }
+
+
+ /* This monitoring is only available if fail2ban is installed */
+ system('which ip6tables', $retval); // Debian, Ubuntu, Fedora
+ if ($retval === 0) {
+ /* Get the data of the log */
+ $data['output'] .= '<br><h2>ip6tables -S (ipv6)</h2>'.shell_exec('ip6tables -S');
+
+ /*
+ * At this moment, there is no state (maybe later)
+ */
+ $state = 'no_state';
+ } else {
+ $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 monitorSysLog() {
global $app;
global $conf;
--
Gitblit v1.9.1