Как установить Nagios 4 и контролировать свои серверы в Ubuntu 18.04

Автор выбралthe Open Source Initiative для получения пожертвования в рамках программыWrite for DOnations.

Вступление

Nagios - популярная система мониторинга с открытым исходным кодом. Он ведет инвентаризацию ваших серверов и отслеживает их, чтобы вы знали, что ваши критически важные службы запущены и работают. Использование системы мониторинга, такой как Nagios, является важным инструментом для любой производственной среды, поскольку, отслеживая время безотказной работы, загрузку ЦП или дисковое пространство, вы можете предотвратить возникновение проблем до того, как они возникнут, или до того, как ваши пользователи позвонят вам.

В этом учебном пособии вы установите Nagios 4 и настроите его так, чтобы вы могли контролировать ресурсы хоста через веб-интерфейс Nagios. Вы также настроите Исполнитель удаленных плагинов Nagios (NRPE), который работает как агент на удаленных хостах, чтобы вы могли контролировать их ресурсы.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

  • Два сервера Ubuntu 18.04, настроенные в соответствии с нашимInitial Server Setup Guide for Ubuntu 18.04, включая пользователя без полномочий root с привилегиями sudo и брандмауэр, настроенный с помощьюufw. На одном сервере вы установите Nagios; в этом руководстве он будет называтьсяNagios server. Он будет контролировать ваш второй сервер; этот второй сервер будет называтьсяsecond Ubuntu server.

  • Сервер, на котором будет работать сервер Nagios, должен установить Apache и PHP. Следуйтеthis guide, чтобы настроить их на одном из ваших серверов. Вы можете пропустить шаги MySQL в этом руководстве.

Как правило, Nagios работает за аппаратным брандмауэром или VPN. Если ваш сервер Nagios открыт для общедоступного Интернета, вам следует обезопасить веб-интерфейс Nagios, установив сертификат TLS / SSL. Это необязательно, ноstrongly encouraged. Вы можете следовать руководствуLet’s Encrypt on Ubuntu 18.04, чтобы получить бесплатный сертификат TLS / SSL.

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

[[step-1 -—- install-nagios-4]] == Шаг 1. Установка Nagios 4

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

Войдите на сервер, на котором работает Apache. В этом руководстве мы назовем этоNagios server:

ssh sammy@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 downloads page и щелкните ссылкуSkip to download под формой. Скопируйте адрес ссылки для последней стабильной версии, чтобы вы могли загрузить ее на свой сервер Nagios.

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

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

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

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

[.note] #Note: Если вы хотите, чтобы Nagios отправлял электронные письма с помощью Postfix, вы должныinstall Postfix и настроить Nagios для его использования, добавив--with-mail=/usr/sbin/sendmail в командуconfigure. Мы не будем рассматривать Postfix в этом руководстве, но если вы решите использовать Postfix и Nagios позже, вам потребуется перенастроить и переустановить Nagios, чтобы использовать поддержку Postfix.
#

Вы увидите следующий вывод командыconfigure:

Output*** 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. Они будут использоваться для запуска процесса 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

Включите модули Apacherewrite иcgi с помощью командыa2enmod:

sudo a2enmod rewrite
sudo a2enmod cgi

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

sudo usermod -a -G nagios www-data

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

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

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

[.warning] #Warning: Если вы создаете пользователя с именем, отличным отnagiosadmin, вам нужно будет отредактировать/usr/local/nagios/etc/cgi.cfg и изменить все ссылкиnagiosadmin на пользователя, которого вы создано.
#

Перезапустите Apache, чтобы загрузить новую конфигурацию Apache:

sudo systemctl restart apache2

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

[[step-2 -—- install-the-nagios-plugins]] == Шаг 2 - Установка подключаемых модулей Nagios

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

Давайте установим пакет плагинов.

Вы можете найти последнюю версию подключаемых модулей Nagios наofficial site.

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

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

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

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

Далее настройте их установку:

./configure

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

make
sudo make install

Теперь плагины установлены, но вам нужен еще один плагин для мониторинга удаленных серверов. Давайте установим это дальше.

[[step-3 -—- install-the-check_nrpe-plugin]] == Шаг 3. Установка плагина check_nrpe

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

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

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

Давайте установим плагинcheck_nrpe на наш сервер Nagios.

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

Загрузите его в свой домашний каталог с помощью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 check_nrpe
sudo make install-plugin

Давайте настроим сервер Nagios дальше.

[[step-4 -—- configuring-nagios]] == Шаг 4. Настройка Nagios

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

Откройте основной файл конфигурации Nagios в предпочитаемом вами текстовом редакторе. Здесь вы должны использоватьnano:

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

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

/usr/local/nagios/etc/nagios.cfg

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

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

/usr/local/nagios/etc/nagios.cfg

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

Сохраните и закройтеnagios.cfg, нажавCTRL+X, затемY, а затемENTER (если вы используетеnano).

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

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

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

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

Найдите директивуemail и замените ее значение своим адресом электронной почты:

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

...
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:

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

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

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

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

Затем запустите Nagios и включите его при загрузке сервера:

sudo systemctl start nagios

Nagios сейчас запущен, поэтому давайте войдем в его веб-интерфейс.

[[step-5 -—- accessing-the-nagios-web-interface]] == Шаг 5 - Доступ к веб-интерфейсу Nagios

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

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

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

Nagios Hosts Page

Как видите, Nagios отслеживает только «localhost» или самого себя.

Давайте мониторим наш другой сервер с помощью Nagios,

[[step-6 -—- install-nagios-plugins-and-nrpe-daemon-on-a-host]] == Шаг 6 - Установка подключаемых модулей Nagios и NRPE Daemon на хосте

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

Войдите на второй сервер, который мы назовемsecond Ubuntu server:

ssh sammy@your_monitored_server_ip

Сначала создайте пользователяnagios, который будет запускать агент NRPE:

sudo useradd nagios

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

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

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

Найдите последнюю версию подключаемых модулей Nagios на страницеdownloads.

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

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

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

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

Перед сборкой плагинов Nagios настройте их с помощью следующей команды:

./configure

Теперь скомпилируйте плагины:

make

Затем установите их, запустив:

sudo make install

Затем установите демон NRPE. Найдите URL-адрес загрузки последней стабильной версии NRPE вGitHub page, как вы это делали на шаге 3. Загрузите последнюю стабильную версию 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 и добавим некоторые базовые проверки, которые Nagios может отслеживать.

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

df -h /

Вы увидите вывод, похожий на этот:

OutputFilesystem      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 на то, что называется вашей корневой файловой системой.

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

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

...
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

Вы увидите следующий вывод:

Output...
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 вHow To Set Up a Firewall with UFW on Ubuntu 18.04.

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

/usr/local/nagios/libexec/check_nrpe -H second_ubuntu_server_ip

Вы увидите следующий вывод:

OutputNRPE v3.2.1

Повторите шаги в этом разделе для каждого дополнительного сервера, который вы хотите отслеживать.

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

[[step-7 -—- monitoring-hosts-with-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-адресом удаленного хоста. :

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

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 сообщит вам только о том, работает ли хост или нет. Давайте добавим некоторые сервисы для мониторинга.

Сначала добавьте этот блок для мониторинга средней нагрузки:

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

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.

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

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

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 проверит новые хосты, и вы увидите их в веб-интерфейсе Nagios. Щелкните ссылкуServices на левой панели навигации, чтобы увидеть все отслеживаемые хосты и службы.

Nagios Services Page

Заключение

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

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

Related