Nagios: NGINX + PHP-FPM — установка на CentOS 6

Автор: | 07/24/2015
 

nagios_logoСистема:

# cat /etc/redhat-release
CentOS release 6.5 (Final)

Установка NGINX + PHP-FPM

Устанавливаем:

# yum install nginx php php-fpm php-common gcc glibc glibc-common gd gd-devel make net-snmp unzip

Выключаем (не удаляем) Apache HTTP:

# service httpd status
httpd is stopped
# chkconfig httpd off
# chkconfig --list httpd
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

Запускаем NGINX:

# service nginx start
Starting nginx:                                            [  OK  ]
# chkconfig nginx on
# chkconfig --list nginx
nginx           0:off   1:off   2:on    3:on    4:on    5:on    6:off

Открываем порт в IPTABLES:

# iptables -I INPUT 2 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

Проверяем:

nagios_install_centos_7_1

 

Установка и настройка Nagios

Важно: у Nagios 3.5 есть проблемы при работе с NGINX. Поэтому – будем устанавливать 4.

Находим тут>>> последнюю версию (на момент написания – это была 4.1), качаем:

# cd /tmp/
# wget http://downloads.sourceforge.net/project/nagios/nagios-4.x/nagios-4.1.0/nagios-4.1.0rc1.tar.gz
# tar xfp nagios-4.1.0rc1.tar.gz

Создаём пользователя и группу:

# adduser --system --no-create-home nagios
# cat /etc/group | grep nagios
nagios:x:497:
 # cat /etc/shadow | grep nagios
nagios:!!:16622::::::

Добавляем пользователя nginx в группу nagios:

# usermod -G nagios nginx

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

# cd nagios-4.1.0rc1
# ./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/
total 24
drwxrwxr-x  2 nagios nagios 4096 Jul  6 09:08 bin
drwxrwxr-x  3 nagios nagios 4096 Jul  6 09:08 etc
drwxrwxr-x  2 nagios nagios 4096 Jul  6 09:08 libexec
drwxrwxr-x  2 nagios nagios 4096 Jul  6 09:08 sbin
drwxrwxr-x 14 nagios nagios 4096 Jul  6 09:08 share
drwxrwxr-x  5 nagios nagios 4096 Jul  6 09:10 var

Устанавливаем плагины:

# 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 start
Starting nagios: done.

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

# chkconfig --add nagios

Создаём пользователя и пароль для HTTP-авторизации:

# htpasswd -c /usr/local/nagios/passwd nagiosadmin
New password:
Re-type new password:
Adding password for user 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
total 0
lrwxrwxrwx 1 root root 26 Jul  6 09:15 js -> /usr/local/nagios/share/js
lrwxrwxrwx 1 root root 36 Jul  6 09:15 stylesheets -> /usr/local/nagios/share/stylesheets/

Настройка PHP-FPM

Создаём файл настроек PHP для Nagios – /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

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

# service php-fpm start
Starting php-fpm:                                          [  OK  ]
# chkconfig php-fpm on
# file /var/run/php-fpm/nagios.socket
/var/run/php-fpm/nagios.socket: socket

Установка spawn-fcgi и fcgiwrap

Т.к. fciwrap в репозиториях нет — устанавливаем вручную:

# yum groupinstall 'Development Tools'
# yum install fcgi-devel spawn-fcgi

Загружаем и собираем его:

# cd /usr/local/src/
# git clone git://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

Редактируем файл /etc/sysconfig/spawn-fcgi и приводим его к такому виду:

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"

Запускаем его:

# service spawn-fcgi start
Starting spawn-fcgi:                                       [  OK  ]
# chkconfig spawn-fcgi on

Проверяем, что бы появился файл сокета:

# file /var/run/fcgiwrap.socket
/var/run/fcgiwrap.socket: socket

Настройка NGINX

Создаём файл /etc/nginx/conf.d/nagios.conf:

server {
        listen   80;
        server_name  52.***.***.174;

        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;
        }

}

Убираем файл /etc/nginx/conf.d/default.conf:

# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/conf.d/default.conf.bkp

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

# 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
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]

nagios_install_centos_7_2