Мониторинг сервера Ubuntu 18.04 при помощи Nagios 4

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

Данный мануал поможет установить Nagios 4 и настроить мониторинг ресурсов хоста через веб-интерфейс. Также вы научитесь настраивать NRPE (Nagios Remote Plugin Executor) в качестве агента на удаленном хосте.

Требования

  • Два сервера Ubuntu 18.04, настроенные по этому мануалу, с включенной частной сетью. Первый сервер будет использоваться для установки и запуска Nagios, а второй будет настроен как удаленный хост (его и будет отслеживать сервер Nagios).
  • На сервере 1 (его мы будем называть сервером Nagios) нужно установить Apache и PHP. Все необходимые инструкции вы найдете в соответствующих разделах этого мануала.

Как правило, Nagios работает за аппаратным брандмауэром или VPN. Если сервер Nagios доступен в интернете, вы должны защитить веб-интерфейс Nagios с помощью TLS-сертификата. Это опциональный шаг, но сделать его настоятельно рекомендуется. Для этого советуем обратиться к мануалу Создание сертификата Let’s Encrypt для Apache в Ubuntu 18.04.

В этом мануале предполагается, что на серверах включена частная сеть, поэтому мониторинг происходит по частной, а не по общедоступной сети. Если у вас частная сеть не настроена, вы все равно можете следовать этому мануалу, заменив все частные IP-адреса внешними IP-адресами.

1: Установка Nagios 4

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

Войдите на сервер 1 (на котором запущен Apache). Также этот сервер будет далее условно называться сервером Nagios.

ssh 8host@your_nagios_server_ip

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

Обновите индекс, чтобы загрузить последние версии необходимых пакетов:

sudo apt update

Теперь установите эти пакеты:

sudo apt install autoconf gcc make unzip libgd-dev libmcrypt-dev libssl-dev dc snmp libnet-snmp-perl gettext

После этого можно установить сам Nagios. Загрузите исходный код последней стабильной версии Nagios Core. Откройте страницу загрузки Nagios и нажмите ссылку Skip to download под формой. Скопируйте адрес ссылки на последнюю стабильную версию, чтобы скачать ее на сервер Nagios.

Загрузите релиз в домашний каталог:

cd ~
curl -L -O https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.4.tar.gz

Распакуйте скачанный архив:

tar zxf nagios-4.4.4.tar.gz

Перейдите в новый каталог:

cd nagioscore-nagios-4.4.4

Прежде чем начать сборку Nagios, запустите сценарий configure, чтобы указать каталог конфигураций Apache.

./configure --with-httpd-conf=/etc/apache2/sites-enabled

Примечание: Если вы хотите, чтобы Nagios отправлял электронные уведомления с помощью Postfix, вам нужно установить Postfix и настроить Nagios для его поддержки. Для этого добавьте в команду configure опцию —with-mail=/usr/sbin/sendmail. В этом мануале мы не включаем Postfix, но если вы решите использовать его позже, вам нужно будет перенастроить и переустановить Nagios.

Команда configure вернет такой результат:

*** Configuration summary for nagios 4.4.4 2019-07-29 ***:
General Options:
-------------------------
Nagios executable:  nagios
Nagios user/group:  nagios,nagios
Command user/group:  nagios,nagios
Event Broker:  yes
Install ${prefix}:  /usr/local/nagios
Install ${includedir}:  /usr/local/nagios/include/nagios
Lock file:  /run/nagios.lock
Check result directory:  /usr/local/nagios/var/spool/checkresults
Init directory:  /lib/systemd/system
Apache conf.d directory:  /etc/apache2/sites-enabled
Mail program:  /bin/mail
Host OS:  linux-gnu
IOBroker Method:  epoll
Web Interface Options:
------------------------
HTML URL:  http://localhost/nagios/
CGI URL:  http://localhost/nagios/cgi-bin/
Traceroute (used by WAP):
Review the options above for accuracy.  If they look okay,
type 'make all' to compile the main program and CGIs.

Теперь скомпилируйте Nagios:

make all

После этого создайте пользователя nagios и группу nagios:

sudo make install-groups-users

Запустите следующие команды make, чтобы установить Nagios, сценарии инициализации и образцы конфигурационных файлов:

sudo make install
sudo make install-daemoninit
sudo make install-commandmode
sudo make install-config

Apache будет обслуживать веб-интерфейс Nagios. Чтобы скопировать конфигурационный файл Apache и настроить его параметры, введите команду:

sudo make install-webconf

Теперь включите модули rewrite и cgi:

sudo a2enmod rewrite
sudo a2enmod cgi

Чтобы выполнять внешние команды через веб-интерфейс Nagios, добавьте пользователя веб-сервера www-data в группу nagcmd:

sudo usermod -a -G nagios www-data

С помощью команды htpasswd создайте администратора по имени nagiosadmin. У него будет доступ е веб-интерфейсу Nagios:

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

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

Важно! Если вы назвали своего пользователя не nagiosadmin, вам нужно отредактировать /usr/local/nagios/etc/cgi.cfg и заменить все ссылки на nagiosadmin именем вашего пользователя.

Чтобы обновить параметры Apache, перезагрузите его:

sudo systemctl restart apache2

Система мониторинга Nagios установлена.

2: Установка Nagios Plugins

Для правильной работы Nagios нужны плагины. Официальный пакет Nagios Plugins содержит более 50 плагинов, которые позволяют отслеживать основные сервисы: время работы, использование диска, своп, NTP и другие.

Давайте установим пакет Nagios Plugins.

Вы можете найти его последнюю версию на официальном сайте.

Загрузите его в домашний каталог с помощью curl:

cd ~
curl -L -O https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

Распакуйте архив и перейдите в полученный каталог:

tar zxf nagios-plugins-<^>2.2.1<^.tar.gz
cd nagios-plugins-2.2.1

Настройте установку:

./configure

Теперь соберите и установите плагины:

make
sudo make install

3: Установка плагина check_nrpe

Nagios контролирует удаленные хосты с помощью Nagios Remote Plugin Executor (или NRPE). Он состоит из двух частей:

  • Плагин check_nrpe, который используется сервером Nagios.
  • Демон NRPE, который запускается на удаленных хостах и отправляет данные на сервер Nagios.

Установите плагин check_nrpe на ваш сервер Nagios.

Найдите URL для загрузки последней стабильной версии NRPE на странице GitHub.

Загрузите его в домашний каталог с помощью curl:

cd ~
curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

Распакуйте архив NRPE:

tar zxf nrpe-3.2.1.tar.gz

Перейдите в полученный каталог:

cd nrpe-3.2.1

Настройте плагин check_nrpe:

./configure

Теперь соберите и установите check_nrpe:

make make check_nrpe
sudo make install-plugin

4: Настройка Nagios

Теперь нужно выполнить начальную настройку Nagios. Это подразумевает редактирование некоторых конфигурационных файлов. Этот раздел нужно выполнить на сервере Nagios только один раз.

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

sudo nano /usr/local/nagios/etc/nagios.cfg

Найдите эту строку:


#cfg_dir=/usr/local/nagios/etc/servers

Раскомментируйте ее, удалив символ #:

cfg_dir=/usr/local/nagios/etc/servers

Сохраните и закройте файл.

Теперь создайте каталог, в котором будет храниться конфигурационный файл для каждого сервера, отслеживаемого системой Nagios:

sudo mkdir /usr/local/nagios/etc/servers

Откройте настройки контактов Nagios:

sudo nano /usr/local/nagios/etc/objects/contacts.cfg

Найдите директиву 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                           your_email@your_domain.com        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******

Сохраните и закройте файл.

Затем добавьте в конфигурацию Nagios новую команду, которая позволяет использовать команду check_nrpe в определениях сервисов Nagios. Откройте файл /usr/local/nagios/etc/objects/commands.cfg в редакторе:

sudo nano /usr/local/nagios/etc/objects/commands.cfg

В конец файла добавьте определение новой команды check_nrpe:


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

Это определяет имя и задает параметры командной строки для выполнения плагина. Сохраните файл и выйдите из редактора.

Запустите Nagios и добавьте сервис в автозагрузку:

sudo systemctl start nagios

5: Веб-интерфейс Nagios

Откройте браузер и перейдите на свой сервер Nagios, посетив ссылку:

http://nagios_server_public_ip/nagios

Введите свои учетные данные в появившемся всплывающем окне. Используйте имя nagiosadmin и укажите пароль, который вы создали ранее для этого пользователя.

После аутентификации вы увидите домашнюю страницу Nagios по умолчанию. Нажмите Hosts слева в панели навигации, чтобы увидеть, какие хосты мониторит Nagios.

Вы увидите, что на данный момент Nagios мониторит только localhost (то есть тот сервер, на котором и находится установка Nagios). Давайте настроим мониторинг других хостов.

6: Установка Nagios Plugins и NPRE на хост

Давайте добавим новый хост, чтобы Nagios мог его отслеживать. Установите NRPE и дополнительные плагины на удаленный хост, а затем настройте сервер Nagios для мониторинга этого хоста (в разделе Требования этот сервер назывался сервером 2).

Войдите на сервер 2 (также он далее будет называться «сервер мониторинга»).

ssh 8host@your_monitored_server_ip

Создайте пользователя nagios для агента NRPE.

sudo useradd nagios

NRPE нужно установить из исходного кода, а для этого вам понадобятся те же библиотеки разработки, которые вы устанавливали на сервере Nagios в разделе 1. Обновите индекс пакетов и установите эти библиотеки:

sudo apt update
sudo apt install autoconf gcc libmcrypt-dev make libssl-dev wget dc build-essential gettext

NRPE требует, чтобы пакет Nagios Plugins был установлен на удаленном хосте. Установите этот пакет из исходного кода.

Найдите последнюю версию Nagios Plugins на странице загрузки. Скопируйте ссылку на последнюю версию.

Загрузите Nagios Plugins в домашний каталог:

cd ~
curl -L -O https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

Распакуйте архив Nagios Plugins:

tar zxf nagios-plugins-2.2.1.tar.gz
cd nagios-plugins-2.2.1

Прежде чем приступить к сборке Nagios Plugins, настройте программу с помощью команды:

./configure

Скомпилируйте пакет:

make

Затем установите его:

sudo make install

Затем установите демон NRPE. Найдите URL-адрес для загрузки последней стабильной версии NRPE на этой странице GitHub. Загрузите версию NRPE в домашний каталог отслеживаемого сервера с помощью curl:

cd ~
curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

Распакуйте архив NRPE:

tar zxf nrpe-3.2.1.tar.gz

Перейдите в каталог:

cd nrpe-3.2.1

Чтобы настроить NRPE, введите:

./configure

Затем соберите и установите NRPE и запустите сценарий:

make nrpe
sudo make install-daemon
sudo make install-config
sudo make install-init

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

Во-первых, нужно настроить мониторинг использования диска на этом сервере. Введите команду df –h, чтобы найти имя корневой файловой системы. Вы будете использовать это имя в конфигурации NRPE:

df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /

Откройте файл /usr/local/nagios/etc/nrpe.cfg в редакторе:

sudo nano /usr/local/nagios/etc/nrpe.cfg

Конфигурационный файл NRPE очень длинный, в нем много комментариев. Вот строки, которые вам нужно будет найти и изменить:

  • server_address: укажите внутренний IP-адрес сервера мониторинга.
  • allowed_hosts: добавьте в список внутренний IP-адрес сервера Nagios через запятую.
  • command[check_hda1]: вместо /dev/hda1 укажите имя корневой файловой системы.

Найдите эти параметры и измените их:


server_address=second_ubuntu_server_private_ip

allowed_hosts=127.0.0.1,::1,your_nagios_server_private_ip

command[check_vda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vda1

Сохраните и закройте файл. Перезапустите NRPE:

sudo systemctl start nrpe.service

Убедитесь, что сервис запущен:

sudo systemctl status nrpe.service

Вы получите такой вывод:

Aug 01 06:28:31 client systemd[1]: Started Nagios Remote Plugin Executor.
Aug 01 06:28:31 client nrpe[8021]: Starting up daemon
Aug 01 06:28:31 client nrpe[8021]: Server listening on 0.0.0.0 port 5666.
Aug 01 06:28:31 client nrpe[8021]: Server listening on :: port 5666.
Aug 01 06:28:31 client nrpe[8021]: Listening for connections on port 5666
Aug 01 06:28:31 client nrpe[8021]: Allowing connections from: 127.0.0.1,::1,165.22.212.38

Откройте в брандмауэре порт 5666. Если вы используете UFW, настройте его для поддержки TCP-соединений по порту 5666 с помощью этой команды:

sudo ufw allow 5666/tcp

Читайте также: Настройка брандмауэра UFW на сервере Ubuntu 18.04

Проверьте взаимодействие с удаленным сервером NRPE. Для этого запустите на сервере Nagios эту команду:

/usr/local/nagios/libexec/check_nrpe -H second_ubuntu_server_ip
NRPE v3.2.1

Повторите этот раздел на каждом новом сервере мониторинга.

После того, как вы закончите установку и настройку NRPE на хостах, которые хотите отслеживать, вам нужно добавить эти хосты в конфигурацию сервера Nagios.

7: Мониторинг хостов с помощью Nagios

Чтобы мониторить хосты с помощью Nagios, нужно добавить конфигурационные файлы для каждого хоста и указать, что их нужно отслеживать. Затем можно просмотреть эти хосты в веб-интерфейсе Nagios.

На сервере Nagios в /usr/local/nagios/etc/servers/ создайте новый конфигурационный файл для каждого из удаленных хостов, которые вы хотите отслеживать. Замените monitored_server_host_name на имя вашего хоста:

sudo nano /usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg

Добавьте следующее определение хоста, заменив значение host_name именем удаленного хоста, значение alias описанием хоста, а значение address – внутренним IP-адресом удаленного хоста:

define host {
use                             linux-server
host_name                       your_monitored_server_host_name
alias                           My client server
address                         your_monitored_server_private_ip
max_check_attempts              5
check_period                    24x7
notification_interval           30
notification_period             24x7
}

С такими настройками Nagios сможет только сообщить, включен ли хост. Давайте добавим еще несколько сервисов, которые нужно мониторить.

Чтобы отслеживать среднюю нагрузку, добавьте этот блок:

define service {
use                             generic-service
host_name                       your_monitored_server_host_name
service_description             Load average
check_command                   check_nrpe!check_load
}

Благодаря директиве use generic-service Nagios может наследовать значения шаблона сервиса generic-service, который предопределен в Nagios.

Затем добавьте этот блок, чтобы настроить мониторинг использования диска:

define service {
use                             generic-service
host_name                       your_monitored_server_host_name
service_description             /dev/vda1 free space
check_command                   check_nrpe!check_vda1
}

Сохраните и закройте файл. Перезапустите сервис Nagios:

sudo systemctl restart nagios

Через несколько минут Nagios проверит новые хосты, и вы увидите их в своем веб-интерфейсе. Нажмите Services в панели навигации, чтобы просмотреть все контролируемые хосты и сервисы.

Заключение

Настроив мониторинг хостов и некоторых сервисов, определите, какие сервисы имеют решающее значение в работе сервера, и добавьте их в список. Также можно настроить извещения; к примеру, Nagios может сообщить о том, что использование диска достигло критической отметки или что веб-сайт не работает. Это позволяет вовремя устранить подобные проблемы.

Tags: , , , , ,