Гугл очень быстро помог, выдав отличный мануал по установке nrpe: http://blog.sozinov.eu/2007/05/nrpe-nagios.html, на его основе мы и будем двигаться дальше.
В рассмотрении у нас будет два узла - source и target, с первого мы будем запрашивать данные, а второй будет выполнять заданные нами команды.
Настраиваем target систему
На target:
# CentOS
yum install -y nrpe
# Debian
apt-get install nagios-nrpe-server
Далее все рассуждения я буду проводить для CentOS.
Включаем автозагрузку сервиса nrpe:
chkconfig nrpe on
Запускаем его:
/etc/init.d/nrpe start
Открываем конфиг:
vi /etc/nagios/nrpe.cfg
Далее заменяем 127.0.0.1 на IP source сервера:
allowed_hosts=127.0.0.1
Потом включаем передачу аргументов вызываемым программам:
dont_blame_nrpe=1
По поводу безопасности можете не волноваться, сам NRPE отфильтрует потенциально опасные символы, переданные в качестве аргументов, вот их список:
| ` & > < ' " \ [ ] { } ; !
И создаем тестовую команду без аргументов:
command[check_mdstat]=/bin/cat /proc/mdstat
Применяем изменения:
/etc/init.d/nrpe restart
И открываем слежение за логами nrpe:
tail -f /var/log/messages
Настраиваем source систему
Обращаю внимание, что все последующие рассуждения для Debian.
apt-get install -y nagios-nrpe-plugin
Запрашиваем выдачу нашего датчика:
/usr/lib/nagios/plugins/check_nrpe -H ip.ad.dr.es -c check_mdstat
Personalities : [raid1] [raid10] [raid0] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
4200896 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
2104448 blocks [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
1458830400 blocks [2/2] [UU]
unused devices:
Ну вот и все, не правда ли, очень удобно? :) Разве что меня смущает то, что /usr/lib/nagios/plugins/check_nrpe - бинарик, а не Python/Perl скрипт, но не думаю, что у nrpe такой сложный протокол, чтобы его нельзя было воспроизвести вручную.
Передача параметров
Теперь немного усложним задачу, будем запрашивать данные выдачи команды mdadm --detail /dev/N, где N будет задаваться вызывающей стороной.
На target машине создаем такую команду:
command[check_mdadm_detail]=/usr/bin/sudo /sbin/mdadm --detail $ARG1$
Применяем настройки:
/etc/init.d/nrpe restart
Так как mdadm для запуска требует полномочий суперпользователя, нам необходимо будет воспользоваться sudo.
Ставим sudo:
yum install -y sudo
Добавляем правило в sudoers:
vi /etc/sudoers
nrpe ALL=(ALL) NOPASSWD:/sbin/mdadm --detail *
Также отключаем требование tty для использования sudo (комментируем указанную строку):
# Defaults requiretty
Идем на source машину и вызываем команду:
/usr/lib/nagios/plugins/check_nrpe -H ip.ad.dr.es -c check_mdadm_detail -a /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Thu Feb 11 18:39:06 2010
Raid Level : raid1
Array Size : 4200896 (4.01 GiB 4.30 GB)
Used Dev Size : 4200896 (4.01 GiB 4.30 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Mon Mar 22 19:31:08 2010
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : d9c1ca66:181df062:776c2c25:004bd7b2
Events : 0.50
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
Ну вот теперь у нас есть RPC на все случи жизни :)
Если же у Вас параноя, как и у меня, то рекомендую закрыть NRPE также фаерволлом (xx.xx.xx.xx - IP source машины):
iptables -A INPUT -p tcp -s ! xx.xx.xx.xx --dport 5666 -j DROP
No comments :
Post a Comment
Note: only a member of this blog may post a comment.