LSI RAID Monitoring Plugin

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

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:

Vorraussetzungen

Die Installation der Voraussetzungen wird im kommenden Abschnitt näher erläutert:

  • Am überwachten Server
    • check_lsi_raid plugin installiert
    • storcli installiert
    • libfile-which-perl installiert
    • sudoers Eintrag für User nagios und storcli
    • Wenn über NRPE, dann Kommando-Definition für NRPE
  • Am Icinga-Server

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
Foto Georg Schönberger.jpg

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.


Das könnte Sie auch interessieren

MegaRAID Glossar
Host Definition in Nagios 3
SMS Benachrichtigungen mit Icinga