Nagios - програма моніторингу комп'ютерних систем і мереж з відкритим вихідним кодом. Призначена для спостереження, контролю стану обчислювальних вузлів і служб, сповіщає адміністратора в тому випадку, якщо якісь із служб припиняють (або відновлюють) свою роботу.
Nagios спочатку була створена під ім'ям Netsaint, розроблена Етаном Галстадом (англ. Ethan Galstad). Він же підтримує і розвиває систему сьогодні, спільно з командою розробників, які займаються як офіційними, так і неофіційними плагінами. Nagios має також і комерційний варіант Nagios XI із досить кругленькою вартістю.
Я якось писав про установку Nagios із репозиторіїв, проте час йде, а номер версії, що знаходиться в репозиторіях особливо не змінилась. Тому будемо встановлювати все із сирців, що завантажимо із сайту моніторингової системи. Спочатку розберемось із термінологією:
Nagios Core - дистрибутив моніторингової системи, тобто його безкоштовний варіант.
Nagios Plugins - плагіни для перевірки хостів, офіційний пакет доповнень (~60 штук); скрипти, що власне і слідкуватимуть за станом системи.
Nagios Remote Plugin Executor (NRPE) - програма, що надає можливість перевіряти віддалені хости. На сервері, що буде перевірятись має бути встановлено NRPE-сервер, що буде очікувати запити від NRPE-клієнта, котрий зазвичай знаходиться на хості з інсталяцією Nagios.
Для компіляції Nagios із сорців спершу необхідно встановити додаткові пакети:
Та додати користувача/групу від імені яких буде запускатись Nagios:
Завантажимо вихідні коди моніторингової системи та розпакуємо їх:
Переходимо в розпаковану директорію з Nagios та запускаємо конфігурацію перед компіляцією:
Опція '--prefix' задає диреторію, в котру потрапить зкомпільована програма. Всі можливі опції збирання можна переглянути наступним чином:
Якщо не вистачає певних пакетів - довстановлюємо.
Компілюємо:
# make all
...
*** Compile finished ***
If the main program and CGIs compiled without any errors, you
can continue with installing Nagios as follows (type 'make'
without any arguments for a list of all possible options):
# make all
...
make install
- This installs the main program, CGIs, and HTML files
make install-init
- This installs the init script in /etc/init.d
make install-commandmode
- This installs and configures permissions on the
directory for holding the external command file
make install-config
- This installs *SAMPLE* config files in /tmp/nagios
You'll have to modify these sample files before you can
use Nagios. Read the HTML documentation for more info
on doing this. Pay particular attention to the docs on
object configuration files, as they determine what/how
things get monitored!
make install-webconf
- This installs the Apache config file for the Nagios
web interface
make install-exfoliation
- This installs the Exfoliation theme for the Nagios
web interface
make install-classicui
- This installs the classic theme for the Nagios
web interface
...
Далі запускаємо по черзі все, що нам необхідно, виходячи із виводу попередньої команди:
Для компіляції Nagios із сорців спершу необхідно встановити додаткові пакети:
# apt-get install libperl-dev libpng12-dev libgd2-xpm-dev build-essential php5-gd wget libgd2-xpm libssl-dev
# adduser --system --no-create-home --disabled-login --group nagios
# groupadd nagcmd
# usermod -G nagcmd nagios
# usermod -a -G nagcmd www-data
Завантажимо вихідні коди моніторингової системи та розпакуємо їх:
# mkdir /opt/nagios
# cd /opt/nagios
# wget http://sourceforge.net/projects/nagios/files/nagios-4.x/nagios-4.0.3/nagios-4.0.3.tar.gz
# tar xvfz nagios-4.0.3.tar.gz
Переходимо в розпаковану директорію з Nagios та запускаємо конфігурацію перед компіляцією:
# сd nagios-4.0.3
# ./configure --prefix /opt/nagios/nagios \
--sysconfdir=/etc/nagios \
--with-nagios-user=nagios \
--with-nagios-group=nagios \
--with-command-user=nagios \
--with-command-group=nagcmd
...
*** Configuration summary for nagios 4.0.3 02-28-2014 ***:
General Options:
-------------------------
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagcmd
Event Broker: yes
Install ${prefix}: /opt/nagios/nagios
Install ${includedir}: /opt/nagios/nagios/include/nagios
Lock file: ${prefix}/var/nagios.lock
Check result directory: ${prefix}/var/spool/checkresults
Init directory: /etc/init.d
Apache conf.d directory: /etc/httpd/conf.d
Mail program: /usr/bin/mail
Host OS: linux-gnu
IOBroker Method: epoll
...
# ./configure --help
Якщо не вистачає певних пакетів - довстановлюємо.
Компілюємо:
# make all
...
*** Compile finished ***
If the main program and CGIs compiled without any errors, you
can continue with installing Nagios as follows (type 'make'
without any arguments for a list of all possible options):
# make all
...
make install
- This installs the main program, CGIs, and HTML files
make install-init
- This installs the init script in /etc/init.d
make install-commandmode
- This installs and configures permissions on the
directory for holding the external command file
make install-config
- This installs *SAMPLE* config files in /tmp/nagios
You'll have to modify these sample files before you can
use Nagios. Read the HTML documentation for more info
on doing this. Pay particular attention to the docs on
object configuration files, as they determine what/how
things get monitored!
make install-webconf
- This installs the Apache config file for the Nagios
web interface
make install-exfoliation
- This installs the Exfoliation theme for the Nagios
web interface
make install-classicui
- This installs the classic theme for the Nagios
web interface
...
Далі запускаємо по черзі все, що нам необхідно, виходячи із виводу попередньої команди:
# make install
# make install-init
# make install-config
# make install-commandmode
# make install-exfoliation
Конфігураційні файли для Apache нам не потрібні, адже у якості веб-серевера ми будемо користуватись Nginx+Php-fpm+Fcgiwrap. Exfoliation - досить гарна тема, особливо якщо її порівняти із стандартною.
Скачуємо і компілюємо Nagios Plugins:
# cd /opt/nagios
# wget http://nagios-plugins.org/download/nagios-plugins-2.0.tar.gz
# tar xvfz nagios-plugins-2.0.tar.gz
# cd nagios-plugins-2.0
# ./configure --with-nagios-user=nagios \
--with-nagios-group=nagios \
--prefix=/opt/nagios/nagios \
--with-openssl=/usr/bin/openssl
...
--with-apt-get-command: /usr/bin/apt-get
--with-ping6-command: /bin/ping6 -n -U -w %d -c %d %s
--with-ping-command: /bin/ping -n -U -w %d -c %d %s
--with-ipv6: yes
--with-mysql: no
--with-openssl: yes
--with-gnutls: no
--enable-extra-opts: yes
--with-perl: /usr/bin/perl
--enable-perl-modules: no
--with-cgiurl: /nagios/cgi-bin
--with-trusted-path: /bin:/sbin:/usr/bin:/usr/sbin
--enable-libtap: no
...
# make
# make install
Майже все, окрім NRPE-модуля. Виконуємо все майже аналогічно, проте попередньо необхідно створити посилання на бібліотеку libssl.so, інакше в процесі конфігурації виникне помилка:
# ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/libssl.so
# cd /opt/nagios
# wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
# tar xvfz nrpe-2.15.tar.gz
# cd nrpe-2.15
# ./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib
...
*** Configuration summary for nrpe 2.15 09-06-2013 ***:
General Options:
-------------------------
NRPE port: 5666
NRPE user: nagios
NRPE group: nagios
Nagios user: nagios
Nagios group: nagios
...
# make all
# cd /opt/nagios/nrpe-2.15/src
# cp check_nrpe nrpe /opt/nagios/nagios/libexec
# /etc/init.d/nagios start
/etc/init.d/nagios: 20: .: Can't open /etc/rc.d/init.d/functions
# vim /etc/init.d/nagios
...
prefix="/opt/nagios/nagios"
exec_prefix="${prefix}"
exec="${exec_prefix}/bin/nagios"
prog="nagios"
config="/etc/nagios/nagios.cfg"
pidfile="${prefix}/var/nagios.lock"
user="nagios"
group="nagios"
checkconfig="false"
ramdiskdir="/var/nagios/ramcache"
...
# chmod a+x ./hack4nagiosstart.sh
# ./hack4nagiosstart.sh
# apt-get install spawn-fcgi fcgiwrap nginx php5-fpm
# vim /etc/nginx/sites-available/nagios.conf
server {
server_name nagios.my.com;
access_log /var/log/nginx/nagios.access.log;
error_log /var/log/nginx/nagios.error.log;
auth_basic "Restricted Nagios Area!";
auth_basic_user_file /etc/nagios/htpasswd.users;
root /opt/nagios/nagios/share;
index index.php index.html;
location /nagios/stylesheets {
alias /opt/nagios/nagios/share/stylesheets/;
}
location /nagios/images {
alias /opt/nagios/nagios/share/images/;
}
location /nagios/js {
alias /opt/nagios/nagios/share/js/;
}
location ~ ^/nagios/(.*\.php)$ {
alias /opt/nagios/nagios/share/$1;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ \.cgi$ {
root /opt/nagios/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;
}
}
server {
server_name nagios.my.com;
access_log /var/log/nginx/nagios.access.log;
error_log /var/log/nginx/nagios.error.log;
auth_basic "Restricted Nagios Area!";
auth_basic_user_file /etc/nagios/htpasswd.users;
root /opt/nagios/nagios/share;
index index.php index.html;
location /nagios/stylesheets {
alias /opt/nagios/nagios/share/stylesheets/;
}
location /nagios/images {
alias /opt/nagios/nagios/share/images/;
}
location /nagios/js {
alias /opt/nagios/nagios/share/js/;
}
location ~ ^/nagios/(.*\.php)$ {
alias /opt/nagios/nagios/share/$1;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ \.cgi$ {
root /opt/nagios/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;
}
}
# ln -s /etc/nginx/sites-available/nagios.conf /etc/nginx/sites-enabled/nagios.conf
# service nginx restart
Також створюємо файл /etc/nagios/htpasswd.users із данними доступу:
# service nginx restart
Також створюємо файл /etc/nagios/htpasswd.users із данними доступу:
# cd /usr/local/bin
# wget http://trac.edgewall.org/export/10791/trunk/contrib/htpasswd.py
# chmod +x htpasswd.py
# htpasswd.py -c -b /etc/nagios/htpasswd.users nagiosadmin password
Вигляд вкладки 'Hosts':
Додамо декілька перевірок для віддаленого хосту mail.my.net. Для цього створимо і заповнимо конфігураційний файл:
# vim /etc/nagios/objects/mail.my.net.cfg
define host{
use linux-server
host_name mail.my.net
alias mail
address 1.2.3.4
}
define service{
use local-service
host_name mail.my.net
service_description IMAPS
check_command check_imap!-S -p 993
}
define service {
use generic-service
host_name mail.my.net
service_description Check Users
check_command check_nrpe!check_users!mail
}
Попередньо, варто заглянути до конфігураційних файлів опису програм check_command чи допускається саме такий опис виклику перевірок.
Конфігураційний файл mail.my.net.cfg надалі необхідно підключити в nagios.cfg і перевантажити Nagios:
# vim /etc/nagios/nagios.cfg
...
cfg_file=/etc/nagios/objects/mail.my.net.cfg
...
# service nagios restart
Звичайно, що на сервері mail.my.net (1.2.3.4) має бути встановлено nrpe-сервер, що буде приймати запити від nrpe-клієнту (що знаходиться на тому ж хості, що і Nagios). Встановимо його із репозиторіїв:
# aptitude install nagios-nrpe-server
І опишемо в конфіг-файлі необхідну команду разом із дозволом опитувати віддаланий хост із хосту Nagios:
# vim /etc/nagios/nrpe.cfg
...
allowed_hosts=127.0.0.1,1.2.3.4
...
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
...
# service nagios-nrpe-server restart
Тобто сервер через модуль check_nrpe викликає перевірку сheck_users, котра в свою чергу обов'язково має бути описана в конфігу nrpe-сервера на хості, що буде моніторитись.
Ось так виглядає хост, що був доданий:
Звісно, що тут дещо більше перевірок, ніж тих, що були наведені в прикладі вище:
Посилання:
Немає коментарів:
Дописати коментар