forum Sea of Sin / Startseite sitemap

Sea of Sin / Blog

Zentrum der Langeweile

Serverloft RAID zustand überwachen auf ubuntu 8.04 LTS

2009/03/03 von mor_dark
Wie überwachen wir den Hardware Raid auf einem Ubuntu Server 8.04 LTS beim Server Hoster Serverloft ?
Genau, ist eigendlich ganz einfach, wenn man denn weiß welcher Raid dort mit welchen Treiber läuft.
Nach ein wenig suchen habe ichs dann auch raus gefunden, der User dogma-sam von www.serversupportforum.de hat auch ein kleines PHP Script geschrieben um den Status zu prüfen und bei einem Fehler eine Mail rauszuschicken, das Script  nutzen wir dann auch gleich weiter unten.

Server: Serverloft PerfectServer L ( Fujitsu Siemens Primergy Econel 230R S1)
Raid: Controller: LSI 1068

Fangen wir an:

Wir Installieren mpt-status


  1. apt-get update
  2. apt-get install mpt-status

Nun aktivieren wir das Kernel Modul
  1. modprobe mptctl
  2.  
  3. oder
  4.  
  5. mpt-status --autoload

So nun sollte wir mit mpt-status ein ergebniss bekommen was etwa so auschaut:
  1. # mpt-status
  2. ioc0 vol_id 0 type IM, 2 phy, 465 GB, state OPTIMAL, flags ENABLED
  3. ioc0 phy 1 scsi_id 8 ATA ST3500620AS SD25, 465 GB, state ONLINE, flags NONE
  4. ioc0 phy 0 scsi_id 1 ATA ST3500620AS SD25, 465 GB, state ONLINE, flags NONE
 

Gut, nun noch das php Script einrichten :


Erstmal prüfen wir ob wir php-cli auch installiert haben damit wir auch wirklich ne Status Mail bekommen:
  1. # php5 -v
  2. //wenn wir keine php Version angezeigt bekommen dann müssen wir noch eben PHP5-CLI Installieren
  3. # apt-get install php5-cli


So hier das Script von dogma-sam, im scipt eben die email adresse und evtl.  die config anpassen.
  1. <?</span>
  2. /**
  3. * raidhealth.php - RAID Health monitoring script for LSI raid controllers that can be
  4. * controlled via mpt-status.
  5. * Checks the health of the raid set and sends an e-mail to the given address if something
  6. * is wrong. If called in a configurable hour of the day, it will also send an e-mail if
  7. * everything is okay so that you know the monitor is running.
  8. *
  9. * Prerequisites:
  10. * - Installed mpt-status module. Beware: some controllers need a version >= 1.2.0, if your
  11. * distribution contains an older version by default, look for a backport.
  12. * - mptctl kernel module. Can be loaded with mpt-status --autoload.
  13. * - /dev/mptctl in place and ready.
  14. * - a RAID set to be monitored in the right place
  15. */
  16.  
  17. // Configuration //////////////////////////////////////////////////////////
  18. $cfg_scsi_id = 0; // The scsi id of the raid set, usually 0. Get it via 'mpt-status -p'
  19. $cfg_pinghour = 8; // The hour in which the okay-email is sent (0-23, set to -1 to disable)
  20. $cfg_email = "server@example.com"; // The e-mail address to send the e-mails to
  21. $cfg_emailfrom = "raid@example.com"; // The sender e-mail address
  22.  
  23. // Script /////////////////////////////////////////////////////////////////
  24.  
  25. // Get the human readable status description and return code
  26. $cmd = "mpt-status -i ".escapeshellarg($cfg_scsi_id);
  27. exec($cmd, $humanoutput, $ret);
  28. $humanmsg = implode("\n", $humanoutput);
  29.  
  30. // Get the hostname
  31. $hostname = exec("hostname");
  32.  
  33. // Check the return value - if everything is okay, exit
  34. if ($ret == 0)
  35. {
  36. if ($cfg_pinghour >= 0 && date("G") == $cfg_pinghour)
  37. sendMail("RAID Health Status OK for $hostname", "Der Status des RAID Sets auf $hostname ist OK. Weiter so!\r\n\r\n$humanmsg");
  38. exit;
  39. }
  40.  
  41. // If we are here, something is not okay. Simply send an e-mail with the human message.
  42. sendMail("RAID Health Warning for $hostname", "Der Status des RAID Sets auf $hostname ist nicht OK, bitte untersuchen.\r\n\r\n$humanmsg");
  43.  
  44. // The E-Mail function ////////////////////////////////////////////////////
  45.  
  46. function sendMail ($subject, $body)
  47. {
  48. global $cfg_email, $cfg_emailfrom;
  49. mail($cfg_email, $subject, $body, "From: $cfg_emailfrom");
  50. }
  51.  
  52. ?>

Script erstellen und einfügen (evtl. noch anpassen):
  1. # nano /etc/cron.hourly/raidhealth.php

Rechte setzen:
  1. # chmod 755 /etc/cron.hourly/raidhealth.php

 
Nun  können wir die Platten am Raid mit guten gewissen laufen lassen, wir bekommen ja ne E-Mail wenn was nicht stimmt (-;



  • Keine Kommentare