FastNetMon

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 не получилось.

А не получилось по вот такой причине:

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


После такой замены все успешно соберется :)

nrpe и передача сообщений длиннее 1024 байт

В процессе работы с nrpe обнаружил у него фичу - если выдача запускаемой на удаленной машине команды больше 1024 байт, то выдача усекается до 1024 байт вне зависимости от полной длины. Меня, разумеется, такой расклад не устраивает - мне надо увеличить это значение хотя бы вдесятеро, до 10240 байт.

За этот [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
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

Сборка Nagios 3.2 на Debian 5 из исходников

Установка Nagios

Ставим Апача:

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: вопщем, радость была недолгой, очень неудобный и перегруженный интерфейс + жуткая установка.

Установка Nagios 3.2 на CentOS 5 из исходников

В репозитории Epel 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/

Sunday, 17 January 2010

Sorry, but Nagios is currently not checking for external commands, so your command will not be committed!

Такая ошибка вылазит при попытке перепланировать следующую проверку сервиса.

Фиксица так:
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
}


Ну вот как-то так :)

Установка Nagios на Debian 5 Lenny

Установка

Ставим сервер:
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/