Nagios

Nagios – про­грам­ма мони­то­рин­га ком­пью­тер­ных систем и сетей с откры­тым кодом. Пред­на­зна­че­на для наблю­де­ния, кон­тро­ля состо­я­ния вычис­ли­тель­ных узлов и служб, опо­ве­ща­ет адми­ни­стра­то­ра в том слу­чае, если какие-то из служб пре­кра­ща­ют (или воз­об­нов­ля­ют) свою работу

Thank you for reading this post, don't forget to subscribe! 

созда­ём домаш­нюю директорию
mkdir -p /var/www/nagios/{logs,site/nagios,php-cgi}
пере­хо­дим в неё

cd /var/www/nagios/

кача­ем nagios и плагины

ста­вим доп пакеты:

на

ac_default_prefix=/var/www/nagios/site/nagios

После чего собираем:

 

cp /etc/php.ini /var/www/nagios/php-cgi/

Доба­вим в файл:

/var/www/nagios/php-cgi/php.cgi
#!/bin/sh
PHPRC=/var/www/nagios/php-cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=500
exec /usr/bin/php-cgi

 

Кон­фиг апача: 

<VirtualHost *:8080>
ServerAdmin webmaster@nagios
DocumentRoot /var/www/nagios/site/nagios/share

ScriptAlias /nagios/cgi-bin "/var/www/nagios/site/nagios/sbin"
Alias /nagios "/var/www/nagios/site/nagios/share"

ServerName nagios.example.com
ServerAlias nagios.*
ErrorLog /var/www/nagios/logs/nagios.error.log
CustomLog /var/www/nagios/logs/nagios.access.log common
<IfModule mod_fcgid.c>
SuexecUserGroup nagios nagios
<Directory /var/www/nagios/site/nagios>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/nagios/php-cgi/php.cgi .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
</VirtualHost>

 

Кон­фиг nginx

server {
listen 80;
server_name nagios.*;
access_log /var/www/nagios/logs/nagios.nginx.access.log combined;
error_log /var/www/nagios/logs/nagios.nginx.error.log error;
client_max_body_size 20m;
location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|swf|js|html|htm|)$ {
root /var/www/nagios/site/nagios/share;
}
location / {
proxy_pass http://127.0.0.1:8080;

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
}
}

 

Так же добав­ля­ем в файл:
/var/www/nagios/site/nagios/.htaccess

AuthName "Nagios Access"
AuthType Basic
AuthUserFile /var/www/nagios/site/nagios/.htpasswd
require valid-user

 

Пере­за­пус­ка­ем сервисы:
/etc/init.d/nginx restart && /etc/init.d/httpd restart && /etc/init.d/nagios restart

Как настроить Nagios?

Это уже гораз­до инте­рес­нее. Есть несколь­ко типов кон­фи­гу­ра­ци­он­ных фай­лов. В слу­чае если Nagios ста­вил­ся из репозиториев:
Кон­фи­гу­ра­ци­он­ный файл само­го Nagios:
/etc/nagios/nagios.cfg

Кон­фи­гу­ра­ци­он­ные фай­лы хостов тут, новый хост = новый файл:
/etc/nagios/objects/

Если добав­ля­е­те поль­зо­ва­те­ля, то не забудь­те насы­пать ему прав:
/etc/nagios/cgi.cfg

в нашем случае

Най­ти файл толь­ко по назва­нию, быст­ро и про­сто помо­жет про­грам­ма locate:

В слу­чае если Nagios ста­вил­ся из исход­ных кодов вашей рабо­чей дирек­то­ри­ей будет:

Как добавить хост в Nagios?

Нуж­но начать с nagios.cfg. Важ­ные кон­фи­гу­ра­цин­ные файлы:


рас­ком­мен­ти­ру­ем её

Для каж­до­го ново­го хоста вы добав­ля­е­те кон­фи­гу­ра­ци­он­ный файл.

 

Добавление удалённого хоста

Установка nrpe на другой машинке

Для нача­ла ста­вим агент на машин­ке, КОТОРУЮ БУДЕМ мониторить.

yum -y install nrpe nagios-plugins

Редак­ти­ру­ем конфигурацию:

nano /etc/nagios/nrpe.cfg

allowed_hosts=127.0.0.1,192.168.0.1 #добав­ля­ем сер­вер с nagios, кото­ро­му мож­но мониторить 

Запус­ка­ем сервис

/etc/init.d/nrpe start

В авто­за­груз­ку его:

chkconfig nrpe on

____________________________________________________________________________

Ско­пи­ру­ем все пла­ги­ны с сервера:
scp root@192.168.1.180:/var/www/nagios/site/nagios/libexec/* /usr/lib/nagios/plugins/
(192.168.1.180) сер­вер на кото­ром уже уста­нов­лен нагиос и плагины
Далее редак­ти­ру­ем файл(на клиенте):
/etc/nagios/nrpe.cfg
добав­ля­ем команду:
command[check_load]=/usr/lib/nagios/plugins/check_load $HOSTADDRESS$ -r -w 2.0,1.8,1.5 -c 5.0,4.5,4.0

В коман­де check опция “-w” озна­ча­ет “Warning” и “-c” озна­ча­ет “Critical”.

(циф­ро­вые зна­че­ния соот­вет­ствен­но обо­зна­ча­ют овераж)

 

Теперь вер­нём­ся на основ­ную машин­ку и поста­вим нуж­ный плагин

yum -y install nagios-plugins-nrpe

Учи­ты­вая, что у нас место не совсем стан­дарт­ное уста­нов­ки nagios, про­сто ско­пи­ру­ем плагин

cp /usr/lib/nagios/plugins/check_nrpe /var/www/nagios/site/nagios/libexec/

Теперь редак­ти­ру­ем

nano /var/www/nagios/site/nagios/etc/objects/commands.cfg

define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Про­ве­рим зара­нее, всё ли ок. REMOTE_SERVER заме­ним на тот, кото­рый будем мони­то­рить. Например:

/var/www/nagios/site/nagios/libexec/check_nrpe -H REMOTE_SERVER -c check_hda1

 

Далее можем ско­пи­ро­вать файл
/var/www/nagios/site/nagios/etc/objects/localhost.cfg

в дирек­то­рию где будут хра­нить­ся фай­лы с опи­са­ни­ем хостов
/var/www/nagios/site/nagios/etc/servers/

cp /var/www/nagios/site/nagios/etc/objects/localhost.cfg  /var/www/nagios/site/nagios/etc/servers/
пере­име­но­вы­ва­ем:
mv /var/www/nagios/site/nagios/etc/servers/localhost.cfg /var/www/nagios/site/nagios/etc/servers/node1.cfg

 

Далее редак­ти­ру­ем дан­ный файл.

В раз­де­ле
define host{
ука­зы­ва­ем имя уда­лён­но­го хоста(host_name)

а так­же группу:
hostgroups              linux-servers

 

В гра­фе

address

ука­зы­ва­ем IP наше­го уда­лён­но­го сервера

 

В раз­де­лах define service{ host_name ука­зы­ва­ем тот что ука­за­ли в ранее в define host{

define hostgroup{  - удаляем

Для про­вер­ки нагруз­ки, service будет выгля­деть сле­ду­ю­щим образом:

define service{
use local-service
host_name vz.102---192.168.1.181
service_description Current Load
check_command check_nrpe!check_load!2.0,1.8,1.5!5.0,4.5,4.0
normal_check_interval 1
}

как видим от ори­ги­наль­но­го localhost.cfg отли­ча­ет­ся добав­ле­ни­ем check_nrpe!

 

После сохра­ня­ем файл и пере­за­пус­ка­ем nagios

 

 

 

Добавим в мониторинг Samba

#my $smbclient = $utils::PATH_TO_SMBCLIENT;
my $smbclient = "/usr/bin/smbclient";

В файл
/var/www/nagios/site/nagios/etc/objects/commands.cfg
добавим:

# ckeck samba
define command{
command_name check_disk_smb
command_line $USER1$/check_disk_smb -H $HOSTADDRESS$ $ARG1$
}
В файл

/var/www/nagios/site/nagios/etc/objects/localhost.cfg

доба­вим

define service{
use generic-service ; Name of service template to use
host_name localhost
service_description SAMBA
check_command check_disk_smb!-s MYFILES
normal_check_interval 1
}

 

стро­ка normal_check_interval 1 ука­зы­ва­ет как часто обнов­лять дан­ные (в минутах)

после чего пере­за­пус­ка­ем nagios
/etc/init.d/nagios restart

 

Добавим в мониторинг HTTP

Чекал­ка тут:

Так как апач у нас на пор­ту 8080 то в кон­фиг файл уда­лён­ной тачки:
/var/www/nagios/site/nagios/etc/servers/node1.cfg

доба­вим:
define service{
use local-service ; Name of service template to use
host_name node1
service_description HTTP
check_command check_http!-p 8080
notifications_enabled 0
}

 

В слу­чае ошибки:

"Похо­же, что у вас нет прав на про­смотр инфор­ма­ции по хостам, кото­рую вы запросили.
Если Вы пола­га­е­те, что это - ошиб­ка, про­верь­те аутен­ти­фи­ка­ци­он­ные настрой­ки досту­па к CGI-скрип­там HTTP-сер­ве­ра и про­верь­те опции авто­ри­за­ции в вашем кон­фи­гу­ра­ци­он­ном фай­ле CGI."

Эта предо­сто­рож­ность сде­ла­на из сооб­ра­же­ний без­опас­но­сти. Толь­ко авто­ри­зо­ван­ные поль­зо­ва­те­ли долж­ны иметь воз­мож­ность рабо­тать с интер­фей­сом Nagios. Аутен­ти­фи­ка­ция выпол­ня­ет­ся бра­у­зе­ром по мето­ду Basic HTTP Authentication (про­ще гово­ря, через .htaccess). Nagios берёт имя поль­зо­ва­те­ля, под кото­рым про­шёл аутен­ти­фи­ка­цию поль­зо­ва­тель, и нахо­дит сек­цию с соот­вет­ству­ю­щим contact_name в contacts.cfg. Отсю­да он узна­ёт, к каким раз­де­лам сай­та Nagios поль­зо­ва­тель име­ет доступ, а к каким — нет.