Nagios и мониторинг хостов по ssh
Пригодится, если вдруг другими способами мониторить хосты не представляется возможным по разным причинам. Мне лично было просто лень измудряться на что то другое :)
Нам необходимо:
Случилось так, что системный пользователь nagios не имеет возможности залогиниться в систему. Но эту неприятность мы переживем :) Домашняя его директория находится в /var/spool/nagios/. Итак, логинимся в систему пользователем nagios и генерируем RSA ключи:
1 2 3 4 5 | sudo -u nagios /bin/sh cd /var/spool/nagios/ mkdir .ssh chmod 700 .ssh ssh-keygen -t rsa |
Копируем публичный ключ на клиентский хост:
1 | scp /var/spool/nagios/.ssh/id_rsa.pub user@<ip-клиента>:/home/user |
Создаем пользователя nagios,необходимые папки и файлы на клиентской машине:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | sudo adduser Username: nagios Full name: Nagios pseudo-user Uid (Leave empty for default): Login group [nagios]: Login group is nagios. Invite nagios into other groups? []: Login class [default]: Shell (sh csh tcsh zsh nologin) [sh]: Home directory [/home/nagios]: /var/spool/nagios Home directory permissions (Leave empty for default): Use password-based authentication? [yes]: no Lock out the account after creation? [no]: Username : nagios Password : <disabled> Full Name : Nagios pseudo-user Uid : 1003 Class : Groups : nagios Home : /var/spool/nagios Home Mode : Shell : /bin/sh Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (nagios) to the user database. Add another user? (yes/no): no Goodbye! |
1 2 3 4 5 | mkdir /var/spool/nagios/.ssh mv /home/user/id_rsa.pub /var/spool/nagios/.ssh/authorized_keys chown -R nagios:nagios /var/spool/nagios/.ssh/ chmod 700 /var/spool/nagios/.ssh/ chmod 600 /var/spool/nagios/.ssh/authorized_keys |
Залогинившись на сервере пользователем nagios, как указано выше, проверяем конект до клиента:
1 | ssh -v nagios@<ip-клиента> |
Конект должен пройти без запроса пароля.
Теперь скопируем плагины nagios с сервера на клиент:
1 2 | nagios@client$ mkdir ~/plugins nagios@server$ scp /usr/local/libexec/nagios/* nagios@<ip-клиента>:~/plugins |
Проверяем работу плагинов на клиенте с сервера:
1 | nagios@server$ ssh nagios@<ip-клиента> "~/plugins/check_disk -w 500 -c 100 -p /var" |
Должно получиться:
1 | DISK OK - free space: /var 1610 MB (35% inode=85%);| /var=2951MB;4458;4858;0;4958 |
Проверяем плагином:
1 2 | /usr/local/libexec/nagios/check_by_ssh -H 10.73.0.3 -C "~/plugins/check_disk -w 500 -c 100 -p /var" DISK OK - free space: /var 1609 MB (35% inode=85%);| /var=2951MB;4458;4858;0;4958 |
Отлично, всё работает. Теперь опишем команду и сервис:
1 2 3 4 5 6 7 8 9 10 11 12 | commands.cfg define command { command_name check_ssh_disk command_line $USER1$/check_by_ssh -H $HOSTADDRESS$ -C "~/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$" } define service{ use local-service ; Name of service template to use host_name client service_description Var_Partition check_command check_ssh_disk!10%!5%!/var notifications_enabled 1 } |
Ну и всё. Осталось перезапустить nagios.
Много интересной информации есть здесь.