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 и плагины
1 2 3 4 |
<strong><span class="kw2">wget</span> http:<span class="sy0">//</span>prdownloads.sourceforge.net<span class="sy0">/</span>sourceforge<span class="sy0">/</span>nagios<span class="sy0">/</span>nagios-4.0.2.tar.gz <span class="kw2">wget</span> http:<span class="sy0">//</span>assets.nagios.com<span class="sy0">/</span>downloads<span class="sy0">/</span>nagiosplugins<span class="sy0">/</span>nagios-plugins-<span class="nu0">1.5</span>.tar.gz</strong> распаковываем |
1 |
<strong><span class="kw2">tar</span> xvf nagios-4.0.2.tar.gz && <span class="kw2">tar</span> xvf nagios-plugins-<span class="nu0">1.5</span>.tar.gz</strong> |
ставим доп пакеты:
1 2 3 4 5 6 7 |
<strong><span class="kw2">yum groupinstall</span> <span class="st_h">'Development tools'</span> yum install gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils gd gd-devel httpd php perl-Net-SNMP yum install nagios-plugins-nrpe nrpe /etc/init.d/nrpe start chkconfig nrpe on</strong> Добавим пользователя |
1 2 3 |
<strong>useradd nagios</strong> Правим в файле <strong>/var/www/nagios/site/nagios-4.0.2/configure</strong> |
1 2 3 |
Строчку ac_default_prefix=/usr/local/nagios указывая домашнюю директорию |
1 2 3 4 5 |
ac_default_prefix=<strong><span class="re5">/var/www/nagios/site/nagios </span><span class="re5">sed -i 's|</span>ac_default_prefix=/usr/local/nagios<span class="re5">|</span>ac_default_prefix=<span class="re5">/var/www/nagios/site/nagios</span><span class="re5">|' /var/www/nagios/site/nagios-4.0.2/configure</span> </strong> |
1 |
Соберём с указанием пользователя и группы: |
1 |
./configure --with-nagios-user=nagios --with-nagios-group=nagios |
1 2 3 4 5 6 7 8 |
<span class="kw2">make</span> all <span class="kw2">make</span> <span class="kw2">install</span> <span class="kw2">make</span> install-init <span class="kw2">make</span> install-commandmode <span class="kw2">make</span> install-config <span class="kw2">make</span> install-webconf или |
1 2 3 4 5 6 7 8 |
<strong>./configure --with-nagios-user=nagios --with-nagios-group=nagios &&</strong> <strong>make all && \ make install && make install-init && make install-commandmode && make install-config && make install-webconf </strong><strong>htpasswd <span class="re5">-c /var/www/nagios/site/nagios/.htpasswd</span> nagiosadmin</strong> chkconfig <span class="re5">--level</span> <span class="nu0">235</span> nagios on chkconfig <span class="re5">--level</span> <span class="nu0">235</span> httpd on <strong><span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>httpd restart <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>nagios restart</strong> |
1 |
в файле <strong>/var/www/nagios/site/nagios-plugins-1.5/configure</strong> |
1 |
так же правим строчку ac_default_prefix=/usr/local/nagios |
на
ac_default_prefix=/var/www/nagios/site/nagios
1 |
<strong><span class="re5">sed -i 's|</span>ac_default_prefix=/usr/local/nagios<span class="re5">|</span>ac_default_prefix=<span class="re5">/var/www/nagios/site/nagios</span><span class="re5">|' </span></strong><strong>/var/www/nagios/site/nagios-plugins-1.5/configure</strong> |
После чего собираем:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
.<span class="sy0">/</span>configure <span class="kw2">make</span> <span class="kw2">make</span> <span class="kw2">install или </span><strong>.<span class="sy0">/</span>configure && <span class="kw2">make && </span><span class="kw2">make</span> <span class="kw2">install ln -s /var/www/nagios/site/nagios/share/ /var/www/nagios/site/nagios/share/nagios </span></strong><span class="kw2">Правим права</span><strong><span class="kw2"> find /var/www/nagios/ -type d -exec chmod 755 {} \; && find /var/www/nagios/ -type f -exec chmod 644 {} \; && \ find /var/www/nagios/ -name *.cgi -exec chmod a+x {} \; && chmod +x /var/www/nagios/site/nagios/bin/nagios* && \ chmod +x /var/www/nagios/site/nagios/libexec/* && chown -R nagios:nagios /var/www/nagios/</span></strong> |
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
в нашем случае
1 2 3 |
<strong><span class="sy0">/var/www/nagios/site/nagios/</span>etc<span class="sy0">/</span>cgi.cfg <span class="sy0">/var/www/nagios/site/nagios/</span>nagios.cfg <span class="sy0">/var/www/nagios/site/nagios/</span>objects</strong> <span class="sy0"><</span> - тут файлы настройки хостов |
Найти файл только по названию, быстро и просто поможет программа locate:
1 2 3 |
<span class="kw2">yum</span> install mlocate <span class="re5">-y</span> <span class="kw2">updatedb</span> <span class="kw2">locate</span> cgi.cfg |
В случае если Nagios ставился из исходных кодов вашей рабочей директорией будет:
1 2 3 4 5 6 7 |
<span class="kw3">cd</span> /<span class="sy0">var/www/nagios/site/nagios</span><span class="sy0">/</span>etc <span class="kw2">ls</span> <span class="re5">-ll</span> <span class="re5">-rw-rw-r--</span> <span class="nu0">1</span> nagios nagios <span class="nu0">12015</span> Feb <span class="nu0">13</span> <span class="nu0">16</span>:<span class="nu0">42</span> cgi.cfg <span class="re5">-rw-r--r--</span> <span class="nu0">1</span> root root <span class="nu0">26</span> Feb <span class="nu0">13</span> <span class="nu0">16</span>:<span class="nu0">39</span> htpasswd.users <span class="re5">-rw-rw-r--</span> <span class="nu0">1</span> nagios nagios <span class="nu0">44475</span> Feb <span class="nu0">13</span> <span class="nu0">16</span>:<span class="nu0">42</span> nagios.cfg drwxrwxr-x <span class="nu0">2</span> nagios nagios <span class="nu0">4096</span> Feb <span class="nu0">13</span> <span class="nu0">16</span>:<span class="nu0">49</span> objects <span class="re5">-rw-rw----</span> <span class="nu0">1</span> nagios nagios <span class="nu0">1312</span> Feb <span class="nu0">13</span> <span class="nu0">16</span>:<span class="nu0">42</span> resource.cfg |
1 |
Как добавить хост в Nagios?
Нужно начать с nagios.cfg. Важные конфигурацинные файлы:
1 2 3 4 5 6 7 8 9 |
cfg_file=/var/www/nagios/site/nagios/etc/objects/commands.cfg cfg_file=/var/www/nagios/site/nagios/etc/objects/contacts.cfg cfg_file=/var/www/nagios/site/nagios/etc/objects/timeperiods.cfg cfg_file=/var/www/nagios/site/nagios/etc/objects/templates.cfg cfg_file=/var/www/nagios/site/nagios/etc/objects/localhost.cfg Нам необходима вот эта строчка: cfg_dir=/var/www/nagios/site/nagios/etc/servers |
раскомментируем её
1 |
Это директория в которой будут лежать конфигурационные файлы хостов (объектов): |
1 2 3 |
<span class="kw3">cd</span> <span class="sy0">/</span>var/www/nagios/site/nagios<span class="sy0">/</span>etc<span class="sy0">/</span> <span class="kw2">mkdir</span> servers <span class="kw2">chown</span> <span class="re5">-R</span> nagios:nagios servers |
Для каждого нового хоста вы добавляете конфигурационный файл.
Добавление удалённого хоста
Установка 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
1 |
<span class="kw2">Чекалка самбы:</span> |
1 2 3 4 5 6 7 |
<span class="kw2">/var/www/nagios/site/nagios/libexec/check_disk_smb -H 192.168.1.180 -s MYFILES в случае если возникает ошибка: check requires smbclient, smbclient not set то нужно поправить конфиг /var/www/nagios/site/nagios/libexec/check_disk_smb </span>а именно заменить: |
#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
Чекалка тут:
1 |
<span class="kw2">/var/www/nagios/site/nagios/libexec/check_http</span> |
Так как апач у нас на порту 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
}
В случае ошибки:
1 2 3 4 5 |
t appears as though you do not have permission to view information for any of the hosts you requested... If you believe this is an error, check the HTTP server authentication requirements for accessing this CGI and check the authorization options in your CGI configuration file. |
"Похоже, что у вас нет прав на просмотр информации по хостам, которую вы запросили.
Если Вы полагаете, что это - ошибка, проверьте аутентификационные настройки доступа к CGI-скриптам HTTP-сервера и проверьте опции авторизации в вашем конфигурационном файле CGI."
Эта предосторожность сделана из соображений безопасности. Только авторизованные пользователи должны иметь возможность работать с интерфейсом Nagios. Аутентификация выполняется браузером по методу Basic HTTP Authentication (проще говоря, через .htaccess). Nagios берёт имя пользователя, под которым прошёл аутентификацию пользователь, и находит секцию с соответствующим contact_name в contacts.cfg. Отсюда он узнаёт, к каким разделам сайта Nagios пользователь имеет доступ, а к каким — нет.