I had to do a lot of fiddling before I got nagios over ssh working. I used this article as source, mostly, even though I did it differently.
First add some commands to commands.cfg:
define command{
command_name check_remote_disk
command_line /usr/lib/nagios/plugins/check_by_ssh -p $ARG1$ -l nagios -t 30 -o StrictHostKeyChecking=no -i /etc/nagios3/id_rsa -H $HOSTADDRESS$ -C '/usr/lib/nagios/plugins/check_disk -w $ARG2$ -c $ARG3$ -p $ARG4$'
}
define command{
command_name check_remote_load
command_line /usr/lib/nagios/plugins/check_by_ssh -p $ARG1$ -l nagios -t 30 -o StrictHostKeyChecking=no -i /etc/nagios3/id_rsa -H $HOSTADDRESS$ -C '/usr/lib/nagios/plugins/check_load -w $ARG2$ -c $ARG3$'
}
define command{
command_name check_remote_swap
command_line /usr/lib/nagios/plugins/check_by_ssh -p $ARG1$ -l nagios -t 30 -o StrictHostKeyChecking=no -i /etc/nagios3/id_rsa -H $HOSTADDRESS$ -C '/usr/lib/nagios/plugins/check_swap -w $ARG2$ -c $ARG3$'
}
The file referenced by -i is an SSH secret key. You can create this key by running ssh-keygen and giving the right path. You can’t store anything in the nagios home dir, because that is in /var/run, which is cleared after a reboot. So, you can’t use the default key file.
The -t 30 is necessary because sometimes there is network lag, causing the service to be reported as failure. The default of 10 is not enough…
Next you need to create a user nagios on the target machine and add the .pub file of the key to the authorized_keys. Creating the user should be done like:
useradd --system --shell /bin/bash nagios
Then install the nagios plugins on the target host:
aptitude -P install nagios-plugins-basic
The nagios host needs to be able to log in with user nagios. On Debian, the user that runs nagios (also called ‘nagios’) doesn’t have a shell by default. So, give it a shell.
Then you can create a hostgroup (for example). You can do:
define hostgroup {
hostgroup_name nagios-enabled
alias Nagios enabled
members host1, host2
}
Then create services:
define service {
hostgroup_name nagios-enabled
service_description Root partition space
check_command check_remote_disk!22!20%!10%!/
use generic-service
notification_interval 0
}
define service {
hostgroup_name nagios-enabled
service_description Swap space
check_command check_remote_swap!22!50%!30%
use generic-service
notification_interval 0
}
define service {
hostgroup_name nagios-enabled
service_description Load
check_command check_remote_load!22!5.0,4.0,3.0!10.0,6.0,4.0
use generic-service
notification_interval 0
}
This will check load, swap and root space on all your standard nagios enabled hosts. Next you can define custom services:
define service {
host_name piet
service_description Some partition
check_command check_remote_disk!22!40%!30%!/mnt/dinklefat
use generic-service
notification_interval 0
}
Recent Comments