Nagios-Plugin für Oracle Grid-Infrastructure und Oracle-Restart

Hallo,
neben dem Thema Virtualisierung beschäftige ich mich noch viel mit Oracle Grid-Infrastructure und Nagios.
Ich habe mir heute mal die Zeit genommen und ein entsprechendes Plugin geschrieben.
Getestet habe ich das Skript mit Oracle Restart 11.2.0.3 und Grid-Infrastructure 11.2.0.3. Es wird mindestens die Version 11.2.0.1 benötigt, da mit der Grid-Infrastructure die Syntax von crsctl grundlegend geändert wurde.
Folgende Punkte werden im Plugin berücksichtigt:

  • Support für Oracle Restart und Grid-Infrastructure
    wird automatisch erkannt
  • Anzahl Voting-Disks bei Grid-Infrastructure überwachen
    verlorene Voting-Disk führt zur CRITICAL-Meldung
    Überwachung der Voting-Disks nur bei Grid-Infrastructure
  • Resourcen im Status OFFLINE oder INTERMEDIATE die nicht im AUTO_START=never sind führen zum CRITICAL
  • ora.gsd und ora.ons werden bei der Statusauswertung ignoriert
  • sudo für Clusterbefehle erforderlich

Im Kopfbereich des Plugins befindet sich ein Beispiel für die sudo-Konfiguration
Parallel habe ich das Plugin auf http://exchange.nagios.org eingereicht, warte dort aber noch auf die Veröffentlichung.
Gruß
Thorsten
Update: 23.01.2012
Das Plugin steht nun auch auf Nagiosexchange zur Verfügung:
http://exchange.nagios.org/directory/Plugins/Clustering-and-High-2DAvailability/Check-Oracle-Grid-2DInfrastructure-or-Oracle-Restart/details
Continue reading “Nagios-Plugin für Oracle Grid-Infrastructure und Oracle-Restart”

VMware ESXi 5.0 Known Issues at Hetzner

Keine RAID-Informationen mehr im vSphere Client

Von Zeit zu Zeit kann es vorkommen, daß der Hardware Monitor im vSphere Client keine Informationen mehr über den RAID-Controller anzeigt. Möglicherweise verschwinden die einzelnen Einträge nach und nach, bis der Controller irgendwann gar nicht mehr auftaucht.
Dieser Fehler könnte mit der aktuellen Version des CIM/SMIS Providers von LSI behoben worden sein.
Ansonsten gibt es einen Workaround. Wir loggen an der SSH-Konsole des ESXi ein und führen diesen Befehl aus:
[bash]/etc/init.d/sfcbd-watchdog restart >/scratch/log/sfcbd.log 2>&1[/bash]
Dies startet den SFCBD (Small Footprint CIM Broker Daemon, zuständig fürs Einsammeln und Abfragen der Sensordaten) neu. Die Umleitung in eine Dummy-Logdatei ist nötig, da der Watchdog ansonsten das Terminal alloziert hält, was zu dem Fehler “Warnungen “PTY Would block” im Kernel-Log” führt.

Warnungen “PTY Would block” im Kernel-Log

Symptom: Im Kernel-Log /scratch/log/vmkernel.log tauchen im Minutentakt Warnungen dieser Form auf:
[bash]Failed to crossdup fd 1, /dev/char/pty/t1 type CHAR: Would block[/bash]
Dies liegt daran, daß ein per SSH-Konsole ausgeführtes Kommando seine Verbindung zum virtuellen Terminal nicht geschlossen hat und versucht, dort Ausgaben zu tätigen. Wurde die Shell inzwischen geschlossen, existiert das Terminal nicht mehr.
Oft wurde der SFCBD-Watchdog ohne Umleitung in ein Dummy-File neugestartet, siehe “Keine RAID-Informationen mehr im vSphere Client”, oder aber die Systemdienste mittels/sbin/services.sh restart neugestartet, was den SFCBD-Watchdog einschließt.

Keine neuen Einträge in Logs

Falls ab einem gewissen Zeitpunkt keine Einträge mehr in die Logs (Syslog, Kernel-Log etc.) geschrieben werden, könnte einfach der Syslog-Daemon abgestürzt sein. Dies läßt sich auf der SSH-Konsole beheben durch einen Neustart des Syslog-Daemon:
[bash]esxcli system syslog reload[/bash]

Fehler beim Statusabruf der BBU im Syslog

Symptom: Im Syslog /scratch/log/syslog tauchen im Minutentakt solche Meldungen auf:
[bash]
2012-09-28T13:00:50Z sfcb-LSIESG_SMIS13_HHR[10850792]: INTERNAL StoreLibFacade::fireStorelibCommand – caller StoreLibFacadeMR::getBBUStatus, ProcessLibCommandCall failed, returnValue = 0x22
2012-09-28T13:00:50Z sfcb-LSIESG_SMIS13_HHR[10850792]: INTERNAL BBU::refresh: Failed BBUStatus
2012-09-28T13:00:50Z sfcb-LSIESG_SMIS13_HHR[10850792]: INTERNAL StoreLibFacade::fireStorelibCommand – caller StoreLibFacadeMR::getBBUCapacityInfo, ProcessLibCommandCall failed, returnValue = 0x22
2012-09-28T13:00:50Z sfcb-LSIESG_SMIS13_HHR[10850792]: INTERNAL BBU::refresh:Failed CapacityInfo
2012-09-28T13:00:50Z sfcb-LSIESG_SMIS13_HHR[10850792]: INTERNAL StoreLibFacade::fireStorelibCommand – caller StoreLibFacadeMR::getBBUDesignInfo, ProcessLibCommandCall failed, returnValue = 0x22
2012-09-28T13:00:50Z sfcb-LSIESG_SMIS13_HHR[10850792]: INTERNAL BBU::refresh:Failed DesignInfo
2012-09-28T13:00:50Z sfcb-LSIESG_SMIS13_HHR[10850792]: INTERNAL StoreLibFacade::fireStorelibCommand – caller StoreLibFacadeMR::getBBUProperties, ProcessLibCommandCall failed, returnValue = 0x22
2012-09-28T13:00:50Z sfcb-LSIESG_SMIS13_HHR[10850792]: INTERNAL BBU::refresh:Failed Properties[/bash]
“BBU” bedeutet “Backup Battery Unit”, gemeint ist eine Backupbatterie im RAID-Controller.
Ältere Versionen des LSI MegaRAID CIM-Providers haben einen Fehler, der diese Meldungen produziert. Sie sind im wesentlichen harmlos. Update auf eine aktuelle Version sollte das Problem komplett beseitigen.

Informations Anzeige mit MegaCLI

[bash]
/opt/lsi/MegaCLI # ./MegaCli -AdpAllInfo -aAll
==============================================================================
Versions
================
Product Name : LSI MegaRAID SAS 9260-4i
Serial No : SV22820638
FW Package Build: 12.12.0-0111
Mfg. Data
================
Mfg. Date : 07/12/12
Rework Date : 00/00/00
Revision No : 86B
Battery FRU : N/A
Image Versions in Flash:
================
FW Version : 2.130.353-1663
BIOS Version : 3.24.00_4.12.05.00_0x05160000
Preboot CLI Version: 04.04-020:#%00009
WebBIOS Version : 6.0-49-e_45-Rel
NVDATA Version : 2.09.03-0032
Boot Block Version : 2.02.00.00-0000
BOOT Version : 09.250.01.219
Pending Images in Flash
================
None
PCI Info
================
Controller Id : 0000
Vendor Id : 1000
Device Id : 0079
SubVendorId : 1000
SubDeviceId : 9260
Host Interface : PCIE
ChipRevision : B4
Number of Frontend Port: 0
Device Interface : PCIE
…[/bash]
 
[bash]
/opt/lsi/MegaCLI # ./MegaCli -LDInfo -L0 -a0
Adapter 0 — Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :
RAID Level : Primary-1, Secondary-0, RAID Level Qualifier-0
Size : 2.728 TB
Is VD emulated : Yes
Mirror Data : 2.728 TB
State : Optimal
Strip Size : 64 KB
Number Of Drives : 2
Span Depth : 1
Default Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy : Disk’s Default
Encryption Type : None
Is VD Cached: No
Exit Code: 0x00[/bash]
 
[bash]
/opt/lsi/MegaCLI # ./MegaCli -PDList -Aall
Adapter #0
Enclosure Device ID: 252
Slot Number: 0
Drive’s postion: DiskGroup: 0, Span: 0, Arm: 1
Enclosure position: N/A
Device Id: 5
WWN: 5000c5004dfd1e39
Sequence Number: 2
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 2.728 TB [0x15d50a3b0 Sectors]
Non Coerced Size: 2.728 TB [0x15d40a3b0 Sectors]
Coerced Size: 2.728 TB [0x15d400000 Sectors]
Emulated Drive: Yes
Firmware state: Online, Spun Up
Commissioned Spare : No
Emergency Spare : No
Device Firmware Level: CC43
Shield Counter: 0
Successful diagnostics completion on : N/A
SAS Address(0): 0x4433221103000000
Connected Port Number: 1(path0)
Inquiry Data: Z1F0XS5MST3000DM001-1CH166 CC43
FDE Capable: Not Capable
FDE Enable: Disable
Secured: Unsecured
Locked: Unlocked
Needs EKM Attention: No
Foreign State: None
Device Speed: 6.0Gb/s
Link Speed: 6.0Gb/s
Media Type: Hard Disk Device
Drive Temperature :33C (91.40 F)
PI Eligibility: No
Drive is formatted for PI information: No
PI: No PI
Port-0 :
Port status: Active
Port’s Linkspeed: 6.0Gb/s
Drive has flagged a S.M.A.R.T alert : No
Enclosure Device ID: 252
Slot Number: 1
Drive’s postion: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: N/A
Device Id: 4
WWN: 5000c5004dfd1214
Sequence Number: 2
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 2.728 TB [0x15d50a3b0 Sectors]
Non Coerced Size: 2.728 TB [0x15d40a3b0 Sectors]
Coerced Size: 2.728 TB [0x15d400000 Sectors]
Emulated Drive: Yes
Firmware state: Online, Spun Up
Commissioned Spare : No
Emergency Spare : No
Device Firmware Level: CC43
Shield Counter: 0
Successful diagnostics completion on : N/A
SAS Address(0): 0x4433221102000000
Connected Port Number: 0(path0)
Inquiry Data: Z1F0XRVMST3000DM001-1CH166 CC43
FDE Capable: Not Capable
FDE Enable: Disable
Secured: Unsecured
Locked: Unlocked
Needs EKM Attention: No
Foreign State: None
Device Speed: 6.0Gb/s
Link Speed: 6.0Gb/s
Media Type: Hard Disk Device
Drive Temperature :32C (89.60 F)
PI Eligibility: No
Drive is formatted for PI information: No
PI: No PI
Port-0 :
Port status: Active
Port’s Linkspeed: 6.0Gb/s
Drive has flagged a S.M.A.R.T alert : No
Exit Code: 0x00[/bash]
 
[bash]/opt/lsi/MegaCLI # ./MegaCli -PDList -Aall | egrep "Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state"
Enclosure Device ID: 252
Slot Number: 0
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: Z1F0XS5MST3000DM001-1CH166 CC43
Enclosure Device ID: 252
Slot Number: 1
Media Error Count: 0
Other Error Count: 0
Firmware state: Online, Spun Up
Inquiry Data: Z1F0XRVMST3000DM001-1CH166 CC43[/bash]

ESXi 5.x LSI MegaRAID SAS 9260-4i Raid-1 Rebuild

In diesem Abschnitt dokumentieren wir den Testlauf für einen Fall, den man als Serverbetreiber am liebsten nie haben möchte: Ausfall einer Platte im RAID-1.
Alle Aktionen in diesem Abschnitt führen wir mit dem MegaCli auf der Shell des Hosts durch.

Erkennung eines Plattenausfalls

Ein Plattenausfall äußert sich darin, daß das Virtual Drive 0 nicht mehr als “Optimal” angezeigt wird. Ersichtlich wird dies im vSphere-Client unter Configuration / Health Status:
Esxi-raid-degraded
Außerdem läßt es sich in der Host-Shell mittels MegaCli abfragen:
[bash]/opt/lsi/MegaCLI # ./MegaCli -ldinfo -lall -aall
Adapter 0 — Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name :
RAID Level : Primary-1, Secondary-0, RAID Level Qualifier-0
Size : 2.728 TB
Is VD emulated : Yes
Mirror Data : 2.728 TB
State : Degraded
Strip Size : 64 KB
Number Of Drives : 2
[…]
Exit Code: 0x00[/bash]
Wir hoffen, daß dort “Degraded” steht und nicht “Failed”, was bedeuten würde, daß beide Platten ausgefallen sind. Allerdings würde der Server dann wohl nicht mehr booten.
Natürlich ist es unschön, manuell im vSphere-Client oder auf der Shell des Hosts nach RAID-Ausfällen schauen zu müssen. Man möchte wohl eher aktiv darüber informiert werden. Daher ist – falls kein vCenter zur Verfügung steht, das Email-Alarme unterstützt – eine Methode wie das –HIER– beschriebene Monitoring des RAID-Status mittels MegaCli, SCP und Zabbix empfehlenswert.
Zur Identifizierung der ausgefallenen Platte kann man ebenfalls im vSphere-Client nachschauen, oder wir holen wir uns die Info der physikalischen Platten im MegaCli. Interessant sind hier die Einträge “Enclosure Device ID”, “Slot Number” und “Firmware State”.
[bash]/opt/lsi/MegaCLI # ./MegaCli -pdlist -aall
Adapter #0
Enclosure Device ID: 252
Slot Number: 0
[…]
Firmware state: Online, Spun Up
Enclosure Device ID: 252
Slot Number: 1
Firmware state: Online, Spun Up[/bash]
Wenn dort etwas anderes als “Online” steht, z.B. “Failed”, “Unconfigured Bad”, “Missing” oder “Offline”, ist die Platte aus dem Array geflogen. Die Enclosure und Slot Nummer merken wir uns.

Forcierter Plattenausfall für den Test

Wir führen unseren Test durch, indem wir eine der Platten im RAID mit zwangs-offline setzen. Die Platte gilt dann als “ausgefallen”.
[bash]MegaCli -pdoffline -physdrv[252:1] -a0 # For test only, don’t do this on your server!!
Adapter: 0: EnclId-252 SlotId-1 state changed to OffLine.
Exit Code: 0x00[/bash]
Hieraufhin wird das Array als “Degraded” markiert, wie oben aufgelistet. In unserem Beispiel haben wir also die Enclosure ID 252, Slot Number 1 “bearbeitet”. Das physikalische Laufwerk fürdie weiteren Kommandos ist damit die “252:1”.

Austausch der Platte

Zunächst markieren wir die ausgefallene Platte als “Missing”, falls dies nicht schon der Fall ist. Das Kommando pdgetmissing muß die Platte melden.
[bash]/opt/lsi/MegaCLI # ./MegaCli -pdmarkmissing -physdrv[252:1] -a0
EnclId-252 SlotId-1 is marked Missing.
Exit Code: 0x00
/opt/lsi/MegaCLI # ./MegaCli -pdgetmissing -aall
Adapter 0 – Missing Physical drives
No. Array Row Size Expected
0 0 0 2861056 MB
Exit Code: 0x00[/bash]
Die “Array” und “Row” Nummern merken wir uns für später.
Im Falle einer tatsächlich defekten Platte würden wir diese jetzt zum Austausch durch den Support vorbereiten:
[bash] MegaCli -pdprprmv -physdrv[252:1] -a0[/bash]
Nach Austausch muß die neue Platte u.U. mit Kommandos wie -pdmakegood oder -pdonline bereitgemacht werden. Der Status der Platte muß jedenfalls “Unconfigured Good” sein. In unserem Testvorgang ist dies automatisch der Fall, da wir die Platte nicht tatsächlich austauschen lassen.

Rebuild der neuen Platte

Die neue Platte wird als Ersatz für die ausgefallene bestimmt und der Rebuild gestartet. Für “array” und “row” wählen wir die Werte aus der Tabelle von eben:
[bash]/opt/lsi/MegaCLI # ./MegaCli -pdreplacemissing -physdrv[252:1] -array0 -row0 -a0
Adapter: 0: Missing PD at Array 0, Row 0 is replaced.
Exit Code: 0x00
/opt/lsi/MegaCLI # ./MegaCli -pdrbld -start -physdrv[252:1] -a0
Started rebuild progress on device(Encl-252 Slot-1)
Exit Code: 0x00[/bash]
Dann läuft der Rebuild. Über den Fortschritt können wir uns so informieren:
[bash]/opt/lsi/MegaCLI # ./MegaCli -pdrbld -showprog -physdrv[252:1] -a0
Rebuild Progress on Device at Enclosure 252, Slot 1 Completed 15% in 38 Minutes.
Exit Code: 0x00[/bash]
Nach Abschluß des Rebuild ist die Platte dann wieder “Online” und das Array “Optimal”.

(Raid-)Monitoring in Zabbix LSI MegaRAID SAS 9260-4i

Beim Betrieb eines RAID-1 möchte man üblicherweise über einen Ausfall einer Platte möglichst sofort informiert werden, um sie schnellstmöglich tauschen lassen zu können.
Nach Installation des CIM-Providers von LSI für den LSI MegaRAID SAS 9260-4i wird auf der Hardware-Monitoring-Seite im vSphere-Client der Status des RAID angezeigt. Eine aktive Alarmierung ist aber nur in der kostenpflichtigen Version und bei Betrieb eines vCenter möglich – der vSphere-Client allein hat keine Alarmierungsfunktionalität.
Als Alternative installieren wir das “MegaCli” (ein Kommandozeilentool zum Management des RAID-Controllers) auf dem Host und richten ein Skript ein, das regelmäßig Hardwarestatus-Informationen zusammenstellt und per SCP an einen Server schickt, auf dem die Informationen weiter ausgewertet werden können.
In unserem Beispiel verwenden wir die Monitoring-Software “Zabbix”, für die wir ein Skript, User-Parameter und ein Template zur Verfügung stellen. Mit etwas Erfahrung sollten sich die Skripts aber auch für andere Monitoring-Systeme anpassen lassen.

Skriptinstallation auf dem ESXi-Host

MegaCli installieren

In diesem Abschnitt der Installationsanleitung ist beschrieben, wie wir den MegaCli installieren.

Verzeichnis für die Skripts einrichten

Da der Großteil des ESXi-Dateisystems beim Booten neu zusammengesetzt und vorige Inhalte damit gelöscht werden, brauchen wir einen “sicheren Ort” für unsere Skripts und Dateien. Wir entschließen uns, ein Unterverzeichnis des Datastores zu benutzen, hier /vmfs/volumes/datastore1/lsi. Dieses legen wir an.
[bash]mkdir /vmfs/volumes/datastore1/lsi[/bash]

SSH-Key vom Monitoring-Server übertragen

Die fertigen RAID-Informationen sollen per SCP auf den Monitoring-Server geschickt werden. Damit dies automatisiert und ohne Kennworteingabe geht, brauchen wir ein “Identity-File”, sprich den SSH Private Key des gewünschten Users auf dem Monitoring-Server.
In unserem Beispiel hat der Monitoring-Server den Hostnamen centaurus.tianet.de und der User heißt zabbix
Mit dem Kommando ssh-keygen erzeugen wir auf dem Monitoring-Server ein solches, falls der User noch keins hat. Die Passphrase lassen wir leer, da der ESXi-Host ohne Kennworteingabe den Key benutzen können muß.
[bash]zabbix@centaurus:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zabbix/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/zabbix/.ssh/id_rsa.
Your public key has been saved in /home/zabbix/.ssh/id_rsa.pub.
The key fingerprint is:
4c:60:c9:cb:0f:e4:92:c4:2a:40:60:86:af:82:0f:7b zabbix@centaurus
The key’s randomart image is: […][/bash]
Die Datei id_rsa kopieren wir per SCP auf den ESXi-Host ins richtige Verzeichnis. Dazu brauchen wir das Root-Kennwort.
[bash]zabbix@centaurus:~$ scp .ssh/id_rsa root@esxi.tianet.de:/vmfs/volumes/datastore1/lsi/centaurus_zabbix_id
The authenticity of host ‘esxi.tianet.de (5.9.86.110)’ can’t be established.
RSA key fingerprint is 77:d8:25:f8:40:16:e6:6c:36:c1:ed:5f:8f:99:6e:b0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘esxi.tianet.de,5.9.86.110’ (RSA) to the list of known hosts.
Password:
id_rsa 100% 1675 1.6KB/s 00:00[/bash]
Continue reading “(Raid-)Monitoring in Zabbix LSI MegaRAID SAS 9260-4i”