Translate

вівторок, 11 березня 2014 р.

Nagios 4 compile from sources (Debian Wheezy + Nginx)

Nagios - програма моніторингу комп'ютерних систем і мереж з відкритим вихідним кодом. Призначена для спостереження, контролю стану обчислювальних вузлів і служб, сповіщає адміністратора в тому випадку, якщо якісь із служб припиняють (або відновлюють) свою роботу. 
Nagios спочатку була створена під ім'ям Netsaint, розроблена Етаном Галстадом (англ. Ethan Galstad). Він же підтримує і розвиває систему сьогодні, спільно з командою розробників, які займаються як офіційними, так і неофіційними плагінами. Nagios має також і комерційний варіант Nagios XI із досить кругленькою вартістю.

Я якось писав про установку Nagios із репозиторіїв, проте час йде, а номер версії, що знаходиться в репозиторіях особливо не змінилась. Тому будемо встановлювати все із сирців, що завантажимо із сайту моніторингової системи. Спочатку розберемось із термінологією:

Nagios Core - дистрибутив моніторингової системи, тобто його безкоштовний варіант.

Nagios Plugins - плагіни для перевірки хостів, офіційний пакет доповнень (~60 штук); скрипти, що власне і слідкуватимуть за станом системи. 

Nagios Remote Plugin Executor (NRPE) - програма, що надає можливість перевіряти віддалені хости. На сервері, що буде перевірятись має бути встановлено NRPE-сервер, що буде очікувати запити від NRPE-клієнта, котрий зазвичай знаходиться на хості з інсталяцією Nagios.

Для компіляції Nagios із сорців спершу необхідно встановити додаткові пакети:

# apt-get install libperl-dev libpng12-dev libgd2-xpm-dev build-essential php5-gd wget libgd2-xpm libssl-dev

Та додати користувача/групу від імені яких буде запускатись Nagios:

# adduser --system --no-create-home --disabled-login --group nagios
# groupadd nagcmd
# usermod -G nagcmd nagios
# usermod -a -G nagcmd www-data

Завантажимо вихідні коди моніторингової системи та розпакуємо їх:

# mkdir /opt/nagios
# cd /opt/nagios
# wget http://sourceforge.net/projects/nagios/files/nagios-4.x/nagios-4.0.3/nagios-4.0.3.tar.gz
# tar xvfz nagios-4.0.3.tar.gz

Переходимо в розпаковану директорію з Nagios та запускаємо конфігурацію перед компіляцією:

# сd nagios-4.0.3
# ./configure --prefix /opt/nagios/nagios \
--sysconfdir=/etc/nagios \
--with-nagios-user=nagios \
--with-nagios-group=nagios \
--with-command-user=nagios \
--with-command-group=nagcmd
...
*** Configuration summary for nagios 4.0.3 02-28-2014 ***:

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagcmd
             Event Broker:  yes
        Install ${prefix}:  /opt/nagios/nagios
    Install ${includedir}:  /opt/nagios/nagios/include/nagios
                Lock file:  ${prefix}/var/nagios.lock
   Check result directory:  ${prefix}/var/spool/checkresults
           Init directory:  /etc/init.d
  Apache conf.d directory:  /etc/httpd/conf.d
             Mail program:  /usr/bin/mail
                  Host OS:  linux-gnu
          IOBroker Method:  epoll
...

Опція '--prefix' задає диреторію, в котру потрапить зкомпільована програма. Всі можливі опції збирання можна переглянути наступним чином:

# ./configure --help

Якщо не вистачає певних пакетів - довстановлюємо.
Компілюємо:

# make all
...
*** Compile finished ***

If the main program and CGIs compiled without any errors, you
can continue with installing Nagios as follows (type 'make'
without any arguments for a list of all possible options):

# make all 
...
  make install
     - This installs the main program, CGIs, and HTML files

  make install-init
     - This installs the init script in /etc/init.d

  make install-commandmode
     - This installs and configures permissions on the
       directory for holding the external command file

  make install-config
     - This installs *SAMPLE* config files in /tmp/nagios
       You'll have to modify these sample files before you can
       use Nagios.  Read the HTML documentation for more info
       on doing this.  Pay particular attention to the docs on
       object configuration files, as they determine what/how
       things get monitored!

  make install-webconf
     - This installs the Apache config file for the Nagios
       web interface

  make install-exfoliation
     - This installs the Exfoliation theme for the Nagios
       web interface

  make install-classicui
     - This installs the classic theme for the Nagios
       web interface
...

Далі запускаємо по черзі все, що нам необхідно, виходячи із виводу попередньої команди:

# make install
# make install-init
# make install-config
# make install-commandmode
# make install-exfoliation

Конфігураційні файли для Apache нам не потрібні, адже у якості веб-серевера ми будемо користуватись Nginx+Php-fpm+Fcgiwrap. Exfoliation - досить гарна тема, особливо якщо її порівняти із стандартною. 

Скачуємо і компілюємо Nagios Plugins:

# cd /opt/nagios
# wget http://nagios-plugins.org/download/nagios-plugins-2.0.tar.gz
# tar xvfz nagios-plugins-2.0.tar.gz
# cd nagios-plugins-2.0
# ./configure --with-nagios-user=nagios \
--with-nagios-group=nagios \
--prefix=/opt/nagios/nagios \
--with-openssl=/usr/bin/openssl
...
            --with-apt-get-command: /usr/bin/apt-get
              --with-ping6-command: /bin/ping6 -n -U -w %d -c %d %s
               --with-ping-command: /bin/ping -n -U -w %d -c %d %s
                       --with-ipv6: yes
                      --with-mysql: no
                    --with-openssl: yes
                     --with-gnutls: no
               --enable-extra-opts: yes
                       --with-perl: /usr/bin/perl
             --enable-perl-modules: no
                     --with-cgiurl: /nagios/cgi-bin
               --with-trusted-path: /bin:/sbin:/usr/bin:/usr/sbin
                   --enable-libtap: no
...
# make
# make install

Врешті-решт плагіни перевірок для Nagios будуть встановлені в директорію /opt/nagios/nagios/libexec.

Майже все, окрім NRPE-модуля. Виконуємо все майже аналогічно, проте попередньо необхідно створити посилання на бібліотеку libssl.so, інакше в процесі конфігурації виникне помилка:

# ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/libssl.so

# cd /opt/nagios
# wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
# tar xvfz nrpe-2.15.tar.gz
# cd nrpe-2.15
# ./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib 
...
*** Configuration summary for nrpe 2.15 09-06-2013 ***:

 General Options:
 -------------------------
 NRPE port:    5666
 NRPE user:    nagios
 NRPE group:   nagios
 Nagios user:  nagios
 Nagios group: nagios
...

# make all

Скопіюємо nrpe-модуль в директорію із Nagios plugins:

# cd /opt/nagios/nrpe-2.15/src
# cp check_nrpe nrpe /opt/nagios/nagios/libexec

У мене Nagios не захотів стартувати через невірний init.d скрипт, що встановив 'make install-init':

# /etc/init.d/nagios start

/etc/init.d/nagios: 20: .: Can't open /etc/rc.d/init.d/functions

Тому перевіряємо чи правильно вказані змінні на початку:

# vim /etc/init.d/nagios
...
prefix="/opt/nagios/nagios"
exec_prefix="${prefix}"
exec="${exec_prefix}/bin/nagios"
prog="nagios"
config="/etc/nagios/nagios.cfg"
pidfile="${prefix}/var/nagios.lock"
user="nagios"
group="nagios"
checkconfig="false"
ramdiskdir="/var/nagios/ramcache"
...


Та запускаємо скрипт, що вирішить ці проблеми:

# wget https://raw.github.com/nicolargo/nagiosautoinstall/master/hack4nagiosstart.sh
# chmod a+x ./hack4nagiosstart.sh
# ./hack4nagiosstart.sh


Наразі необхідно встановити Nginx і всі необхідні модулі для його роботи. Зазвичай у якості веб-сервера для Nagios пропонують встановлювати Apache і можливо саме цього вам буде більш ніж достатньо, адже можливість великих навантажень на моніторингову систему важко уявити.

# apt-get install spawn-fcgi fcgiwrap nginx php5-fpm

Конфігураційний файл виглядає наступним чином:

# vim /etc/nginx/sites-available/nagios.conf

server {

  server_name nagios.my.com;

  access_log /var/log/nginx/nagios.access.log;
  error_log /var/log/nginx/nagios.error.log;

  auth_basic            "Restricted Nagios Area!";
  auth_basic_user_file  /etc/nagios/htpasswd.users;

  root /opt/nagios/nagios/share;
  index index.php index.html; 

  location /nagios/stylesheets {
    alias /opt/nagios/nagios/share/stylesheets/;
  }

  location /nagios/images {
    alias /opt/nagios/nagios/share/images/;
  }

  location /nagios/js {
    alias /opt/nagios/nagios/share/js/;
  }

  location ~ ^/nagios/(.*\.php)$ {
    alias /opt/nagios/nagios/share/$1;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
  }

  location ~ \.cgi$ {
    root /opt/nagios/nagios/sbin/;
    rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
    fastcgi_param AUTH_USER $remote_user;
    fastcgi_param REMOTE_USER $remote_user;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/run/fcgiwrap.socket;
  }

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
  }
}


Активуємо його та перезавантажуємо nginx:

# ln -s /etc/nginx/sites-available/nagios.conf /etc/nginx/sites-enabled/nagios.conf
# service nginx restart


Також створюємо файл /etc/nagios/htpasswd.users із данними доступу:

# cd /usr/local/bin
# wget http://trac.edgewall.org/export/10791/trunk/contrib/htpasswd.py
# chmod +x htpasswd.py
# htpasswd.py -c -b /etc/nagios/htpasswd.users nagiosadmin password

Nagios виглядає наступним чином, основна панель:


Вкладка: 'Tactical Overview'


Вигляд вкладки 'Hosts':



Додамо декілька перевірок для віддаленого хосту mail.my.net. Для цього створимо і заповнимо конфігураційний файл:

# vim /etc/nagios/objects/mail.my.net.cfg
define host{
        use                     linux-server
        host_name               mail.my.net
        alias                   mail
        address                 1.2.3.4
        }
define service{
        use                             local-service
        host_name                       mail.my.net
        service_description             IMAPS
        check_command                   check_imap!-S -p 993
}

define service {
        use                             generic-service
        host_name                       mail.my.net
        service_description             Check Users
        check_command                   check_nrpe!check_users!mail
}

Попередньо, варто заглянути до конфігураційних файлів опису програм check_command чи допускається саме такий опис виклику перевірок.

Конфігураційний файл mail.my.net.cfg надалі необхідно підключити в nagios.cfg і перевантажити Nagios:

# vim /etc/nagios/nagios.cfg
...
cfg_file=/etc/nagios/objects/mail.my.net.cfg
...
# service nagios restart

Звичайно, що на сервері mail.my.net (1.2.3.4) має бути встановлено nrpe-сервер, що буде приймати запити від nrpe-клієнту (що знаходиться на тому ж хості, що і Nagios). Встановимо його із репозиторіїв:

# aptitude install nagios-nrpe-server

І опишемо в конфіг-файлі необхідну команду разом із дозволом опитувати віддаланий хост із хосту Nagios:

# vim /etc/nagios/nrpe.cfg
...
allowed_hosts=127.0.0.1,1.2.3.4
...
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
...

# service nagios-nrpe-server restart

Тобто сервер через модуль check_nrpe викликає перевірку сheck_users, котра в свою чергу обов'язково має бути описана в конфігу nrpe-сервера на хості, що буде моніторитись.

Ось так виглядає хост, що був доданий:


Звісно, що тут дещо більше перевірок, ніж тих, що були наведені в прикладі вище:



Посилання:

Немає коментарів:

Дописати коментар