Adaptec-RAID im ISPConfig-Monitoring

Dieses Thema im Forum "Tipps - Tricks - Mods" wurde erstellt von wemaflo, 14. März 2015.

  1. wemaflo

    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.
     
    Till und nowayback gefällt das.
  2. robotto7831a

    robotto7831a Member

    Ich habe versucht das einzubauen, aber unter RAID Status steht nur
     
  3. wemaflo

    wemaflo New Member

    Was sagt denn die Ausgabe von arcconf direkt?
     
  4. robotto7831a

    robotto7831a 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.
     
  5. wemaflo

    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.
     
  6. robotto7831a

    robotto7831a 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')) {
    
    
     
  7. wemaflo

    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).
     
  8. robotto7831a

    robotto7831a Member

    Nein, ich habe einen Hardware Raid Controller auf dem zwei Raid 1 Arrays konfiguriert sind.
     
  9. wemaflo

    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?
     
  10. robotto7831a

    robotto7831a Member

    Dann kommt die oben zitierte Ausgabe.
     
  11. wemaflo

    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 ;)
     
  12. robotto7831a

    robotto7831a Member

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

    wemaflo New Member

    Ja, klar, das geht auch :)
     
  14. Till

    Till Administrator

    Ich hab es mal als feature request im Bugtracker gepostet.
     

Diese Seite empfehlen