Showing posts with label Nagios. Show all posts
Showing posts with label Nagios. Show all posts
Wednesday, 29 September 2010
Distributed Nagios eXecutorEnterprise
Масштабирование Nagios на тысячи узлов: http://dnx.sourceforge.net/
Wednesday, 24 March 2010
Как пересобрать nrpe на CentOS из src rpm пакета?
Вот возникла у меня такая необходимость, но сходу собрать по обычному мануалу http://phpsuxx.blogspot.com/2009/12/rpm-centos-5.html не получилось.
А не получилось по вот такой причине:
Чтобы исправить проблему надо внести коррективы в SPEC:
И заменить:
на
После такой замены все успешно соберется :)
А не получилось по вот такой причине:
error: Failed build dependencies:
tcp_wrappers-devel is needed by nrpe-2.12-12.x86_64
Чтобы исправить проблему надо внести коррективы в SPEC:
cd SPECS/
vi nrpe.spec
И заменить:
%if 0%{?rhel}
BuildRequires: tcp_wrappers
%else
BuildRequires: tcp_wrappers-devel
%endif
на
%if 0%{?rhel}
BuildRequires: tcp_wrappers
%else
BuildRequires: tcp_wrappers
%endif
После такой замены все успешно соберется :)
Tuesday, 23 March 2010
nrpe и передача сообщений длиннее 1024 байт
В процессе работы с nrpe обнаружил у него фичу - если выдача запускаемой на удаленной машине команды больше 1024 байт, то выдача усекается до 1024 байт вне зависимости от полной длины. Меня, разумеется, такой расклад не устраивает - мне надо увеличить это значение хотя бы вдесятеро, до 10240 байт.
За этот [s]баг[/s] фичу отвечает константа MAX_PACKETBUFFER_LENGTH, объявленая в файле nrpe-2.12/include/common.h, так что для достижения требуемого поведения программы достаточно увеличить эту константу до 10024, а также скорректировать размер служебного буфера.
То есть нам надо внести следующие коррективы в файле include/common.h:
Размер второго служебного буфера увеличивается сильно, но не думаю, что это сломает программу.
После внесения указанных правок необходимо пересобрать пакет, это можно сделать по моему мануалу: http://phpsuxx.blogspot.com/2009/12/rpm-centos-5.html
Мануал пока не проверен, так что все на собственный страх и риск :)
За этот [s]баг[/s] фичу отвечает константа MAX_PACKETBUFFER_LENGTH, объявленая в файле nrpe-2.12/include/common.h, так что для достижения требуемого поведения программы достаточно увеличить эту константу до 10024, а также скорректировать размер служебного буфера.
То есть нам надо внести следующие коррективы в файле include/common.h:
#define MAX_PACKETBUFFER_LENGTH 10240
#define MAX_INPUT_BUFFER 20480
Размер второго служебного буфера увеличивается сильно, но не думаю, что это сломает программу.
После внесения указанных правок необходимо пересобрать пакет, это можно сделать по моему мануалу: http://phpsuxx.blogspot.com/2009/12/rpm-centos-5.html
Мануал пока не проверен, так что все на собственный страх и риск :)
Monday, 22 March 2010
Использование nrpe в своих корыстных целях
Задача такая - требуется вызов ряда команд на удаленном сервере. Первая мысль о реализации возникла сразу - ssh, но тут возникает проблема с тем, что нет возможности малой кровью ограничить список доступных команд и запретить доступ к файловой системе. Второй вариант был Zabbix Agent, но у него есть существенный недостаток, он не позволяет указать список команд, которые можно запускать, разрешаются либо все команды либо ни одной. Тут он полностью аналогичен SSH. Третий вариант пришел в голову немного позже - это nrpe, плагин удаленного мониторинга серверов. Он позволяет явно задать список доступных команд, а также является заведомо надежным продуктов присутствующем в почти каждом репозитории ПО. Так что реализовывать задачу будем именно на нем.
Гугл очень быстро помог, выдав отличный мануал по установке nrpe: http://blog.sozinov.eu/2007/05/nrpe-nagios.html, на его основе мы и будем двигаться дальше.
В рассмотрении у нас будет два узла - source и target, с первого мы будем запрашивать данные, а второй будет выполнять заданные нами команды.
Настраиваем target систему
На target:
Далее все рассуждения я буду проводить для CentOS.
Включаем автозагрузку сервиса nrpe:
Запускаем его:
Открываем конфиг:
Далее заменяем 127.0.0.1 на IP source сервера:
Потом включаем передачу аргументов вызываемым программам:
По поводу безопасности можете не волноваться, сам NRPE отфильтрует потенциально опасные символы, переданные в качестве аргументов, вот их список:
И создаем тестовую команду без аргументов:
Применяем изменения:
И открываем слежение за логами nrpe:
Настраиваем source систему
Обращаю внимание, что все последующие рассуждения для Debian.
Запрашиваем выдачу нашего датчика:
Ну вот и все, не правда ли, очень удобно? :) Разве что меня смущает то, что /usr/lib/nagios/plugins/check_nrpe - бинарик, а не Python/Perl скрипт, но не думаю, что у nrpe такой сложный протокол, чтобы его нельзя было воспроизвести вручную.
Передача параметров
Теперь немного усложним задачу, будем запрашивать данные выдачи команды mdadm --detail /dev/N, где N будет задаваться вызывающей стороной.
На target машине создаем такую команду:
Применяем настройки:
Так как mdadm для запуска требует полномочий суперпользователя, нам необходимо будет воспользоваться sudo.
Ставим sudo:
Добавляем правило в sudoers:
Также отключаем требование tty для использования sudo (комментируем указанную строку):
Идем на source машину и вызываем команду:
Ну вот теперь у нас есть RPC на все случи жизни :)
Если же у Вас параноя, как и у меня, то рекомендую закрыть NRPE также фаерволлом (xx.xx.xx.xx - IP source машины):
Гугл очень быстро помог, выдав отличный мануал по установке 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
Monday, 25 January 2010
Установка Nagios из исходников
Под Debian 5:
http://phpsuxx.blogspot.com/2010/01/nagios-32-debian-5-centreon.html
Под CentOS 5:
http://phpsuxx.blogspot.com/2010/01/nagios-32-centos-5.html
http://phpsuxx.blogspot.com/2010/01/nagios-32-debian-5-centreon.html
Под CentOS 5:
http://phpsuxx.blogspot.com/2010/01/nagios-32-centos-5.html
Сборка Nagios 3.2 на Debian 5 из исходников
Установка Nagios
Ставим Апача:
Создаем юзера для Nagios:
Создаем группу (это необходимо, чтобы разрешить от имени Апача вызывать внешние команды):
Добавляем юзера Nagios а в это группу:
В нее же добавляем Апача:
Ставим зависимости:
Добавляем в автозапуск:
Запускаем:
Установка Nagios плагинов
Стягиваем сорцы:
Ставим зависимости:
Собираем:
Ставим NDO, он необходим для связи Nagios с MySQL.
Ставим зависимости:
Собираем:
Также по-хорошему, надо добавить этот демон (ndodb) в автозапуск, но чуть позже.
источник: http://en.doc.centreon.com/Setup:CompileNagiosPlugins и http://en.doc.centreon.com/Setup:CompileNagios и http://en.doc.centreon.com/Setup:ndoutils
Ставим Апача:
apt-get install apache2 -y --force-yes
Создаем юзера для Nagios:
useradd -m nagios
Создаем группу (это необходимо, чтобы разрешить от имени Апача вызывать внешние команды):
groupadd nagcmd
Добавляем юзера Nagios а в это группу:
usermod -G nagios,nagcmd nagios
В нее же добавляем Апача:
usermod -G nagios,nagcmd www-data
cd /usr/src
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz
tar -xf nagios-3.2.0.tar.gz
cd nagios-3.2.0
Ставим зависимости:
apt-get update
apt-get install -y --force-yes make gcc libpng12-dev libjpeg62-dev libgd2-xpm-dev
./configure --prefix=/opt/nagios --with-command-group=nagcmd --enable-nanosleep --enable-event-broker
make all
make install
make install-init
make install-commandmode
make install-config
Добавляем в автозапуск:
update-rc.d nagios defaults
Запускаем:
/etc/init.d/nagios start
Установка Nagios плагинов
Стягиваем сорцы:
cd /usr/src
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz
tar -xf nagios-plugins-1.4.14.tar.gz
cd nagios-plugins-1.4.14
Ставим зависимости:
apt-get install -y --force-yes fping libnet-snmp-perl libssl-dev dnsutils
Собираем:
./configure --prefix=/opt/nagios_plugins --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl=/usr/bin/openssl
make
make install
Ставим NDO, он необходим для связи Nagios с MySQL.
Ставим зависимости:
apt-get install -y --force-yes libmysqlclient15-dev
cd /usr/src
wget http://prdownloads.sourceforge.net/sourceforge/nagios/ndoutils-1.4b9.tar.gz
tar -xf ndoutils-1.4b9.tar.gz
cd ndoutils-1.4b9
Собираем:
./configure --prefix=/opt/nagios --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios
make
make install
Также по-хорошему, надо добавить этот демон (ndodb) в автозапуск, но чуть позже.
источник: http://en.doc.centreon.com/Setup:CompileNagiosPlugins и http://en.doc.centreon.com/Setup:CompileNagios и http://en.doc.centreon.com/Setup:ndoutils
Centreon - Nagios с удобным интерфейсом, конфигуратором и установкой!
Т.к. приведение Nagios в юзабельный вид задача не из простых, я решил найти альтернативу. И нашел - Centreon 2.1.4. А чем, собственно, он лучше, чем Nagios ? Вот этим: http://www.centreon.com/Centreon/product-overview.html
Но, вообще говоря, сравнивать их некорректно, т.к. Centreon построен на базе ядра Nagios. Так что если это сравнивать в более понятных сущностях, то Nagios - это двигатель Porsche, а Centreon - это сам Porsche :)
Так что это не более чем грамотно настроенный и с красивой мордочкой монстр Nagios.
Основные преимущества:
0. Красивый, удобный интерфейс, а не тот ужас, который у Nagios. Скриншоты
1. Управление через веб-интерфейс (в Nagios для этого надо редактировать конфиги, что suxx)
2. Служебные данные хранятся в MySQL, в то время как даныне мониторинга хранятся в очень оптимальном для этого формате - RRD.
3. Удобная настройка уведомлений на почту / sms.
Если кто уже рвется ставить, то вот ссылки на инсталляцию для Debian и CentOS: http://en.doc.centreon.com/Setup
Update: вопщем, радость была недолгой, очень неудобный и перегруженный интерфейс + жуткая установка.
Но, вообще говоря, сравнивать их некорректно, т.к. Centreon построен на базе ядра Nagios. Так что если это сравнивать в более понятных сущностях, то Nagios - это двигатель Porsche, а Centreon - это сам Porsche :)
Так что это не более чем грамотно настроенный и с красивой мордочкой монстр Nagios.
Основные преимущества:
0. Красивый, удобный интерфейс, а не тот ужас, который у Nagios. Скриншоты
1. Управление через веб-интерфейс (в Nagios для этого надо редактировать конфиги, что suxx)
2. Служебные данные хранятся в MySQL, в то время как даныне мониторинга хранятся в очень оптимальном для этого формате - RRD.
3. Удобная настройка уведомлений на почту / sms.
Если кто уже рвется ставить, то вот ссылки на инсталляцию для Debian и CentOS: http://en.doc.centreon.com/Setup
Update: вопщем, радость была недолгой, очень неудобный и перегруженный интерфейс + жуткая установка.
Установка Nagios 3.2 на CentOS 5 из исходников
В репозитории Epel Nagios слишком уж старый:
Поэтому поставим его из исходников:
Создаем юзера для Nagios:
Ставим зависимости:
Собираем:
Добавляем его в автозапуск:
Запускаем:
yum info nagios | grep Version
Version : 2.12
Поэтому поставим его из исходников:
cd /usr/src
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz
tar -xf nagios-3.2.0.tar.gz
cd nagios-3.2.0
Создаем юзера для Nagios:
useradd nagios
Ставим зависимости:
yum -y install gd-devel png-devel jpeg-devel
Собираем:
./configure --prefix=/opt/nagios32
make all
make install # ставим саму программу
make install-init # ставим init скрипт
make install-config # ставим конфиги Nagios
make install-webconf # ставим конфиг веб-интерфейса
Добавляем его в автозапуск:
chkconfig --add nagios
chkconfig nagios on
Запускаем:
/etc/init.d/nagios start
4 самых красивых веб-интерфейса к Nagios
1. http://www.centreon.com/ - протестировал, слишком сложная установка и перегруженный интерфейс.
2. http://www.lilacplatform.com/
3. http://www.nagiosql.org/demo.html
4. http://opsview.org
Via http://www.ducea.com/2008/01/16/10-nagios-web-frontends/
2. http://www.lilacplatform.com/
3. http://www.nagiosql.org/demo.html
4. http://opsview.org
Via http://www.ducea.com/2008/01/16/10-nagios-web-frontends/
Sunday, 17 January 2010
Sorry, but Nagios is currently not checking for external commands, so your command will not be committed!
Такая ошибка вылазит при попытке перепланировать следующую проверку сервиса.
Фиксица так:
Добавляем файлы (логики действа не понимаю, так что надо убедиться, как это делать парвильно):
Применяем:
(с) http://tutos.tangui.eu.org/22-nagios-currently-not-checking-external-commands
Фиксица так:
vi /etc/nagios3/nagios.cfg
check_external_commands=1
Добавляем файлы (логики действа не понимаю, так что надо убедиться, как это делать парвильно):
touch /var/lib/nagios3/rw/nagios.cmd
dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
chown nagios:www-data /var/lib/nagios3/rw/nagios.cmd
Применяем:
/etc/init.d/nagios3 restart
(с) http://tutos.tangui.eu.org/22-nagios-currently-not-checking-external-commands
Мониторинг панели VDSManager посредством Nagios
Открываем конфиг:
Там добавляем:
Теперь корректируем наш сервис:
Ну вот как-то так :)
vi /etc/nagios-plugins/config/http.cfg
Там добавляем:
define command {
command_name check_https_vdsmanager
command_line /usr/lib/nagios/plugins/check_http --ssl -H '$HOSTNAME$' -I '$HOSTADDRESS$' -u manager/vdsmgr
}
Теперь корректируем наш сервис:
define service {
hostgroup_name vznodes
service_description HTTPS ISPManager
check_command check_https_vdsmanager
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
Ну вот как-то так :)
Saturday, 16 January 2010
Установка Nagios на Debian 5 Lenny
Установка
Ставим сервер:
Добавляем в автозапуск:
Сразу же будет установлен веб-интерфейс, управляемый конфигом:
В веб-интерфейс можно попасть по адресу:
Но для доступа к нему необходимо создать файл паролей Апача:
Ну вот и все, мы имеем стандартно добавленную в мониторинг локальную машину.
Мониторинг удаленного http сервера
Переходим в папку с конфигом:
Пусть, наш сервер называется node1.ru входит в группу vznodes и имеет на себе только 1 сервис - http.
Открываем конфиг групп:
Открываем конфиг нового хоста:
Теперь создаем открываем файл со списком сервисов для хост-групп и добавляем туда:
Список всех доступных плагинов можете найти вот здесь:
Тестируем созданный конфиг:
Применяем:
источник: http://www.myelin.co.nz/post/2008/10/30/
Ставим сервер:
apt-get install -y nagios3
Добавляем в автозапуск:
update-rc.d nagios3 defaults
Сразу же будет установлен веб-интерфейс, управляемый конфигом:
/etc/apache2/conf.d/nagios3.conf
В веб-интерфейс можно попасть по адресу:
https://xx.xx.xx.xx/nagios3
Но для доступа к нему необходимо создать файл паролей Апача:
htpasswd -c /etc/nagios3/htpasswd.users nagiosadmin
Ну вот и все, мы имеем стандартно добавленную в мониторинг локальную машину.
Мониторинг удаленного http сервера
Переходим в папку с конфигом:
cd /etc/nagios3/conf.d
Пусть, наш сервер называется node1.ru входит в группу vznodes и имеет на себе только 1 сервис - http.
Открываем конфиг групп:
vi hostgroups_nagios2.cfg
define hostgroup {
hostgroup_name vznodes
#отображаемое имя
alias OpenVZ Servers
members node1.ru
}
Открываем конфиг нового хоста:
vi host-node1-ru.cfg
define host {
host_name node1.ru
alias OpenVZ Node1
address xx.xx.xx.xx
use generic-host
}
Теперь создаем открываем файл со списком сервисов для хост-групп и добавляем туда:
vi services_nagios2.cfg
define service {
hostgroup_name vznodes
service_description HTTPS Check
check_command check_https_hostname
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
Список всех доступных плагинов можете найти вот здесь:
ls -al /etc/nagios-plugins/config/
Тестируем созданный конфиг:
cd ..
nagios3 -v nagios.cfg
Применяем:
/etc/init.d/nginx restart
источник: http://www.myelin.co.nz/post/2008/10/30/
Subscribe to:
Posts
(
Atom
)