FastNetMon

Показаны сообщения с ярлыком Nagios. Показать все сообщения
Показаны сообщения с ярлыком Nagios. Показать все сообщения

среда, 29 сентября 2010 г.

Distributed Nagios eXecutorEnterprise

Масштабирование Nagios на тысячи узлов: http://dnx.sourceforge.net/

среда, 24 марта 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

Мануал пока не проверен, так что все на собственный страх и риск :)

понедельник, 22 марта 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

понедельник, 25 января 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/

воскресенье, 17 января 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/