Nagios: установка на Ubuntu 14 + NGINX + PHP-FPM + FastCGI

By | 03/22/2016
 

nagios_logoУстановка Nagios

Устнавливаем необходимые пакеты:

# apt-get install nginx php5 php5-fpm unzip spawn-fcgi fcgiwrap build-essential libgd2-xpm-dev apache2-utils

Проверяем NGINX:

# service nginx status
 * nginx is running
# curl localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...

Добавляем пользователя и группу, под которыми будет работать Nagios:

# adduser --system --no-create-home --disabled-login --group nagios
create group for webui and add users www-data and nagios to it
# groupadd nagcmd
# usermod -a -G nagcmd nagios
# usermod -a -G nagcmd www-data

На странице загрузок Nagios находим последнюю версию (Core DIY). Кликаем на маленькую серую ссылку “Skip to download“, что бы не заполнять анкету и получить ссылку на архив.

Загружаем:

# cd /tmp/
# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz
# tar xfp nagios-4.1.1.tar.gz
# cd nagios-4.1.1/

Собираем и устанавливаем:

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

Добавляем логгирование:

# mkdir /var/log/nagios
# chown nagios:nagios /var/log/nagios

В файле /usr/local/nagios/etc/nagios.cfg указываем путь к файлу лога:

log_file=/var/log/nagios/nagios.log

Установка плагинов

Загружаем архив с плагинами отсюда>>>:

# cd /tmp/
# wget http://www.nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz
# tar xfp nagios-plugins-2.1.1.tar.gz
# cd nagios-plugins-2.1.1/

Собираем и устанавливаем:

# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install

Обновляем группу для каталога /usr/local/nagios/libexec/:

# chgrp www-data /usr/local/nagios/libexec/*

Добавляем автозапуск:

# update-rc.d -f nagios defaults

Проверяем конфиги:

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

В случае ошибок вида:

...
Checking misc settings...
	Error: Unable to write to check_result_path ('/usr/local/nagios/var/spool/checkresults') - Permission denied
...

Обновите пользователя/группу:

# chown -R nagios:nagios /usr/local/nagios/

Запускаем, проверяем:

# service nagios start
Starting nagios: done.
# service nagios status
nagios (pid 32638) is running...

В случае ошибки вида:

Error: Could not open command file ‘/usr/local/nagios/var/rw/nagios.cmd’ for update!

Обновляем группу:

# chgrp www-data /usr/local/nagios/var/rw
# service nagios restart
Running configuration check...
Stopping nagios: done.
Starting nagios: done.

Настройка веб-интерфейса Nagios

Проверяем службы:

# ps aux | grep cgi
www-data 14068  0.0  0.0  12740   452 ?        Ss   10:08   0:00 /usr/sbin/fcgiwrap -f
# ps aux | grep fpm
root      3152  0.0  2.5 133628 12572 ?        Ss   09:37   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data  3156  0.0  0.7 133628  3740 ?        S    09:37   0:00 php-fpm: pool www
www-data  3157  0.0  0.7 133628  3744 ?        S    09:37   0:00 php-fpm: pool www

Закрываем доступ паролем:

# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin

Добавляем конфиг NGINX /etc/nginx/conf.d/nagios.conf:

server {

    listen 80;
    server_name nagios.local;
    access_log /var/log/nginx/nagios.local-access.log;
    error_log /var/log/nginx/nagios.local-error.log;

    auth_basic "Private";
    auth_basic_user_file /usr/local/nagios/etc/htpasswd.users;

    root /usr/local/nagios/share/;
    index index.php index.html;

    location / {
        try_files $uri $uri/ index.php /nagios;
    }

    location /nagios {
        alias /usr/local/nagios/share;
    }

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

    location ~ \.cgi$ {
            root /usr/local/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;
      }
}

Создаем симлинк в sites-enabled:

# ln -s /etc/nginx/conf.d/nagios.conf /etc/nginx/sites-enabled/

Проверяем и перезапускаем NGINX:

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# service nginx restart
 * Restarting nginx nginx

Т.к. этот Nagios запущен в Vagrant-боксе – надо добавить имя хоста:

$ sudo bash -c "echo '10.11.100.37 nagios.local' >> /etc/hosts"

И проверяем в браузере:
naga_1


  • Leo
     

    Привет, спасибо за мануал.
    Сделал все в точности как описано, но на удаленном сервере.
    Захожу по адресу, созданного хоста, прохожу http аутентификацию – пустая страница со статусом 200 ОК.
    Отличия – php7.0-fpm (пути проверил и заменил, все ок), Ubuntu 16.04 (думаю, в даном случае резницы быть не должно).
    Error логи пустые – как домена, так и нагиоса.
    Куда копать, что проверить?
    Подскажите, пожалуйста.
    Спасибо.