Nagios3: check_by_ssh

#1
Hi,

ich weiss, dass check_by_ssh nicht gerade best practice ist. Dennoch würde ich es gerne funktionieren sehen ;) Hier also meine Konfiguration:

Code:
nagios:~# cat /etc/nagios-plugins/config/ssh.cfg 
# 'check_ssh' command definition
define command {
        command_name    check_ssh
        command_line    /usr/lib/nagios/plugins/check_ssh '$HOSTADDRESS$'
}

# 'check_by_ssh' command definition
define command {
        command_name    check_by_ssh
        command_line    /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' $ARG1$
}

nagios:~# cat /etc/nagios3/objects/host-debian504-amd64.cfg 
define host{
        host_name       debian504-amd64                 ; The name we're giving to this host
        use             linux-server                    ; Inherit default values from a template
        alias           my first linux server           ; A longer name associated with the host
        address         192.168.4.11                    ; IP address of the host
        hostgroups      linux-servers
        }

define service{
        use                     generic-service
        host_name               debian504-amd64
        service_description     PING
        check_command           check_ping!500,10%!1000,20%
        }

define service{
        use                     generic-service
        host_name               debian504-amd64
        service_description     CPU Load
        # ./check_by_ssh -H 192.168.4.11 -n debian504-amd64 -C '/usr/lib/nagios/plugins/check_load -w 7,6,5 -c 8,7,6'
        check_command           check_by_ssh!-C '/usr/lib/nagios/plugins/check_load -w 7,6,5 -c 8,7,6'
        }


nagios:~# /usr/lib/nagios/plugins/check_by_ssh -H '192.168.4.11' -C '/usr/lib/nagios/plugins/check_load -w 7,6,5 -c 8,7,6'
OK - load average: 0.00, 0.00, 0.00|load1=0.000;7.000;8.000;0; load5=0.000;6.000;7.000;0; load15=0.000;5.000;6.000;0; 
nagios:~#
Ganz unten seht ihr, dass es eigentlich funktionieren sollte. Nur Nagios zeigt mir "Remote command execution failed: Host key verification failed. " an.

Hat jemand ne Idee?

cu
serow
 
#2
Ich vermute mal, dass du ssh-agent verwendest, weswegen es beim händischen Ausführen funktioniert, aber nicht innerhalb von Nagios, denn dort wird der Key ja nicht für die Agent-Session hinzugefügt. Du wirst daher den Pfad zum Keyfile hinzufügen müssen. Und natürlich dran denken, dass Nagios üblicherweise nicht als Root läuft.
 
#3
Hi,

ssh-agent kanns nicht sein, da der Key kein Passphrase hat. Aber was Sinn ergeben würde ist, dass er das Key File nicht findet / benutzt, weil er unter ~/nagios/.ssh/id_rsa.pub sucht.

cu
serow
 
#4
Hi nochmal,

also danke für den Tip. Es war genau das! Blöd nur, dass der User nagios unter Lenny erstmal kein Home hat. Das hab ich angelegt und konfiguriert. Dann musste man dem check_by_ssh noch mit -l den user und mit -i den Private Key mitgeben.

danke
serow
 
#5
Ich weiß, Leichengräber und so, aber der Thread passt perfekt für mich.

Wir haben bei uns im Hause zwei Linux Kisten.
Auf der einen läuft Nagios, auf der Anderen eine selbst Programmierte Web Anwendung.

Wir wollen jetzt via check_by_ssh drei Verschiedene Werte Abfragen.
Allerdings bekommen wir jedes mal die Fehlermeldung
"Remote command execution failed: Host key verification failed. "

Erste Test haben dann gezeigt dass ein "ssh nagios@Zielsystem" (ausgeführt als User Nagios) nicht geht.
Daher als erste mal neue Keys erstellt und auf das Zielsystem übertragen.
Ergebniss war dass "ssh nagios@Zielsystem" jetzt geht.

Auch der Manuelle Check Funktioniert
PHP:
[I]nagios@Server:/usr/lib/nagios/plugins$ ./check_by_ssh -l nagios  -H Zielsystem -n target -i /var/lib/nagios/.ssh/id_dsa  -C '/usr/lib/nagios/plugins/check_disk -w 20% -c 10%'
DISK OK - free space: / 25254 MB (27% inode=91%); /dev 10 MB (100% inode=99%); /run 396 MB (99% inode=99%); /run/lock 5 MB (100% inode=99%); /run/shm 1612 MB (100% inode=99%);| /=66591MB;77408;87084;0;96761 /dev=0MB;8;9;0;10 /run=0MB;316;356;0;396 /run/lock=0MB;4;4;0;5 /run/shm=0MB;1289;1450;0;1612[/I]
Mein commands.cfg hat für z.B. check_by_ssh_disk folgendes Hinterlegt:
PHP:
[I]
define command{
        command_name    check_by_ssh_disk
        command_line    $USER1$/check_by_ssh -t 30 -H $HOSTADDRESS$ -C '$USER1$/check_disk -t 30 -w $ARG1$ -c $ARG2$ -p $ARG3$'
}
[/I]
Auch der folgende Versuch war nicht Erfolgreich

PHP:
[I]
define command{
        command_name    check_by_ssh_disk
        command_line    $USER1$/check_by_ssh -l nagios -i /var/lib/nagios/.ssh/id_dsa -t 30 -H $HOSTADDRESS$ -C '$USER1$/check_disk -t 30 -w $ARG1$ -c $ARG2$ -p $ARG3$'
}
[/I]
Augefallen ist mir dass der User Nagios kein Verzeichnis in /home/ hat.

Der Wechsel des Userverzeichnisses schlägt fehl, ich weiß aber aktuell auch nicht ob das wirklich eine Lösung ist

PHP:
[I]
root@swnsrv242:/var/lib/nagios/.ssh# usermod -d /home/nagios/ -m nagios
usermod: user nagios is currently used by process 1615
[/I]
Da ich das Thema Linux heute erst in der Firma übernommen habe fehlen mir die tieferen Kenntnisse ob sich der Umzug des Home Verzeichnisses überhaupt lohnt. Angelegt wurde es und hat auch alle Dateien die benötigt werden unter /home/nagios/.ssh/ liegen wo der User Nagios mittels chown/chgrp nagios berechtigt wurde.

Führ weitergehende Tipps/Tricks/Anleitungen wie ich das zum laufen bekomme wäre ich extrem dankbar.

gruß
Chris
 
#6
Wo das Home-Verzeichnis sich befindet, ist in der /etc/passwd definiert. In dem dort definierten Verzeichnis muss auch die .ssh/authorized_keys-Datei sein, wenn du via SSH mit einem Keyfile connecten willst. Ein Ändern des Home-Ordners ist dafür im Normalfall nicht notwendig.
 
#7
Hallo bitmuncher,

danke schon mal für deine Antwort.

Hab es eben geprüft, das Home ist auf /var/lib/nagios gelegt, wenn ich dann in den unterordner .ssh wechsle liegen dort die Key Files.
Sollten also funktionieren und wie gesagt wenn ich in der bash einen check ausführe bzw. ssh nagios@zielsystem ausführe klappt es auch.

Beim Check kommt trotzdem die Fehlermeldung "Remote command execution failed: Host key verification failed. "

Werde natürlich parallel weitersuchen ob ich ne Lösung finde, aber Tipps/Tricks sind immer gerne gesehen.

EDIT:
Gerade eben die Lösung gefunden.
Wenn man in der Host Definition die adress vom FQDN auf IP austauscht klappt das ganze. Die vorherigen Probleme waren auch nötig zu lösen, aber das mit FQDN/IP spielt da auch rein.

Zwei von drei Checks gehen jetzt, einer fehlt noch, aber das ist wohl ein "Definitions"-Problem im Befehl, das sollte leicht machbar sein.
 
Zuletzt bearbeitet:
Oben