Анкета для регистрации интернет-ресурса
В соответствии с Указом Президента Республики Беларусь № 60 от 01.02.2010г.
Техподдержка
Приложение support.by

E-mail: ticket@support.by

 

Портал > База знаний > Администрирование Linux > Установка и настройка Nagios, плагина PNP4Nagios и подключение удаленных серверов


Установка и настройка Nagios, плагина PNP4Nagios и подключение удаленных серверов




Данная статья поможет установить популярную систему мониторинга Nagios 4 на сервер Centos 7, а также выполнить базовую настройку мониторинга ресурсов хоста. Кроме того, в статье показано, как настроить Nagios Remote Plugin Executor (NRPE) в качестве агента на удалённых хостах для мониторинга их ресурсов и как установить плагин PNP4Nagios, задача которого сбор данных и пстроение графиков. 

Для всех операций нам потребутся root-доступ к серверу по SSH.



Устанавливаем PHP 7.1

Для этого добавляем репозитории:

# yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

Включаем PHP 7.1

# yum -y install yum-utils
# yum-config-manager --enable remi-php71

Устанавливаем PHP 7.1 и дополнительные модули

# yum install php php-gd php-xml -y

Устанавливаем веб-сервер Apache

# yum install httpd mod_ssl -y

Включаем и стартуем Apache

# systemctl enable httpd.service
# systemctl start httpd.service

Переходим по IP-адресу для того, чтоыбы проверить, что у нас все работает:

http://your_IP_adress



Если по какой-то причине Вы не видите главную страницу, добавьте правило для фаерволла:

# firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
# firewall-cmd --reload

Установим Nagios и плагины из пакетного репозитория:

# yum install nagios nagios-plugins-all -y

Теперь займемся конфигурацией веб-сервера и установкой SSL-сертификата.

Для сервера мониторинга будем использоваться самоподписанный сертификат. Переходим в директорию веб-сервера и создаем новый каталог ssl:

# cd /etc/httpd/; mkdir ssl; cd ssl

Генерируем сертификат:

# openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=your_domen/CN=nagios"

Т.к. данный сервер у нас будет использоваться для мониторинга, мы не хотим чтобы веб-интерфейс был доступен по нашему домену.

Откроем конфигурационный файл веб-сервера:

# vi /etc/httpd/conf/httpd.conf

И добавим в него следующие строки:

<VirtualHost *:80>
    ServerName your_domen
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
    ServerName your_domen
    DocumentRoot /usr/share/nagios/html
    SSLEngine on
    SSLCertificateFile ssl/cert.pem
    SSLCertificateKeyFile ssl/cert.key
</VirtualHost>

Cоздадим новый пароль для администратора Nagios:

# htpasswd /etc/nagios/passwd nagiosadmin

Вводим два раза пароль.

Перезапускаем сервисы:

# systemctl restart httpd
# systemctl restart nagios

Переходим по адресу https://your_domen



Авторизовываемся и попадаем в веб-интерфейс Nagios, переходим в раздел Services в левом боковом меню и видим, что Nagios уже успешно мониторит сервисы на текущем сервере.



Настройка Nagios

По умолчанию все конфигурационные файлы Nagios находятся в каталоге /etc/nagios. Конфигурация разделена на несколько файлов, каждый из которых предназначен для отдельных фрагментов конфигурации.

Первые компоненты, которые необходимо настроить, - это контакты и группы контактов. Контакты - это персоны, получающие извещение, когда система или служба отключается. По умолчанию Nagios предлагает оповещение по электронной почте.
Контакты хранятся в файле /etc/nagios/objects/contacts.cfg

Базовая информация о контактах:

define contact {
        contact_name                    jdoe
        alias                           John Due
        service_notification_commands   notify-by-email
        host_notification_commands      host-notify-by-emailes
        email                           john.doe@yourcompany.com
}

Контакты можно группировать, и вместо отдельных людей, которые должны быть извещены в случае изменения статуса системы или службы, Nagios будет оповещать соответствующую группу. Иногда имеет смысл задать пользователя несколько раз, чтобы определить различные адреса или команды для отправки извещений и затем добавить все способы связаться с пользователем к группе контактов, к которой он принадлежит:

define contactgroup{
        contactgroup_name               server-admins
        alias                           Server Administrators
        members                         jdoe,albundy
}


Но в простейшем варианте достаточно только изменить email-адрес в контакте:

define contact {

    contact_name            nagiosadmin             ; Short name of user
    use                     generic-contact         ; Inherit default values from generic-contact template (defined above)
    alias                   Nagios Admin            ; Full name of user
    email                   nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}


Подключаем удаленные хосты по NRPE

NRPE (Nagios Remote Plugin Executor) — утилита которая позволяет удаленно выполнять Nagios плагины на других машинах Linux / Unix. Это позволяет контролировать отдаленные показатели машины (использование дискового пространства, загрузки процессора и т.д.).

Установка NRPE производится на сервере Nagios и на удаленном сервере, который мы подключаем к мониторингу:

# yum install nrpe nagios-plugins-nrpe nagios-plugins-all -y

После установки на удаленном сервере отредактируем конфигурационный файл /etc/nagios/nrpe.cfg
И добавим в строку IP-адрес Nagios, например (10.20.20.1):

allowed_hosts=127.0.0.1,10.20.20.1

В конце конфигурационного файла определяем команды которые мы будем вызывать удалённо и соответствующие им плагины:

command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10
# test AVG load
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
# test partitions size
command[check_disks]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10%
# number of zombie process
command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_procs -w 5 -c 10 -s Z
# number of total process
command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 300 -c 500
# free space in swap
command[check_swap]=/usr/lib64/nagios/plugins/check_swap -w 20% -c 10%

где:

    [check_disks] — команда которою мы будем использовать для вызова плагина \ скрипта на сервере Nagios;
    sudo — указываем если в нашем скрипте есть команды требующие прав суперпользователя
    /usr/lib64/nagios/plugins/check_disk — полный путь к плагину \ скрипту

Чтобы наши скрипты выполнялись удалённо необходимо, на хосте с установленным NRPE, разрешить их запуск. Для этого необходимо настроить утилиту sudo отредактировав файл /etc/sudoers.

Редактирование файла осуществляется командой:
    
# visudo

Добавим в конец файла следующие строки:

Defaults:nrpe !requiretty
nrpe ALL=(root) NOPASSWD: /usr/sbin/nrpe
nrpe ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/

В первой строке: НЕ требовать терминал для пользователя nrpe. По умолчанию команда sudo запрещает  выполнение команд которые введены не из консоли (в нашем случае переданы по сети демону NRPE).

Во второй: путь к программе.

В третьей: путь к папке с плагинами, в которой необходимо хранить наши скрипты и плагины.

Включаем и стартуем NRPE на удаленном хосте и Nagios:

# systemctl enable nrpe
# systemctl start nrpe

Добавим правило в iptables которое разрешит подключение на порт 5666

# firewall-cmd --permanent --add-port=5666/tcp
# firewall-cmd --reload


Проверим доступен ли наш удаленный хост с сервера Nagios:

# /usr/lib64/nagios/plugins/check_nrpe -H 10.20.20.1
NRPE v4.0.3

Если ответ получен, значит хост доступен и NRPE работает.


Вызов команд NRPE на сервере Nagios

Для вызова удаленного скрипта в файле с конфигурацией команд /etc/nagios/objects/commands.cfg, определим команду для вызова плагина check_nrpe, которому мы будем передавать хост и команду для выполнения на этом хосте:

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

Группируем хосты

Для того чтобы в будущем удобно управлять хостами и проверками разнесем конфигурационные файлы по разным директориям. Создадим три директории:

# cd /etc/nagios/; mkdir servers groups services


Добавляем хост в файле /etc/nagios/servers/your_host.cfg

define host{
        use                             linux-server
        host_name                       bitrix
        alias                           bitrix
        address                         10.20.20.1
        notifications_enabled           1
}

Добавляем группу, создаем конфигурационный файл /etc/nagios/groups/host_groups.cfg

define hostgroup{
        hostgroup_name   linux_remote_servers ;указываем здесь название группы
        members          bitrix ;не забываем добавлять сюда новые сервера через запятую, без пробела
}
 
Добавляем сервисы для нашей группы, впоследствие все новые сервисы добавляемые в группу linux_remote_servers будут иметь один и тот же список проверок и если потребуется добавить новую проверку, то это нужно будет сделать только в текущем файле. Создаем файл /etc/nagios/services/services.cfg со следующим содержимым:

define service{
    use generic-service
    hostgroup_name linux_remote_servers
        check_period  24x7
        contact_groups admins
        notification_options c,r
    service_description Disk Usage
    check_command check_nrpe!check_disks
}

define service{
        use generic-service
        hostgroup_name linux_remote_servers
        check_period  24x7
        contact_groups admins
        notification_options c,r
        service_description Swap Usage
        check_command check_nrpe!check_swap
}

define service{
        use generic-service
        hostgroup_name linux_remote_servers
        check_period  24x7
        contact_groups admins
        notification_options c,r
        service_description Current Users
        check_command check_nrpe!check_users
}

define service{
        use generic-service
        hostgroup_name linux_remote_servers
        check_period  24x7
        contact_groups admins
        notification_options c,r
        service_description Current Load
        check_command check_nrpe!check_load
}

define service{
        use generic-service
        hostgroup_name linux_remote_servers
        check_period  24x7
        contact_groups admins
        notification_options c,r
        service_description Zombie Processes
        check_command check_nrpe!check_zombie_procs
}

define service{
        use generic-service
        hostgroup_name linux_remote_servers
        check_period  24x7
        contact_groups admins
        notification_options c,r
        service_description Total Processes
        check_command check_nrpe!check_total_procs
}


Подключаем эти файлы в /etc/nagios/nagios.cfg:

cfg_dir=/etc/nagios/groups
cfg_dir=/etc/nagios/services
cfg_dir=/etc/nagios/servers


Проверяем файл конфигурации:

# /usr/sbin/nagios -v /etc/nagios/nagios.cfg

Если ошибок нет, то мы должны получить примерно такой вывод:

Nagios Core 4.4.5
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2019-08-20
License: GPL

Website: https://www.nagios.org
Reading configuration data...
   Read main config file okay...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
    Checked 9 services.
    Checked 2 hosts.
    Checked 2 host groups.
    Checked 0 service groups.
    Checked 1 contacts.
    Checked 1 contact groups.
    Checked 25 commands.
    Checked 5 time periods.
    Checked 0 host escalations.
    Checked 0 service escalations.
Checking for circular paths...
    Checked 2 hosts
    Checked 0 service dependencies
    Checked 0 host dependencies
    Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Переходим в веб-интерфейс, видим наш сервер и состояние сервисов в статусе Pending - нужно подождать некоторое время пока не произойдет опрос сервисов системой мониторинга.



На этом можно было и закончить статью, но есть одно НО - в системе нету графиков. Графики позволяют наглядно показать как вела себя система.  

Поэтому мы соберем из исходных кодов плагин PNP4Nagios и настроим его.

Устанавливаем пакеты:

# yum install rrdtool rrdtool-perl perl-Time-HiRes perl-GD gcc -y

Загружаем пакет с исходными кодами:

# wget https://deac-riga.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.26.tar.gz

Распаковываем архив:

# tar -xzvf pnp4nagios-0.6.26.tar.gz

Переходим в распакованную директорию:

# cd pnp4nagios-0.6.26

Запускаем поочередно следующие команды:

#./configure
#make all
#make fullinstall

Редактируем конфигурационный файл /etc/nagios/nagios.cfg

Изменяем значение параметра на 1

process_performance_data=1

И добавляем следующие строки:

# service performance data
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file

# host performance data
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file

Редактируем конфигурационный файл /etc/nagios/objects/commands.cfg. Закоментируем следующие строки:



И добавляем новые строки:

define command{
       command_name    process-service-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}

define command{
       command_name    process-host-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}

Добавляем и запускаем серис npcd:

# /usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg
# systemctl enable npcd.service

Далее необходимо добавить шаблоны хоста и сервиса для сбора данных и построения графиков. Для этого в конец файла /etc/nagios/objects/templates.cfg добавляем:

define host {
        name host-pnp
        action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
        register 0
}

define service {
        name service-pnp
        action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
        register 0
}

Эти шаблоны могут быть включены для хостов и сервисов командами use host-pnp или use service-pnp соответственно. Добавим их для нашего удаленного сервера и его сервисов. Для этого в файле /etc/nagios/servers/your_host.cfg в блок use вносим изменение:

    use                             linux-server,host-pnp ;не забываем, что пробел после запятой мы не ставим

В файле /etc/nagios/services/services.cfg по аналогии с файлом хоста, через запятую добавляем в директивы use каждого блока service-pnp:

      use generic-service,service-pnp  ;не забываем, что пробел после запятой мы не ставим
      
Отлично, мы уже скоро закончим, но прежде нам необходимо внести еще одно изменение в конфигурационной файл /etc/httpd/conf.d/pnp4nagios.conf

Закоментируйте строку:

AuthUserFile /usr/local/nagios/etc/htpasswd.users


И добавьте:

AuthUserFile /etc/nagios/passwd

Проверяем файл конфигурации:

/usr/sbin/nagios -v /etc/nagios/nagios.cfg

Перезапускаем сервисы:

systemctl restart nagios.service
systemctl restart httpd.service

Переходим в веб-интерфейс в раздел Services:



И видим, что напротив нашего удаленного хоста и сервисов появились иконки с графиками.

Нажав на любую из иконок мы перемистимся по адресу https://your_address/pnp4nagios

Если окружение настроено правильно, то вас встретит следующее окно:



Обратите внимание на нижний абзац. В нем сказано, что файл должен быть переменован или удален /usr/local/pnp4nagios/share/install.php

Удалим файл:

# rm -rf /usr/local/pnp4nagios/share/install.php

И обновим страницу:



Пока графики пустые, т.к. за такой короткий срок информация еще не была собрана. Попробуйте сюда заглянуть через пару часов.

На этом настройка Nagios закончена.

Помог ли вам данный ответ?

Добавить в избранное Добавить в избранное    Распечатать статью Распечатать статью

Также читают
Оптимизация PHP. Часть 1 (просмотров: 1541)
Установка Ioncube (просмотров: 838)
Оптимизация PHP. Часть 2 (просмотров: 972)

Powered by WHMCompleteSolution