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

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

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

Требования

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

— Направить домен на свой сервер. В этом вам поможет мануал Как настроить имя хоста. Затем нужно создать TLS-сертификат Let’s Encrypt (с помощью руководства Создание сертификата Let’s Encrypt для Apache в Ubuntu 16.04).

— Защитить Apache самоподписанным сертификатом (читайте мануал Создание SSL-сертификата на Apache в Ubuntu 16.04).

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

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

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

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

Создайте пользователя nagios и группу nagcmd. Они будут использоваться для запуска процессов Nagios:

sudo useradd nagios
sudo groupadd nagcmd

Добавьте пользователя в группу:

sudo usermod -a -G nagcmd nagios

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

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

sudo apt-get update

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

sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip

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

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

cd ~
curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.4.tar.gz

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

tar zxf nagios-*.tar.gz

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

cd nagios-*

Прежде чем начать сборку Nagios, запустите сценарий configure, чтобы указать пользователя и группу для процесса Nagios (это nagios и nagcmd).

./configure --with-nagios-group=nagios --with-command-group=nagcmd

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

Команда configure вернет такой вывод:

*** Configuration summary for nagios 4.3.4 2017-08-24 ***:
General Options:
-------------------------
Nagios executable:  nagios
Nagios user/group:  nagios,nagios
Command user/group:  nagios,nagcmd
Event Broker:  yes
Install ${prefix}:  /usr/local/nagios
Install ${includedir}:  /usr/local/nagios/include/nagios
Lock file:  /run/nagios.lock
Check result directory:  ${prefix}/var/spool/checkresults
Init directory:  /etc/init.d
Apache conf.d directory:  /etc/apache2/sites-available
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

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

sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config

Apache будет обслуживать веб-интерфейс Nagios, поэтому скопируйте образец конфигурационного файла Apache в папку /etc/apache2/sites-available:

sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf

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

sudo usermod -G nagcmd www-data

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

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

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

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

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

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

Загрузите его в домашний каталог с помощью 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-*.tar.gz

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

cd nrpe-*

Сконфигурируйте check_nrpe:

./configure

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

make check_nrpe
sudo make install-plugin

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

Теперь нужно выполнить начальную настройку Nagios, которая включает в себя редактирование некоторых конфигурационных файлов и настройку Apache для обслуживания веб-интерфейса 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$
}

Это определяет имя и задает параметры командной строки для выполнения плагина. Вы будете использовать эту команду в разделе 5.

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

Теперь настройте Apache для обслуживания пользовательского интерфейса Nagios. Включите модули Apache rewrite и cgi с помощью команды a2enmod:

sudo a2enmod rewrite
sudo a2enmod cgi

Используйте команду htpasswd, чтобы создать пользователя-администратора nagiosadmin, который может получить доступ к веб-интерфейсу Nagios:

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

Введите пароль в командной строке. Запомните этот пароль, так как он понадобится для доступа к веб-интерфейсу Nagios.

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

Теперь создайте символическую ссылку на nagios.conf в каталоге sites-enabled. Это включит виртуальный хост Nagios.

sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/

Откройте конфигурационный файл Apache для Nagios.

sudo nano /etc/apache2/sites-available/nagios.conf

Если вы настроили Apache для обслуживания страниц через HTTPS, найдите об вхождения этой строки:

#  SSLRequireSSL

Раскомментируйте оба события, удалив символ #.

Если вы хотите ограничить доступ к веб-интерфейсу Nagios по IP-адресам (чтобы только определенные IP-адреса могли получить доступ к интерфейсу), найдите следующие две строки:

Order allow,deny
Allow from all

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

# Order allow,deny
# Allow from all

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

#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1

Раскомментируйте их, удалив символы #, и добавьте IP-адреса или диапазоны (через пробел), которые должны иметь доступ к интерфейсу, в строку Allow from :

Order deny,allow
Deny from all
Allow from 127.0.0.1 your_ip_address

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

Перезапустите Apache:

sudo systemctl restart apache2

Теперь можно настроить сервис для Nagios. Nagios не предоставляет файл Systemd для управления сервисом, поэтому его нужно создать самостоятельно. Создайте файл nagios.service и откройте его в редакторе:

sudo nano /etc/systemd/system/nagios.service

Введите следующее определение в файл. Это определение указывает, когда Nagios должен запускаться и где Systemd может найти приложение Nagios.

Читайте также: Основы Systemd: управление сервисами и журналирование

[Unit]
Description=Nagios
BindTo=network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
User=nagios
Group=nagios
ExecStart=/usr/local/nagios/bin/nagios /usr/local/nagios/etc/nagios.cfg

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

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

sudo systemctl enable /etc/systemd/system/nagios.service
sudo systemctl start nagios

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

Откройте веб-браузер и перейдите на свой сервер Nagios, посетив http://nagios_server_public_ip/nagios.

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

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

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

5: Установка NRPE на хост

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

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

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

sudo useradd nagios

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

sudo apt-get update
sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip

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

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

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

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

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

tar zxf nagios-plugins-*.tar.gz

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

cd nagios-plugins-*

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

./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl

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

make

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

sudo make install

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

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

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

tar zxf nrpe-*.tar.gz

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

cd nrpe-*

Чтобы настроить NRPE, укажите пользователя и группу Nagios, а также включите поддержку SSL.

./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu

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

make all
sudo make install
sudo make install-config
sudo make install-init

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

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

Найдите директиву allowed_hosts и добавьте внутренний IP-адрес сервера Nagios в список через запятую:

allowed_hosts=127.0.0.1,::1,your_nagios_server_private_ip

Теперь NRPE может принимать подключения от сервера Nagios через его внутренний IP-адрес.

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

sudo systemctl start nrpe.service

Запросите состояние сервиса, чтобы убедиться, что он работает:

sudo systemctl status nrpe.service

Команда вернет:

Oct 16 07:10:00 nagios systemd[1]: Started Nagios Remote Plugin Executor.
Oct 16 07:10:00 nagios nrpe[14653]: Starting up daemon
Oct 16 07:10:00 nagios nrpe[14653]: Server listening on 0.0.0.0 port 5666.
Oct 16 07:10:00 nagios nrpe[14653]: Server listening on :: port 5666.
Oct 16 07:10:00 nagios nrpe[14653]: Listening for connections on port 5666
Oct 16 07:10:00 nagios nrpe[14653]: Allowing connections from: 127.0.0.1,::1,207.154.249.232

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

sudo ufw allow 5666/tcp

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

Теперь вы можете проверить связь с удаленным сервером NRPE. Выполните следующую команду на сервере Nagios:

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

Теперь настройте базовые метрики, которые будет проверять Nagios.

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

df -h /
Filesystem      Size  Used Avail Use% Mounted on
udev            490M     0  490M   0% /dev
tmpfs           100M  3.1M   97M   4% /run
/dev/vda1        29G  1.4G   28G   5% /
tmpfs           497M     0  497M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           497M     0  497M   0% /sys/fs/cgroup
/dev/vda15      105M  3.4M  102M   4% /boot/efi
tmpfs           100M     0  100M   0% /run/user/0

Узнайте, какая файловая система связана с /. На сервере это, вероятно, /dev/vda1.

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

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

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

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

Найдите эти параметры и измените их соответствующим образом:

...
server_address=monitored_server_private_ip
...
command[check_vda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda1
...

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

Перезапустите NRPE:

sudo systemctl restart nrpe.service

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

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

6: Мониторинг хостов с помощью 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 сможет только сообщить, включен ли хост.

Добавьте еще несколько сервисов, которые нужно мониторить.

Чтобы отслеживать использование CPU, добавьте:

define service {
use                             generic-service
host_name                       your_monitored_server_host_name
service_description             CPU load
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: , ,