Установка Nagios с nginx в CentOS

Установка Nagios с nginx в CentOS

И так, решил я значит написать статью и привести пример установки в виде bash скрипта. В самом конце, я приведу его.

Недавно, возникла необходимости установить nagios с использованием nginx. В своей статье «Установка Nagios с nginx в CentOS» я расскажу как можно это сделать.

Nagios — утилита для мониторинга серверов и сетей и служит для наблюдения разных состояний различных служб (может проверять место на вашем HDD, загрузку CPU, загрузку RAM, состояние сервера (dead/alive) через ICMP протокол). Данная программа показывает администратору какие службы прекращают (или возобновляют) свою работу.

Как работает nagios можно посмотреть на рисунке ниже:

Зачем нужен 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» завершена.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.