Установка Nagios на Fedora 17

Привет, эту статью я уже хотел написать давно. С Nagios у меня особые отношения, так как на протяжении всей моей Linux жизни, я работаю с ним. То я работал в саппорте и мониторил сервера, то будучи системным администратором устанавливал, настраивал и конфигурировал его. К слову сейчас у меня не было много времени на разборки с Nagios на уровне “А давай поковыряемся в конфигах в поисках инетересного” я делал проект, время мое было ограничено, а сделать нужно было качественно. К слову сейчас я по большей части имею дело с Fedora 17 & RHEL линуксами, Ubuntu & Debian только дома. Увы но так получается. В общем, как установить Nagios на Fedora 17 читайте под катом.

Установка

Установку можно проводить двумя способами:

  • Собирать из исходников
  • Поставить из репов

Я предпочитаю второй способ, дабы не нарушать целостность системы, не мешать апдейтам. Серверы с нажиосом всегда в MZ так что я могу обновлять их как мне хочется.

Установка из исходников

Сначала необходимо установить инструменты для компиляции gcc, glib, glibc-common, gd и gd-devel, а так же поставить веб сервер и добавить поддержку языка PHP:

su -l
yum -y install glibc glibc-common gcc gd gd-devel httpd php
su -l
yum -y install glibc glibc-common gcc gd gd-devel httpd php

Сразу хочу вас предупредить, не пытайтесь это делать на “чистой” поставке Fedora с исталяцией minimal. В такой системе нет даже tar & wget, так что вы в жизни нифига не закомпилите, а уже если так приспичило, то советую сразу после установки “чистой” minimal системы влипить туда Dev Tools:

yum -y groupinstall "Development Tools"
yum -y groupinstall "Development Tools"

Окей, теперь когда Dev Tools, компилятор, веб сервер и PHP на борту, замутим группу и юзера:
Делаем юзера и пароль:

useradd -m nagios 
passwd nagios
useradd -m nagios 
passwd nagios

Делаем группу и добавляем туда юзера:

groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache

Теперь когда все готово. Нужен сам Nagios:

cd ~
mkdir Downloads
cd Downloads
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.3.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz
cd ~
mkdir Downloads
cd Downloads
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.3.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz

Распаковывaем:

tar xvf nagios-3.4.3.tar.gz
tar xvf nagios-plugins-1.4.16.tar.gz
cd nagios
tar xvf nagios-3.4.3.tar.gz
tar xvf nagios-plugins-1.4.16.tar.gz
cd nagios

Начинаем собирать все докучи:

./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode

Это к слову веб интерфейс:

make install-webconf
make install-webconf

Делаем юзера уже в самом nagios:

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Помним, что конфигурационные файлы будут тут -> /usr/local/nagios/etc/objects/
Компилим плагины:

cd nagios-plugins
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
cd nagios-plugins
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

Теперь так:

systemctl enable httpd.service
systemctl start httpd.service
systemctl enable nagios.service
systemctl start nagios.service
systemctl enable httpd.service
systemctl start httpd.service
systemctl enable nagios.service
systemctl start nagios.service

Если все прошло без ошибок (а так оно и должно быть) то значит, что где-то тут http://localhost/nagios/ ваш nagios должен жить. Если есть вопросы, задавайте. Как по мне все просто дальше некуда.

Установка из репозиториев

Я ставил именно так, и так более правильно, быстрее, удобнее и нет головной боли с библиотеками при компиляции.

su -l
yum -y install glibc glibc-common gcc gd gd-devel httpd php
yum -y install nagios nagios-plugins-all
su -l
yum -y install glibc glibc-common gcc gd gd-devel httpd php
yum -y install nagios nagios-plugins-all

Оформляем запуск:

systemctl enable httpd.service
systemctl start httpd.service
systemctl enable nagios.service
systemctl start nagios.service
systemctl enable httpd.service
systemctl start httpd.service
systemctl enable nagios.service
systemctl start nagios.service

Делаем пароль для главного юзера:

htpasswd -c /etc/nagios/passwd nagiosadmin
htpasswd -c /etc/nagios/passwd nagiosadmin

Отключаем SELinux:

vi /etc/sysconfig/selinux
....
SELINUX=disabled
....
vi /etc/sysconfig/selinux
....
SELINUX=disabled
....

Чухаем сюда: http://localhost/nagios/
И проверяем, что все работает.

Конфигурационный файл Nagios:
/etc/nagios/nagios.cfg

Конфигурационные файлы хостов тут:
/etc/nagios/objects/

Если добавляете пользователя, то не забудьте насыпать ему прав:
/etc/nagios/cgi.cfg

Nagios будет отправлять алерты по E-mail, я предпочитаю POSTFIX:

yum -y install postfix.i686
systemctl enable postfix.service
systemctl start  postfix.service
yum -y install postfix.i686
systemctl enable postfix.service
systemctl start  postfix.service

Настройка производится тут:

vi /etc/postfix/main.cf
....
myhostname = mail.server.world
mydomain = server.world
myorigin = $mydomain
inet_protocols = ipv4
inet_interfaces = $myhostname
....
vi /etc/postfix/main.cf
....
myhostname = mail.server.world
mydomain = server.world
myorigin = $mydomain
inet_protocols = ipv4
inet_interfaces = $myhostname
....

Проверяем что с Sendmail:

systemctl status sendmail.service
systemctl stop sendmail.service
systemctl disable sendmail.service
systemctl status sendmail.service
systemctl stop sendmail.service
systemctl disable sendmail.service

Меняем MTA:

alternatives --config mta
There are 2 programs which provide 'mta'.
 
  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 2
alternatives --config mta
There are 2 programs which provide 'mta'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 2

Козе понятно меняем на второй пункт sendmail.postfix.
Ну в принципе и готово.
Осталось настроить чеки для хостов и сервисов и порядок.
Аа забыл, если есть IPTables:

-A INPUT -p tcp --dport 25 -j ACCEPT
-A INPUT -p tcp --dport 25 -j ACCEPT

Lля pop3:

iptables -I INPUT -p tcp --dport 110 -j ACCEPT
iptables -I INPUT -p tcp --dport 110 -j ACCEPT

Для IMAP:

iptables -I INPUT -p tcp --dport 993 -j ACCEPT
iptables -I INPUT -p tcp --dport 993 -j ACCEPT

В прочем сервак (POSTFIX) будет слушать localhost 25, так что настройка файрволла в нашем случае просто понты, так как Nagios тоже висит в пределах того же хоста, а значит Nagios будет посылать запрос отправить мыло на localhost 25, а тот без проблем уже его вышлет, так как это OUTPUT. А на OUTPUT файрвол обычно у нормальных людей открыт.

Смотрите, я не описывал как настраивать Nagios, так как устану писать, но в принципе вы можете глянуть вот эту статью, там речь идет именно о настройке и там же объясняют, что такое commands.cfg, contact.cfg, escalations.cfg, services.cfg и прочие. Удачи!