check_aacraid.py: „No output from arcconf!“

Mittels des icinga/nagios check-plugins: check_aacraid.py lässt sich der Zustand eines Adaptec RAID Controllers, wie beispielsweise den Adaptec RAID 5405 in einem ESX-Server überwachen.

Zuvor muss man jedoch mit:

sudo /usr/RemoteArcconf/arcconf SETVMCREDENTIAL [esx-host] [esx-port] [esx-user] [esx-password]

die credentials setzten.
Dieses Kommando speichert ein file: VMCIMOMConfig.txt entweder im Programmverzeichnis (wenn das Kommando als root ausgeführt wird), oder im aktuellen Verzeichnis (wenn das Kommando als user ausgeführt wird).
So kann man als icinga user das Kommando: /usr/local/lib/icinga/plugins/check_aacraid.py aufrufen, doch die Ausführung des plugins durch den icinga Prozess schlägt mit der Meldung: UNKNOWN:

"No output from arcconf!"

fehl.

Dies liegt daran, dass das Programm arcconf die Datei VMCIMOMConfig.txt Standardmässig nur in zwei Verzeichnissen sucht: Dem aktuellen Verzeichnis und dem Verzeichnis: $ARCCONF_PATH/VMCIMOMConfig.txt.
Wenn der Check vom icinga Prozess aufgerufen wird, ist das „aktuelle Verzeichnis“ auf : „/“ gesetzt und sudo entfernt die Umgebungsvariablen des Users.

Nun könnte man natürlich die Datei VMCIMOMConfig.txt einfach nach / kopieren (oder besser symlinken), doch weitaus eleganter wäre es jedoch die Umgebungsvariable $ARCCONF_PATH zu setzen.

Dazu sind folgende Schritte notwendig:

Zuerst (als user root) Sicherstellen, dass die Datei /usr/RemoteArcconf/VMCIMOMConfig.txt existiert:

test -f /usr/RemoteArcconf/VMCIMOMConfig.txth >> /usr/RemoteArcconf/arcconf SETVMCREDENTIAL [esx-host] [esx-port] [esx-user] [esx-password]

(Die Argumente: esx-host, esx-port, esx-user und esx-password müssen natürlich angepasst werden)

Nun dem icinga User die Umgebungsvariable setzen:

ICINGA_USER="icinga"; echo "export ARCCONF_PATH=/usr/RemoteArcconf/" >> $(grep $ICINGA_USER /etc/passwd | cut -d: -f6)/.bash_profile

(icinga ist hier der user mit dem icinga läuft)

Das sudoers file anlegen und dabei mittels der Option env_keep die Umgebungsvariable: ARCCONF_PATH behalten:

visudo -f /etc/sudoers.d/icinga
### Nagios/NRPE additions
 
Defaults:icinga !requiretty
# required for MONITORING_ADMIN, so the root pw instead of the user pw must be entered
Defaults:icinga rootpw
# Required for running arcconf from sudo (without having teh credentials file in: /
Defaults:icinga env_keep=ARCCONF_PATH
 
 
### Command Alias
 
# Normal monitoring commands
Cmnd_Alias MONITORING = /usr/RemoteArcconf/arcconf GETCONFIG 1 *
# Admin monitoring commands
Cmnd_Alias MONITORING_ADMIN = /usr/RemoteArcconf/arcconf SETVMCREDENTIAL *
 
 
# Permissions
icinga          ALL=(ALL)       NOPASSWD: MONITORING
icinga          ALL=(ALL)                 MONITORING_ADMIN

Und zu letzt icinga neustarten:

/etc/init.d/icinga restart

Nun funktioniert das arcconf Kommando sowohl auf der Shell wie auch durch den icinga Prozess und man braucht das VMCIMOMConfig.txt file nur noch an einer Zentralen Stelle in /usr/RemoteArcconf/ (falls das file noch irgendwo anders herumliegt, beispielsweise in / oder /home/icinga/ sollte es entfernt werden).

Ab ESX 6.5 symlink nach jeden Neustart setzen

Ab ESX 6.5 muss nach jedem ESX Neustart ein symlink von: /dev/aac0 auf /dev/aac gesetzt werden, wie in Adaptec RAID 5405 in ESX 6.5 Überwachen beschrieben:

ln -s /dev/aac /dev/aac0

Published by

Steven Varco

Steven ist ein Redhat RHCE-Zertifizierter Linux-Crack und ist seit über 15 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.