check_by_ssh kann verwendet werden um lokale Plugins wie check_proc und check_disk via SSH auf einem entferneten Server aufzurufen. SSH bietet sich an, da der SSH Daemon in den meisten Fällen bereits auf den zu überwachenden Servern läuft.
Um check_by_ssh verwenden zu können müssen einige grundlegende Vorraussetzungen geschaffen werden.
Bei den nachfolgenden Aktionen gehe ich davon aus, dass es auf beiden Seiten bereits den User Nagios mit einem gültigen Homeverzeichnis gibt. Alle Tests werden als user nagios durchgeführt.
DSA-Key erstellen:
ssh-keygen -t dsa -N ""
RSA-Key erstellen:
ssh-keygen -t rsa -N ""
RSA1-Key erstellen:
ssh-keygen -t rsa1 -N ""
ACHTUNG: -N ““ sorgt dafür, dass kein Passphrase fuer den SSH-Key vergeben wird!!! (das ist so gewollt)
Die erstellten Keys befinden sich dann im Home-Verzeichnis des Users, der die Keys erstellt hat!
User = Nagios
cd ~/.ssh/ -rw------- 1 nagios nagios 668 Feb 1 06:57 id_dsa -rw-r--r-- 1 nagios nagios 601 Feb 1 06:57 id_dsa.pub -rw------- 1 nagios nagios 883 Feb 1 06:57 id_rsa -rw-r--r-- 1 nagios nagios 221 Feb 1 06:57 id_rsa.pub -rw------- 1 nagios nagios 526 Feb 1 06:57 identity -rw-r--r-- 1 nagios nagios 330 Feb 1 06:57 identity.pub
Die Key's „*.pub“ auf das Zielsystem, natuerlich per ssh, kopieren:
scp *.pub remoteuser@px1:~/.
Per SSH auf Zielsystem einloggen:
ssh -l remoteuser zielsystem
Key auf Zielsystem/User aktivieren:
cat /pfadangabe/key/id*.pub >> ~/.ssh/authorized_keys cat /pfadangabe/key/*sa.pub >> ~/.ssh/authorized_keys2
Vom Zielsystem wieder ausloggen!
Ab sofort wird der „remoteuser“ per KEY authentifiziert und muss somit kein Passwort mehr eingeben!
–snip–
remoteuser@zielsystem:~$ ssh remoteuser@zielsystem Linux px1 2.4.22-bf2.4 #1 Sat Nov 8 21:13:39 CET 2003 i686 GNU/Linux You have mail. Last login: Wed Feb 15 17:41:32 2006 from remoteuser@zielsystem:~$
–snap–
ACHTUNG:
Da der Nagios-Daemon mit der UID „nagios“ läuft, muss für den User auch der Key erstellt werden!
nagios@nagios:~/libexec$ ./check_by_ssh -H px1 -C "~nagios/libexec/check_swap -w 50% -c 50%" SWAP OK - 61% free (591 MB out of 973 MB) |swap=590MB;486;486;0;972 nagios@nagios:~/libexec$
Beispiel checkcommands.cfg:
# 'check_by_ssh_swap' command definition
define command{
command_name check_by_ssh_swap
command_line $USER1$/check_by_ssh -l remoteuser -H $HOSTADDRESS$ -C "$USER1$/check_swap -w $ARG1$ -c $ARG2$"
}
# 'check_by_ssh_local_disk' command definition
define command{
command_name check_by_ssh_local_disk
command_line $USER1$/check_by_ssh -l remoteuser -H $HOSTADDRESS$ -C "$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$"
}
Beispiel hostcheck.cfg:
define service{
use generic-service
host_name remotesystem
service_description CHECK_DISK ROOT-Mountpoint
is_volatile 0
check_period 24x7
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
contact_groups admins
notification_options w,u,c,r
notification_interval 960
notification_period 24x7
check_command check_by_ssh_local_disk!85%!80%!/
}