From e6ded3ab52b8b823660181db85be511b2ef1ffe5 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Mon, 30 Nov 2015 02:42:30 -0500
Subject: [PATCH] Merge branch 'master' into 'master'
---
server/lib/classes/cron.d/100-monitor_raid.inc.php | 85 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 85 insertions(+), 0 deletions(-)
diff --git a/server/lib/classes/cron.d/100-monitor_raid.inc.php b/server/lib/classes/cron.d/100-monitor_raid.inc.php
index 439ab8c..90b9a61 100644
--- a/server/lib/classes/cron.d/100-monitor_raid.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_raid.inc.php
@@ -229,6 +229,91 @@
}
}
+ /*
+ * HP Proliant
+ */
+ system('which hpacucli', $retval);
+ if($retval === 0) {
+ $state = 'ok';
+ $data['output'] = shell_exec('/usr/sbin/hpacucli ctrl all show config');
+ $tmp = explode("\n", $data['output']);
+ if(is_array($tmp)) {
+ foreach ($tmp as $item) {
+ if (strpos($item, 'logicaldrive') !== false) {
+ if (strpos($item, 'OK') !== false) {
+ $this->_tools->_setState($state = 'ok');
+ } elseif (strpos($item, 'Recovery Mode') !== false) {
+ $this->_tools->_setState($state = 'critical');
+ break;
+ } elseif (strpos($item, 'Failed') !== false) {
+ $this->_tools->_setState($state = 'error');
+ break;
+ } elseif (strpos($item, 'Recovering') !== false) {
+ $this->_tools->_setState($state = 'info');
+ break;
+ } else {
+ $this->_tools->_setState($state = 'critical');
+ }
+ }
+ if (strpos($item, 'physicaldrive') !== false) {
+ if (strpos($item, 'physicaldrive') !== false) {
+ if (strpos($item, 'OK') !== false) {
+ $this->_tools->_setState($state = 'ok');
+ } elseif (strpos($item, 'Failed') !== false) {
+ $this->_tools->_setState($state = 'critical');
+ break;
+ } elseif (strpos($item, 'Rebuilding') !== false) {
+ $this->_tools->_setState($state = 'info');
+ break;
+ } else {
+ $this->_tools->_setState($state = 'critical');
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * LSI MegaRaid
+ */
+ system('which megacli', $retval);
+ system('which megacli64', $retval64);
+ if($retval === 0 || $retval64 === 0) {
+ $binary=@($retval === 0)?'megacli':'megacli64';
+ $state = 'ok';
+ $data['output'] = shell_exec($binary.' -LDInfo -Lall -aAll');
+ if (strpos($data['output'], 'Optimal') !== false) {
+ $this->_tools->_setState($state, 'ok');
+ } else if (strpos($data['output'], 'Degraded') !== false) {
+ $this->_tools->_setState($state, 'critical');
+ } else if (strpos($data['output'], 'Offline') !== false) {
+ $this->_tools->_setState($state, 'critical');
+ } else {
+ $this->_tools->_setState($state, 'critical');
+ }
+ }
+
+ /*
+ * Adaptec-RAID
+ */
+ system('which arcconf', $retval);
+ if($retval === 0) {
+ $state = 'ok';
+ $data['output'] = shell_exec('arcconf GETCONFIG 1 LD');
+ if(is_array($data['output'])) {
+ foreach ($data['output'] as $item) {
+ if (strpos($item, 'Logical device name : RAID') !== false) {
+ if (strpos($item, 'Optimal') !== false) {
+ $this->_tools->_setState($state, 'ok');
+ } else {
+ $this->_tools->_setState($state, 'critical');
+ }
+ }
+ }
+ }
+ }
$res = array();
$res['server_id'] = $server_id;
--
Gitblit v1.9.1