LSI RAID Monitoring Plugin
Das LSI RAID Monitoring Plugin ermöglicht die Überwachung von RAID-Sets eines LSI Controllers. Das Plugin ist in der Script-Sprache Perl verfasst und verwendet für die Interaktion mit dem RAID Controller das Kommandozeilen-Werkzeug storcli.
Dieser Artikel zeigt die Konfiguration unter Linux. Informationen zur Einrichtung unter Windows finden Sie im Artikel LSI RAID Monitoring Plugin unter Windows Server 2012 einrichten.
Aktuelle Version
Die aktuelle Version des check_lsi_raid Plugins finden Sie auf GitHub:
Funktionen
In der README des Plugins finden Sie eine detaillierte Auflistung, welche Komponenten überwacht werden:
- Version 2.3 Plugin README (github.com)
Vorraussetzungen
Die Installation der Voraussetzungen wird im kommenden Abschnitt näher erläutert:
- Am überwachten Server
- Am Icinga-Server
- Kommando-Definition
- Service-Defintion
- Wenn Call-Home-Service verwendet wird
- Vorhandene Templates (Call-Home-Service mit Icinga oder Nagios nutzen)
Installation
Manuell
Bei der manuellen Installation wird die Plugin-Datei in das Verzeichnis /usr/lib/nagios/plugins
kopiert.
:~$ git clone https://github.com/thomas-krenn/check_lsi_raid.git Cloning into 'check_lsi_raid'... :~$ cd check_lsi_raid/ :~/check_lsi_raid$ ls changelog check_lsi_raid README :~/check_lsi_raid$ sudo cp check_lsi_raid /usr/lib/nagios/plugins/
Das LSI Storage Command Line Tool (StorCLI) kann für das jeweilige Produkt und Betriebssystem manuell von der LSI-Webseite herunter geladen werden: http://www.lsi.com/Search/Pages/downloads.aspx?k=Latest%20StorCLI
TK Ubuntu-Repository
Nach dem Einbinden des Thomas Krenn Repos (siehe dazu Thomas Krenn Ubuntu-Repo verwenden) befindet sich das check_lsi_plugin im Paket nagios-plugins-thomas-krenn:
:~$ sudo apt-get install nagios-plugins-thomas-krenn [...] Suggested packages: arcconf storcli freeipmi-tools libipc-run-perl The following NEW packages will be installed: nagios-plugins-thomas-krenn 0 upgraded, 1 newly installed, 0 to remove and 79 not upgraded. Need to get 0 B/25.2 kB of archives. After this operation, 127 kB of additional disk space will be used. Selecting previously unselected package nagios-plugins-thomas-krenn. (Reading database ... 68398 files and directories currently installed.) Unpacking nagios-plugins-thomas-krenn (from .../nagios-plugins-thomas-krenn_0.3-1_all.deb) ... Setting up nagios-plugins-thomas-krenn (0.3-1) ...
Die vorgeschlagenen Pakete storcli, libfile-which-perl
müssen auch installiert werden:
:~$ sudo apt-get install storcli libfile-which-perl [...] The following NEW packages will be installed: storcli libfile-which-perl [...]
Konfiguration
Das Plugin eignet sich für die Überwachung eines Remote-Servers über NRPE, als auch für einen lokalen Host. Jeweils muss am zu überwachenden System das check_lsi_raid Plugin installiert werden.
Über NRPE
Am Icinga Server
Beim Anlegen der Host-Definition wird das Kommando definiert, das via NRPE ausgeführt wird. Die Parameter selbst werden am zu überwachenden Host angegeben.
define service { service_description lsi-raid-nrpe display_name LSI RAID use generic-service host_name test check_command check_nrpe_1arg!check_lsi_raid }
Achtung: Soll der Call-Home-Service für den Service verwendet werden, müssen die Templates erstellt und anhand dem Artikel Call-Home-Service mit Icinga oder Nagios nutzen angelegt werden. Daraufhin muss anstatt use generic-service
beim Service use thomas-krenn-service
eingetragen werden!
Am Icinga 2 Server
Die Konfiguration des LSI RAID Plugins über NRPE erfolgt an einem Icinga 2 Host wie nachfolgend aufgeführt.
Kommando Definition Legen Sie z.B. im Unterverzeichnis commands des Icinga 2 Konfigurationsverzeichnisses, bei Ubuntu /etc/icinga2/conf.d, eine neue Datei mit der Bezeichnung lsi-nrpe.conf mit nachfolgendem Inhalt an.
object CheckCommand "nrpe-lsi" { import "plugin-check-command" command = [PluginContribDir + "/check_nrpe" ] arguments = { "-H" = "$address$" "-c" = "$nrpe_lsi$" } }
Apply Service Regel Definition
Es wird nun eine sogenannte Apply Rule im Icinga 2 Konfigurationsverzeichnis angelegt, damit wird bei einem Host mit entsprechend gesetztem Parameter dieser Servicecheck automatisch angefügt. Erstellen Sie dazu unterhalb des Icinga 2 Konfigurationsverzeichnisses den Ordner services und legen dort eine neue Datei mit der Bezeichnung "lsi-raid.conf" an.
Diese neue Konfigurationsdatei enthält folgendes Kommando:
apply Service "check-nrpe-lsi" { import "generic-service" check_command = "nrpe-lsi" assign where host.vars.nrpe_lsi }
Der Ausdruck assign where host.vars.nrpe_lsi bedeutet, wenn ein überwachter Host einen Parameter vars.nrpe_lsi mit NRPE-Parameter enthält, wird automatisch der Servicecheck "check-nrpe-lsi" über NRPE auf dem Server ausgeführt.
Host Definition Ergänzen Sie in der Host-Konfiguration die Zeile vars.nrpe_lsi.
object Host "Testserver" { import "generic-host" address = "<IP-Adresse>" vars.nrpe_lsi = "check_lsi_raid" }
Über TKmon
Das LSI-Raid-Plugin ist bereits im Service-Katalog von TKmon integriert. Es genügt beim Anlegen eines neuen Services den Check "LSI RAID via NRPE" auszuwählen:
Am überwachten Server
Damit der Benutzer "nagios" das Kommandozeilenwerkzeug mit sudo ohne Eingabe eines Passworts ausführen kann, muss folgende sudoers-Konfiguration definiert werden:
Hinweis: Unter CentOS läuft der NRPE Daemon unter dem Benutzer nrpe! Anstatt nagios muss bei CentOS daher nrpe in der sudo-Konfiguration eingetragen werden.
:~$ sudo vi /etc/sudoers.d/check_lsi_raid nagios ALL=(root)NOPASSWD:/usr/sbin/storcli :~$ sudo chmod 440 /etc/sudoers.d/check_lsi_raid
Der folgende Test darf keine Passwort-Eingabe verlangen:
:~$ sudo su nagios --shell /bin/bash :~$ sudo /usr/sbin/storcli -V Storage Command Line Tool Ver 1.03.11 Jan 30, 2013 (c)Copyright 2012, LSI Corporation, All Rights Reserved. Exit Code: 0x00
Eine NRPE-Konfigurations-Datei spezifiziert, welcher Check ausgeführt wird, wenn das Kommando "check_lsi_raid" aufgerufen wird. Dieses Kommando muss mit dem Parameter auf Icinga-Server-Seite in der Host-Definition übereinstimmen.
Hinweis: Unter CentOS kann es hilfreich sein, dem Plugin den Interpreter explizit anzugeben, also z.B. perl /usr/lib/nagios/plugins/check_lsi_raid -C 0 -p /usr/sbin/storcli
.
:~$ sudo vi /etc/nagios/nrpe.d/raid.cfg command[check_lsi_raid]=/usr/lib/nagios/plugins/check_lsi_raid -C 0 -p /usr/sbin/storcli
:~$ sudo service nagios-nrpe-server restart
Auf Seiten des Icinga-Servers kann getestet werden, ob der Check funktioniert:
:~$ /usr/lib/nagios/plugins/check_nrpe -H 10.0.0.2 -c check_lsi_raid OK (CTR, LD, PD, CV)|CV_Temperature=27;70;85 ROC_Temperature=62;80;90
Lokal
Eine lokale Konfiguration ist dann sinnvoll, wenn der Icinga- bzw. Icinga 2-Server selbst einen LSI-RAID-Controller verbaut hat und daher überwacht werden soll. Voraussetzungen für eine lokale Installation sind die oben beschriebenen Schritte zur Installation des Plugins, von storcli sowie die sudo-Konfiguration für den nagios User.
Icinga
Eine lokale Konfiguration des LSI RAID Monitoring Plugins unter Icinga erfolgt wie nachfolgend dargestellt.
Im ersten Schritt wird eine Icinga Kommando-Definition erstellt:
:~$ sudo vi /etc/nagios-plugins/config/check_lsi_raid.cfg define command { command_name check_lsi_raid command_line /usr/lib/nagios/plugins/check_lsi_raid -C '$ARG1$' -p '$ARG2$' }
Eine Service-Definition kann dann dieses Kommando benutzen:
define service{ use generic-service host_name tkmon service_description lsi-raid check_command check_lsi_raid!0!/usr/sbin/storcli }
Icinga 2
Eine lokale Konfiguration unter Icinga 2 gelingt wie nachfolgend dargestellt.
Kommando Definition Legen Sie z.B. im Unterverzeichnis commands des Icinga 2 Konfigurationsverzeichnisses, bei Ubuntu /etc/icinga2/conf.d, eine neue Datei mit der Bezeichnung lsi-raid.conf mit nachfolgendem Inhalt an.
object CheckCommand "lsi-raid" { import "plugin-check-command" command = [ PluginDir + "/check_lsi_raid" ] arguments = { "-C" = { required = true value = "$lsi_controller_number$" description = "The controller number to be checked." } "-p" = "/usr/sbin/storcli" } }
Apply Service Regel Definition
Es wird nun eine sogenannte Apply Rule im Icinga 2 Konfigurationsverzeichnis angelegt, damit wird bei einem Host mit entsprechend gesetztem Parameter dieser Servicecheck automatisch angefügt. Erstellen Sie dazu unterhalb des Icinga 2 Konfigurationsverzeichnisses den Ordner services und legen dort eine neue Datei mit der Bezeichnung "lsi-raid.conf" an.
Diese neue Konfigurationsdatei enthält folgendes Kommando:
apply Service "check-lsi-raid" { import "generic-service" check_command = "lsi-raid" assign where host.vars.lsi_controller_number }
Der Ausdruck assign where host.vars.lsi_controller_number bedeutet, wenn ein überwachter Host einen Parameter vars.lsi_controller_number mit einer gültigen LSI Controller ID enthält, wird automatisch der Servicecheck "check-lsi-raid" lokal auf dem Server ausgeführt.
Host Definition Ergänzen Sie in der Host-Konfigurationsdatei hosts.conf des lokalen Icinga 2 Servers die Zeile vars.lsi_controller_number.
object Host NodeName { [...] vars.lsi_controller_number = "LSI Controller ID" }
Beispiel-Ausgabe des Plugins
$ sudo ./check_lsi_raid -p /opt/MegaRAID/storcli/storcli64 -vvv Critical (CTR Warn, LD Crit, PD Warn) [c0/v0_State = Critical (Dgrd)][c0/e252/s2_State = Critical (Rbld)][CTR_Degraded_drives = Warning (1)] [c0/e252/s2_Rebuild = Warning (4)]|CV_Temperature=24;70;85 ROC_Temperature=58;80;90 Used storcli commands: - /usr/bin/sudo /opt/MegaRAID/storcli/storcli64 /c0 /cv show status - /usr/bin/sudo /opt/MegaRAID/storcli/storcli64 adpallinfo a0 - /usr/bin/sudo /opt/MegaRAID/storcli/storcli64 /c0/vall show all - /usr/bin/sudo /opt/MegaRAID/storcli/storcli64 /c0/vall show init - /usr/bin/sudo /opt/MegaRAID/storcli/storcli64 /c0/eall/sall show all - /usr/bin/sudo /opt/MegaRAID/storcli/storcli64 /c0/eall/sall show initialization - /usr/bin/sudo /opt/MegaRAID/storcli/storcli64 /c0/eall/sall show rebuild Critical sensors: - c0/v0_State (Dgrd) - c0/e252/s2_State (Rbld) Warning sensors: - CTR_Degraded_drives (1) - c0/e252/s2_Rebuild (4) CTR information: - LSI MegaRAID SAS 9271-4i: - Serial No=SV30900638 - FW Package Build=23.28.0-0010 - Mfg. Date=02/23/13 - Revision No=07B - BIOS Version=5.46.02.0_4.16.08.00_0x06060900 - FW Version=3.400.05-3175 - ROC temperature=58 degree Celcius LD information: - c0/v0: - Access=RW - Cache=RWBD - Consist=Yes - DG/VD=0/0 - Size=74.0 - State=Dgrd - TYPE=RAID1 - ld=c0/v0 - sCC=- PD information: - c0/e252/s1: - BBM Error Count=0 - DG=- - DID=6 - Drive Temperature=N/A - EID:Slt=252:1 - Intf=SATA - Med=SSD - Media Error Count=0 - Model=INTEL SSDSC2BB080G4 - Other Error Count=0 - PI=N - Predictive Failure Count=0 - S.M.A.R.T alert flagged by drive=No - SED=N - SeSz=512B - Shield Counter=0 - Size=74.0GB - Sp=U - State=UGood - pd=c0/e252/s1 - c0/e252/s2: - BBM Error Count=0 - DG=0 - DID=5 - Drive Temperature=0C (32.00 F) - EID:Slt=252:2 - Intf=SATA - Med=SSD - Media Error Count=0 - Model=INTEL SSDSC2BB080G4 - Other Error Count=0 - PI=N - Predictive Failure Count=0 - S.M.A.R.T alert flagged by drive=No - SED=N - SeSz=512B - Shield Counter=0 - Size=74.0GB - Sp=U - State=Rbld - pd=c0/e252/s2 - rebuild=4 - c0/e252/s3: - BBM Error Count=0 - DG=0 - DID=4 - Drive Temperature=N/A - EID:Slt=252:3 - Intf=SATA - Med=SSD - Media Error Count=0 - Model=INTEL SSDSC2BB080G4 - Other Error Count=0 - PI=N - Predictive Failure Count=0 - S.M.A.R.T alert flagged by drive=No - SED=N - SeSz=512B - Shield Counter=0 - Size=74.0GB - Sp=U - State=Onln - pd=c0/e252/s3 CV information: - CV_Replacement_required=No - CV_Status=OK - CV_Temperature=24
Hilfetext
$ ./check_lsi_raid --help check_lsi_raid: Nagios/Icinga plugin to check LSI Raid Controller status Pulgin version: 2.3 Copyright (C) 2013-2015 Thomas-Krenn.AG Current updates available at https://github.com/thomas-krenn/check_lsi_raid.git This Nagios/Icinga Plugin checks LSI RAID controllers for controller, physical device, logical device, BBU and CV warnings and errors. In order for this plugin to work properly you need to add the nagios user to your sudoers file (or create a new one in /etc/sudoers.d/). Usage: [ -h | --help ] Display this help page [ -v | -vv | -vvv | --verbose ] Sets the verbosity level. No -v is the normal single line output for Nagios/Icinga, -v is a more detailed version but still usable in Nagios. -vv is a multiline output for debugging configuration errors or more detailed information. -vvv is for plugin problem diagnosis. For further information please visit: http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN39 [ -V --version ] Displays the plugin and, if available, the version of StorCLI. [ -C <num> | --controller <num> ] Specifies a controller number, defaults to 0. [ -EID <ids> | --enclosure <ids> ] Specifies one or more enclosure numbers, per default all enclosures. Takes either an integer as additional argument or a commaseperated list, e.g. '0,1,2'. With --noenclosures enclosures can be disabled. [ -LD <ids> | --logicaldevice <ids>] Specifies one or more logical devices, defaults to all. Takes either an integer as additional argument or a comma seperated list e.g. '0,1,2'. [ -PD <ids> | --physicaldevice <ids> ] Specifies one or more physical devices, defaults to all. Takes either an integer as additional argument or a comma seperated list e.g. '0,1,2'. [ -Tw <temp> | --temperature-warn <temp> ] Specifies the RAID controller temperature warning threshold, the default threshold is 80C. [ -Tc <temp> | --temperature-critical <temp> ] Specifies the RAID controller temperature critical threshold, the default threshold is 90C. [ -PDTw <temp> | --physicaldevicetemperature-warn <temp> ] Specifies the disk temperature warning threshold, the default threshold is 40C. [ -PDTc <temp> | --physicaldevicetemperature-critical <temp> ] Specifies the disk temperature critical threshold, the default threshold is 45C. [ -BBUTw <temp> | --bbutemperature-warning <temp> ] Specifies the BBU temperature warning threshold, default threshold is 50C. [ -BBUTc <temp> | --bbutemperature-critical <temp> ] Specifies the BBU temperature critical threshold, default threshold is 60C. [ -CVTw <temp> | --cvtemperature-warning <temp> ] Specifies the CV temperature warning threshold, default threshold is 70C. [ -CVTc <temp> | --cvtemperature-critical <temp> ] Specifies the CV temperature critical threshold, default threshold is 85C. [ -Im <count> | --ignore-media-errors <count> ] Specifies the warning threshold for media errors per disk, the default threshold is 0. [ -Io <count> | --ignore-other-errors <count> ] Specifies the warning threshold for media errors per disk, the default threshold is 0. [ -Ip <count> | --ignore-predictive-fail-count <count> ] Specifies the warning threshold for media errors per disk, the default threshold is 0. [ -Is <count> | --ignore-shield-counter <count> ] Specifies the warning threshold for media errors per disk, the default threshold is 0. [ -Ib <count> | --ignore-bbm-counter <count> ] Specifies the warning threshold for bbm errors per disk, the default threshold is 0. [ -p <path> | --path <path>] Specifies the path to StorCLI, per default uses the tool 'which' to get the StorCLI path. [ -b <0/1> | --BBU <0/1> ] Check if a BBU or a CacheVault module is present. One must be present unless '-b 0' is defined. This ensures that for a given controller a BBU/CV must be present per default. [ --noenclosures <0/1> ] Specifies if enclosures are present or not. 0 means enclosures are present (default), 1 states no enclosures are used (no 'eall' in storcli commands). [ --nosudo ] Turn off using sudo. [ --nocleanlogs ] Do not clean storcli logs after running storcli commands. Further information about this plugin can be found at: http://www.thomas-krenn.com/de/wiki/LSI_RAID_Monitoring_Plugin and http://www.thomas-krenn.com/de/wiki/LSI_RAID_Monitoring_Plugin if you have questions regarding use of this software, to submit patches, or suggest improvements. Example usage: * check_lsi_raid -p /opt/MegaRAID/storcli/storcli64 * check_lsi_raid -p /opt/MegaRAID/storcli/storcli64 -C 1
Autor: Georg Schönberger Georg Schönberger, Abteilung DevOps bei der XORTEX eBusiness GmbH, absolvierte an der FH OÖ am Campus Hagenberg sein Studium zum Bachelor Computer- und Mediensicherheit, Studium Master Sichere Informationssysteme. Seit 2015 ist Georg bei XORTEX beschäftigt und arbeitet sehr lösungsorientiert und hat keine Angst vor schwierigen Aufgaben. Zu seinen Hobbys zählt neben Linux auch Tennis, Klettern und Reisen.
|