6 января 2013 г. Nagios php-fpm fcgiwrap Мониторинг Debian Linux

Debian. Установка и настройка мониторинга Nagios

В предыдущей статье я рассказывал как установить и настроить Nagios 3 под FreeBSD, но так как есть небольшие отличия для Debian, я решил описать их. В основном они связаны с установкой и настройкой php/cgi, а не настройками самого Nagios.

Предполагается, что у вас уже установлены git, nginx и wget.
А также какой-либо текстовой редактор, например emacs.

Обсуждаемая версия Nagios 3.2.1.

Установка

Нам надо установить "Nagios 3", "php5-fpm" и "fcgiwrap":

sudo apt-get update && apt-get upgrade
sudo apt-get install nagios3 php5-fpm

Не так давно я уже рассказывал как установить свежую версию fcgiwrap для Debian, в которой есть необходимые нам возможности:

sudo apt-get install libfcgi-dev autoconf2.13
cd ~/Downloads
git clone git://github.com/gnosek/fcgiwrap.git fcgiwrap
cd fcgiwrap
autoreconf -i
./configure 
make
sudo make install

Настройка fcgiwrap

После того как установили fcgiwrap, скопируйте себе init-скрипт и создайте каталог для unix-socket:

wget -O /etc/init.d/fcgiwrap http://adw0rd.com/files/fcgiwrap
mkdir /var/run/fcgiwrap
chown www-data:www-data /var/run/fcgiwrap/

Откройте на редактирование /etc/init.d/fcgiwrap, найдите FCGI_SOCKET и отредактируйте его:

FCGI_SOCKET="/var/run/$NAME/$NAME.socket"
#FCGI_PORT="8088"
#FCGI_ADDR="127.0.0.1"

Запустите его:

sudo /etc/init.d/fcgiwrap start

Настройка php5-fpm

Мой конфиг /etc/php5/fpm/pool.d/www.conf выглядил так:

[www]
user = www-data
group = www-data
listen = /var/run/php5/fpm.sock;
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
...

Запустите его:

sudo /etc/init.d/php5-fpm start

Настройка Nagios

Откройте на редактирование файл /etc/nagios3/cgi.cfg и найдите строку с "url_html_path", замените её на:

url_html_path=/

В остальном все конфиги идентичны тем, о которых я писал в предыдущей статье, главное помнить, что команды храняться в каталоге /etc/nagios-plugins/config/ и для добавления своих команд вы можете редактировать существующие файлы *.cfg или создавать свои.

/etc/nagios-plugins/config
├── apt.cfg
├── breeze.cfg
├── dhcp.cfg
├── disk.cfg
├── disk-smb.cfg
├── dns.cfg
├── dummy.cfg
├── flexlm.cfg
├── fping.cfg
├── ftp.cfg
├── games.cfg
├── hppjd.cfg
├── http.cfg
├── ifstatus.cfg
├── ldap.cfg
├── load.cfg
├── mail.cfg
├── mailq.cfg
├── mrtg.cfg
├── mysql.cfg
├── netware.cfg
├── news.cfg
├── nt.cfg
├── ntp.cfg
├── pgsql.cfg
├── ping.cfg
├── procs.cfg
├── radius.cfg
├── real.cfg
├── rpc-nfs.cfg
├── snmp.cfg
├── ssh.cfg
├── tcp_udp.cfg
├── telnet.cfg
└── users.cfg

Команды для оповещений (например для sms) надо определять в файле /etc/nagios3/commands.cfg.

/etc/nagios3
├── cgi.cfg
├── commands.cfg
├── conf.d
│   ├── contacts_nagios2.cfg
│   ├── extinfo_nagios2.cfg
│   ├── generic-host_nagios2.cfg
│   ├── generic-service_nagios2.cfg
│   ├── hostgroups_nagios2.cfg
│   ├── localhost_nagios2.cfg
│   ├── services_nagios2.cfg
│   └── timeperiods_nagios2.cfg
├── htpasswd.users
├── nagios.cfg
└── resource.cfg

Для настройки контактов, сервисов, хостов, и групп для всего этого, надо использовать каталог /etc/nagios3/conf.d, но я думаю вы и сами разберетесь.

Теперь запустите Nagios:

sudo /etc/init.d/nagios3 start

Настройка Nginx

Для того, чтобы проксировать веб-интерфейс Nagios через Nginx мы должны создать новый конфиг /etc/nginx/sites-available/nagios.conf:

server {
    listen 80;
    server_name nagios.example.org;
    auth_basic "Password, please!";
    auth_basic_user_file /path/to/htpasswd;
    root /usr/share/nagios3/htdocs;
    index index.php index.html;
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5/fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    location /stylesheets/ {
        alias /etc/nagios3/stylesheets/;
    }
    location ~ ^/cgi-bin/nagios3/.+\.cgi$ {
        rewrite ^/cgi-bin/nagios3/(.+\.cgi)$ /$1 break;
        root /usr/lib/cgi-bin/nagios3;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        # У нас свой htpasswd файл, в котором нет пользователя "nagiosadmin", но так как мы доверяем своему файлу,
        # то подменяем $remote_user с нашим пользователем на "nagiosadmin" чтобы Nagios не паниковал:
        fastcgi_param AUTH_USER "nagiosadmin";
        fastcgi_param REMOTE_USER "nagiosadmin";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Не забываем сгенерировать htpasswd:

# Создаем новый
htpasswd -cmb /path/to/htpasswd <username> <password>

# Или обновляем существующий
htpasswd -mb /path/to/htpasswd <username> <password>

Делаем симлинк на конфиг и перезагружаем Nginx:

sudo ln -s /etc/nginx/sites-available/nagios.conf /etc/nginx/sites-enabled/nagios.conf
sudo nginx -s reload

Что почитать?

Комментарии

Совет создать директорию для fcgiwrap.sock помог. Иначе файл создавался в /var/run с правами root:root, и Nagios выдавал ошибку 502. Bad gateway. Правда, когда я создавал директорию fcgiwrap в /var/run, при перезапуске системы она удалялась, поэтому создал ее прямо в /var, присвоил ей владельца www-data:www-data, и все заработало. Спасибо!

Оставьте свой комментарий

Markdown