
Установка Nagios с nginx в CentOS
И так, решил я значит написать статью и привести пример установки в виде bash скрипта. В самом конце, я приведу его.
Недавно, возникла необходимости установить nagios с использованием nginx. В своей статье «Установка Nagios с nginx в CentOS» я расскажу как можно это сделать.
Nagios — утилита для мониторинга серверов и сетей и служит для наблюдения разных состояний различных служб (может проверять место на вашем HDD, загрузку CPU, загрузку RAM, состояние сервера (dead/alive) через ICMP протокол). Данная программа показывает администратору какие службы прекращают (или возобновляют) свою работу.
Как работает nagios можно посмотреть на рисунке ниже:

Зачем нужен Nagios
Установка nginx в CentOS
И так, начнем с nginx, чтобы установить его, выполните:
# yum install nginx php php-fpm php-common gcc glibc glibc-common gd gd-devel make net-snmp unzip
Приведу конфиг nginx для nagios. Настроим его сейчас.
Настройка NGINX
Создаём файл /etc/nginx/conf.d/nagios.conf:
server { listen 80; server_name nagios_local; access_log /var/log/nginx/nagios-access.log; error_log /var/log/nginx/nagios-error.log info; root /usr/local/nagios/share; index index.php; auth_basic "Nagios Restricted Access"; auth_basic_user_file /usr/local/nagios/passwd; location /stylesheets { alias /usr/local/nagios/share/stylesheets; } location ~ .cgi$ { root /usr/local/nagios/sbin/; include fastcgi_params; rewrite ^/nagios/cgi-bin/(.*).cgi /$1.cgi break; fastcgi_param AUTH_USER $remote_user; fastcgi_param REMOTE_USER $remote_user; fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin/$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; } location ~ .php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/nagios.socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nagios/share$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; } location ~ (.*.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf))$ { root /usr/local/nagios/share/; rewrite ^/nagios/(.*) /$1 break; access_log off; expires max; } }
Можно переименовать стандартный конфиг:
# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/conf.d/default.conf_back
Проверяем все ли в конфиге работает:
# nginx -t
Запускаем web-сервер:
Для CentOS 5/6:
# service nginx restart
Для CentOS 7:
# systemctl restart nginx.service
Добавляем его в автозагрузку ОС:
# chkconfig nginx on
Или (CentOS 7):
# systemctl enable nginx.service
Проверим, появился ли он в автозагрузке:
# chkconfig --list nginx
IPtables
Так же, можно добавить правило (проброс 80-го порта) в IPtables:
# iptables -I INPUT 2 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
Сохраняем все настройки:
# service iptables save
Настройка PHP-FPM
И так, займемся настройкой PHP для Nagios. Открываем файл:
# vim /etc/php-fpm.d/nagios.conf
И приводим к такому виду:
[nagios] ;listen = 127.0.0.1:9000 listen = /var/run/php-fpm/nagios.socket listen.owner = nginx listen.group = nginx listen.mode=0660 listen.allowed_clients = 127.0.0.1 user = nagios group = nagios pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 ;request_slowlog_timeout = 0 slowlog = /var/log/php-fpm/www-slow.log ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com php_flag[display_errors] = on php_admin_value[error_log] = /var/log/php-fpm/nagios-error.log php_admin_flag[log_errors] = on ;php_admin_value[memory_limit] = 128M php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session
Запускаем php-fpm службу:
# service php-fpm start
Или для CentOS 7:
# systemctl restart php-fpm
Добавляем php-fpm в автозагрузку ОС:
# chkconfig php-fpm on
Или (CentOS 7):
# systemctl enable php-fpm.service
Установка Nagios в CentOS
Для начала, создаем пользователя и группу для него:
# adduser --system --no-create-home nagios
Для CentOS 7 создать пользователя можно так:
# useradd nagios
Можно проверить, нормально ли все с группой:
# cat /etc/group | grep nagios
Можно проверить, нормально ли все с пользователем:
# cat /etc/shadow | grep nagios
Добавим nginx юзера в nagios группу:
# usermod -G nagios nginx
Далее, необходимо скачать nagios (на момент написания статьи, был самой последней версии):
# cd /usr/local/src && wget http://liquidtelecom.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.1.1/nagios-4.1.1.tar.gz && gunzip nagios-4* && tar xvf nagios-4*
Компилируем Nagios и устанавливаем его:
# rm -f /usr/local/src/nagios-4.1.1.tar && cd nagios-4* && ./configure && make all && make install && make install-init && make install-config && make install-commandmode && make install-webconf
Проверим конфигурацию:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg ... Total Warnings: 0 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check
Nagios выполнит установку в /usr/local/nagios, по этому, проверим так ли это:
# ls -l /usr/local/nagios/
Установим все плагины для работы:
# yum install nagios-plugins-all
Так же, подключаем их:
# rm -rf /usr/local/nagios/libexec # ln -s /usr/lib64/nagios/plugins /usr/local/nagios/libexec # chown -R nagios:nagios /usr/local/nagios/libexec
Стартуем Nagios службу:
# service nagios restart
Или (CentOS 7):
# systemctl restart nagios
Добавляем в автозапуск ОС:
# chkconfig nagios on
CentOS 7:
# chkconfig --add nagios
Для более надежного использования, я буду использовать 2-ю авторизацию, по этому, создаю пароль для юзера (для HTTP-авторизации):
# htpasswd -c /usr/local/nagios/passwd nagiosadmin
Делаем симлинки:
# mkdir /usr/local/nagios/share/nagios # cd /usr/local/nagios/share/nagios/ # ln -s /usr/local/nagios/share/stylesheets/ stylesheets # ln -s /usr/local/nagios/share/js js # ls -l
Установка spawn-fcgi и fcgiwrap
Выполняем установку некоторых утилит:
# yum groupinstall 'Development Tools' # yum install fcgi-devel spawn-fcgi
Загружаем fciwrap и компилируем его:
# cd /usr/local/src/ && git clone https://github.com/gnosek/fcgiwrap.git && cd fcgiwrap && autoreconf -i && ./configure && make && make install
Выполняем проверку и убеждаемся что все ОК:
# file /usr/local/sbin/fcgiwrap /usr/local/sbin/fcgiwrap: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
Отредактируем файл:
# vim /etc/sysconfig/spawn-fcg
Прописываем следующий текст:
FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=nginx FCGI_GROUP=nginx FCGI_EXTRA_OPTIONS="-M 0700" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM"
Запускаем службу spqwn-fcgi:
# service spawn-fcgi start
Или:
# systemctl start spawn-fcgi
И так же, пропишим его в автозапуск ОС:
# chkconfig spawn-fcgi on
Или:
# chkconfig --add spawn-fcgi
И последнее, проверим создался ли сокет файл:
# file /var/run/fcgiwrap.socket /var/run/fcgiwrap.socket: socket
ВСЕ! Открываем nagios и приступаем к работе. Я в своей следующей статье расскажу как устанавливать nagios-client на Unix/Linux ОС.
PS: Для самых ленивых, я создал bash скрипт c установкой всего и в автоматическом режиме. По этому, делюсь:
# cd /usr/local/src && wget http://linux-notes.org/wp-content/uploads/scripts/nagios/Install_Nagios_RPM.sh && bash Install_Nagios_RPM.sh
Тестировался на CentOS 6/7.
А на этой, у меня уже все, тема «Установка Nagios с nginx в CentOS» завершена.