Adaptec-RAID im ISPConfig-Monitoring

wemaflo

New Member
Guten Morgen,
vielleicht interessiert das ja den einen oder anderen: Ich habe die Funktion "RAID Status anzeigen" im Tab "Überwachung" dahingehend erweitert, dass auch Adaptec-RAIDs über arcconf gecheckt werden.
Kurzfassung:
Funktion monitorRaid() in /usr/local/ispconfig/server/lib/classes/monitor_tools.inc.php um folgenden Code erweitern:
PHP:
/*
* Check, if arcconf is present
*/
if (file_exists('/sbin/arcconf')) {
    /*
    * Fetch the output
    */
    $data['output'] = shell_exec('arcconf GETCONFIG 1 LD');
    $state = 'ok';
    if(is_array($data['output'])) {
        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, 'Logical device name                      : RAID') !== false) {
                /*
                * We found a raid, process the state of it
                */
                if (strpos($item, 'Optimal') !== false) {
                    $this->_setState($state, 'ok');
                } 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');
                }
            }                   
        }
    }
}
Langfassung gibts hier.
Ist bisher nur sehr rudimentär und kennt nur "Optimal" und "Critical", aber mir reichts für den Anfang.
 

robotto7831a

Well-Known Member
Wenn ich den Befehl "arcconf GETCONFIG 1 LD" auf der Kommandozeile ausführe, dann bekomm ich das richtige Ergebnis.

arcconf liegt auch im Verzeichnis /sbin.
 

wemaflo

New Member
Zeige mir sich bitte mal den eingefügten Code und die Zeilen davor und danach... Das kommt mir komisch vor, diese Ausgaben solltest du mit dem Parameter LD gar nicht haben.
 

robotto7831a

Well-Known Member
Hier ist der Code.
Code:
  /** The type of the data */
  $type = 'raid_state';
  /*
  * We support several RAID types, but if we can't find any of them, we have no data
  */
  $state = 'no_state';
  $data['output'] = '';
/*
* Check, if arcconf is present
*/
if (file_exists('/sbin/arcconf')) {
  /*
  * Fetch the output
  */
  $data['output'] = shell_exec('arcconf GETCONFIG 1 LD');
  $state = 'ok';
  if(is_array($data['output'])) {
  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, 'Logical device name  : RAID') !== false) {
  /*
  * We found a raid, process the state of it
  */
  if (strpos($item, 'Optimal') !== false) {
  $this->_setState($state, 'ok');
  } 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');
  }
  }
  }
  }
}

  /*
  * Check, if Software-RAID is enabled
  */
  if (file_exists('/proc/mdstat')) {
 

wemaflo

New Member
Hm, das ist seltsam. Hast du mehr als nur ein RAID? Das, was du da oben schriebst ist eigentlich eine Ausgabe von mdraid (/proc/mdstat).
 

wemaflo

New Member
Ah okay, das habe ich bisher nicht ausprobiert. Dennoch sollte es keine Ausgabe von mdraid geben, wenn es gar nicht vorhanden ist. Kannst du mal prüfen, ob bei cat /proc/mdstat eine Ausgabe kommt?
 

wemaflo

New Member
Okay. Dann hast du wohl mdraid installiert. Bisher gewinnt der letzte Check, der auf $data schreibt (wurde also vermutlich nur für einen RAID-Typ entwickelt), wenn du also erst $data von arcconf bekommst, dann $data von mdraid, dann von mpt und dann von tw_cli, würde die Ausgabe nur das Ergebnis von tw_cli zeigen.

Du könntest mit concat arbeiten, und $data aus den verschiedenen Ausgaben zusammensetzen.

Wenn du aber kein mdraid hast, sollte es vermutlich auch kein Problem sein, mdadm zu deinstallieren. Aber vorher prüfen, ob nicht doch noch irgendwo ein Array rum liegt ;)
 

robotto7831a

Well-Known Member
Theoretisch kann mdraid deinstalliert werden.
Ich habe jetzt einfach deine Erweiterung hinten eingefügt und jetzt sehe ich in ISPConfig die arcconf Ausgabe.
 

Werbung

Top