Мониторинг сервера Ubuntu 16.04 при помощи Nagios 4
Ubuntu | Комментировать запись
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: Nagios 4, NRPE, Ubuntu 16.04