Портал > База знаний > Администрирование Linux > Установка и настройка 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 закончена.
Добавить в избранное Распечатать статью
Powered by WHMCompleteSolution