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

Вступление

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

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

Предпосылки

Для завершения этого урока вам понадобится следующее:

  • Два сервера Ubuntu 16.04 с настроеннымprivate networking, настроенные следующим образомthe Ubuntu 16.04 initial server setup guide, включая пользователя sudo без полномочий root и брандмауэр. Вы будете использовать первый сервер для запуска Nagios, а второй сервер будет настроен как удаленный хост, который Nagios может отслеживать.

    • На сервере, на котором будет работать Nagios, также должны быть установлены Apache и PHP, что вы можете сделать, выполнивHow To Install Linux, Apache, MySQL, PHP (LAMP stack) on Ubuntu 16.04. Вы можете пропустить шаги MySQL в этом руководстве.

  • Как правило, Nagios работает за аппаратным брандмауэром или VPN. Если ваш сервер Nagios открыт для общедоступного Интернета, вам следует защитить веб-интерфейс Nagios с помощью TLS. Для этого вам необходимо выполнить одно из следующих действий:

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

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

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

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

ssh sammy@your_nagios_server_ip

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

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

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

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

tar zxf nagios-*.tar.gz

Затем перейдите в извлеченный каталог:

cd nagios-*

Перед сборкой Nagios запустите сценарийconfigure, чтобы указать пользователя и группу, которую вы хотите использовать в Nagios. Используйте созданного вами пользователяnagios и группуnagcmd:

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

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

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

Output*** 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 теперь установлен. Давайте установим плагин, который позволит Nagios собирать данные с разных хостов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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$
}

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

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

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

sudo a2enmod rewrite
sudo a2enmod cgi

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

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

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

[.warning] #Note: Если вы создаете пользователя с именем, отличным от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, найдите оба вхождения этой строки:

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

#  SSLRequireSSL

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

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

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

Order allow,deny
Allow from all

Закомментируйте их, добавив перед ними символы#:

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

# Order allow,deny
# Allow from all

Затем найдите следующие строки:

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

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

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

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

Order deny,allow
Deny from all
Allow from 127.0.0.1 your_ip_address

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

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

sudo systemctl restart apache2

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

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

Введите следующее определение в файл. Это определение указывает, когда должен запускаться Nagios и где Systemd может найти приложение Nagios. Узнайте больше о файлах модулей Systemd в руководствеUnderstanding Systemd Units and Unit Files

/etc/systemd/system/nagios.service

[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

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

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

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

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

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

Nagios Hosts Page

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

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

[[step-5 -—- install-npre-on-a-host]] == Шаг 5 - Установка NPRE на хост

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

Войдите на второй сервер, который мы назовемmonitored server.

ssh sammy@your_monitored_server_ip

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

sudo useradd nagios

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

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

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

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

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

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

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

tar zxf nagios-plugins-*.tar.gz

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

cd nagios-plugins-*

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

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

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

make

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

sudo make install

Далее установите NRPE. Найдите URL-адрес загрузки последней стабильной версии NRPE вNagios Exchange site, как вы это делали на шаге 1. Загрузите последнюю стабильную версию 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-*.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 в список, разделенный запятыми:

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

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

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

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

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

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

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

OutputNRPE v3.2.1

Теперь давайте настроим некоторые основные проверки, которые Nagios может отслеживать.

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

df -h /

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

OutputFilesystem      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

Найдите файловую систему, связанную с/. В Droplet, вероятно, вам нужна файловая система/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 на то, что называется корневой файловой системой

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

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

...
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, прежде чем он начнет их мониторинг. Давайте сделаем это дальше.

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

/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             CPU load
        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