Как отслеживать хосты с помощью Nagios NRPE на Debian 9 — Information Security Squad
Как отслеживать хосты с помощью Nagios NRPE на Debian 9

В нашей недавней статье мы показали, как установить nagios core на Debian 9 для мониторинга некоторых служб удаленных хостов

Для этого вам нужно будет установить демон Nagios NRPE и плагины на удаленных хостах.

Это пакет, который будет установлен на всех удаленных хостах, которые необходимо контролировать.

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

Он позволяет отслеживать показатели удаленных компьютеров (использование диска, загрузка процессора и т. Д.).

Он также может связываться с некоторыми дополнительными агентами Windows, такими как NSClient ++, поэтому вы можете выполнять скрипты и проверять метрики на удаленных хостах Windows.

В этой статье я расскажу вам, как вы можете контролировать свои серверы хостов Linux и Windows с Nagios.

Как работает NRPE?

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

  • клиент (плагин check_nrpe), который запускается на сервере Nagios
  • демон, который запускается на удаленном сервере, обрабатывает запросы от клиента и возвращает информацию о состоянии.

Мы можем суммировать этот процесс по приведенной ниже схеме

 Nagios Server (check_nrpe)-> Remote host (NRPE deamon)-> service_to_check
Nagios Server (check_nrpe) <-Remote host (NRPE deamon) <-service_to_check 

Когда Nagios должен контролировать ресурс службы с удаленной машины:

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

NRPE может быть настроен только для приема соединений с определенного IP-адреса.

Вы можете просто сказать, какие команды выполнять через соединение.

Разрешены только команды, настроенные локальным хостом, и вы можете определить, будут ли аргументы отправлены Nagios.

1) Добавить хост Linux на сервер nagios

Чтобы использовать надстройку NRPE, вам необходимо выполнить некоторые задачи как на сервере Nagios, так и на удаленном узле Linux, на котором установлен демон NRPE.

В нашем случае удаленный хост Linux является сервером Debian 9. Я покажу конкретные моменты процедуры для серверов Centos и Ubuntu.

a) Настройте удаленный хост Linux

Нам нужно установить плагины nagios и NRPE на удаленном сервере для мониторинга.

Нам нужно сначала установить предварительные условия

 # apt install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext 

На Centos 7 установите предварительные условия, как показано ниже.

 # yum install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils epel-release perl-Net-SNMP 
Теперь мы создадим наш рабочий каталог в каталог / opt, где мы загрузим плагины
 # mkdir /opt/nagios && cd /opt/nagios

# wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/archive/release-2.2.1.tar.gz

# tar zxf nagios-plugins.tar.gz

# cd nagios-plugins-release-2.2.1 

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

 # ./tools/setup

# ./configure

# make

# make install 

Установите плагин nrpe

Теперь мы можем загрузить последнюю версию nrpe, которая является nrpe plugin 3.2.0, когда я пишу эту статью.

# cd /opt/nagios/

# wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-3.2.0.tar.gz

# cd nrpe-nrpe-3.2.0

# tar xzf nrpe.tar.gz && cd nrpe-nrpe-3.2.0 

Теперь мы скомпилируем его

 # ./configure --enable-command-args

# make all 

Для Ubuntu команда компиляции

 # ./configure --enable-command-args --with-ssl-lib=/usr/lib/x86_64-linux-gnu/

# make all 

Нам также нужно будет создать пользователя и группу nagios на удаленном хосте Linux

# make install-groups-users 

Мы установим двоичные файлы, демон NRPE, плагин check_nrpe и файлы конфигурации

# make install && make install-config 

Теперь мы сопоставим номер порта nrpe (5666) с именованным сервисом

# echo >> / etc / services

# echo '# Nagios services' >> / etc / services

# echo 'nrpe 5666 / tcp' >> / etc / services 

Мы установим службы и обязательно запустим nrpe при запуске системы

 # make install-init && systemctl enable nrpe.service 

Настройка брандмауэра

Теперь важно настроить брандмауэр для принятия всех сообщений nrpe

# iptables -I INPUT -p tcp -destination-port 5666 -j ACCEPT 

Мы установим iptables-persistent, который берет на себя автоматическую загрузку сохраненных правил iptables.

Для этого правила должны быть сохранены в файле /etc/iptables/rules.v4

 # apt install -y iptables-persistent 

Обязательно ответьте «yes», чтобы сохранить существующие правила.

Обычно вы можете использовать команду iptables-save для сохранения новых правил iptables.

На Centos 7 настройте брандмауэр, как показано ниже.

Авторизовать сервер nagios для связи с хостом

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

Это означает, что мы укажем информацию сервера nagios (IP-адрес и т. Д.).

Файл /usr/local/nagios/etc/nrpe.cfg — это тот, который содержит все настройки nrpe.

Найдите директиву allowed_hosts и добавьте частный IP-адрес вашего сервера Nagios

allowed_hosts = 172.16.20.128

Найдите директиву dont_blame_nrpe, чтобы определить, сможет ли демон NRPE разрешить клиентам указывать аргументы для выполняемых команд.

dont_blame_nrpe=1

Запуск и тестирование службы nrpe

Для запуска службы nrpe используйте приведенную ниже команду

# systemctl start nrpe.service

Теперь, чтобы убедиться, что все работает правильно, нам нужно убедиться, что демон nrpe впервые запущен

 # netstat -at | egrep "nrpe | 5666"
tcp 0 0 0.0.0.0:nrpe 0.0.0.0:* LISTEN
tcp6 0 0 [::]: nrpe [::]: * LISTEN 

Теперь мы можем проверить, работает ли nrpe локально, запустив плагин check_nrpe, который был установлен

 # / usr / local / nagios / libexec / check_nrpe -H localhost
NRPE v3.2.0 

У вас должен быть выход, который указывает, что плагин nrpe отлично работает на хосте Linux. Установленный файл конфигурации NRPE содержит несколько определений команд, которые мы можем использовать для мониторинга нашего удаленного хоста.

Теперь нам нужно настроить сервер nagios

b) Настройте сервер nagios для обнаружения удаленного хоста

В этой статье предполагается, что вы уже установили и настроили сервер Nagios на Debian 9.

Это означает, что теперь вы настроите его для обнаружения и добавления нашего удаленного хоста Linux.

Если вы еще не настроили его, следуйте этой статье.

На сервере nagios нам также нужно будет установить плагин nrpe и создать файл конфигурации для хоста Linux.

Установить плагин nrpe

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

Мы перейдем к нашему рабочему каталогу nagios

 # cd /opt/nagios

# wget --no-check-certificate -O nrpe.tar.gz https://github.com/NagiosEnterprises/nrpe/archive/nrpe-3.2.0.tar.gz

# cd nrpe-nrpe-3.2.0 
Теперь мы скомпилируем его
 # tar xzf nrpe.tar.gz && cd nrpe-nrpe-3.2.0

# ./configure --enable-command-args

# make all 

Мы установим бинарники и файлы конфигурации

 # make install && make install-config

Нам также нужно добавить службу nrpe

 # echo >> / etc / services

# echo '# Nagios services' >> / etc / services

# echo 'nrpe 5666 / tcp' >> / etc / services 

Мы установим службы и запустим обязательно nrpe при запуске системы.

 # make install-init && systemctl enable nrpe.service 

Настройка брандмауэра и службы nrpe

Мы также настроим брандмауэр, чтобы обеспечить связь nrpe со всеми узлами.

 # iptables -I INPUT -p tcp -destination-port 5666 -j ACCEPT</span>

# systemctl start nrpe.service 

Тестирование связи с удаленным хостом Linux nrpe

Нам нужно убедиться, что плагин check_nrpe может разговаривать с демоном NRPE на удаленном хосте.

Мы будем использовать плагин check_nrpe с IP-адресом удаленного хоста, как вы можете видеть ниже

# /usr/local/nagios/libexec/check_nrpe -H 172.16.20.129
NRPE v3.0 

Теперь мы будем использовать определение команды, чтобы попытаться контролировать службу (проверить загрузку процессора) на удаленном Linux.

 # /usr/local/nagios/libexec/check_nrpe -H 172.16.20.129 -c check_load
CRITICAL - load average: 0.01, 0.28, 0.31|load1=0.010;0.150;0.300;0; load5=0.280;0.100;0.250;0; load15=0.310;0.050;0.200;0; 

Вы можете видеть, что у нас есть ответ удаленного Linux для мониторинга.

Это показывает, что наш плагин отлично работает на удаленном хосте, и связь хороша.

c) Определите новый хост Linux и службы на сервере nagios.

Nagios содержит по умолчанию некоторые определения объектов в каталоге /usr/local/nagios/etc/objects на сервере nagios, который представляет каждый тип хоста, который вам нужно контролировать.

 # ls / usr / local / nagios / etc / objects /
commands.cfg printer.cfg switch.cfg localhost.cfg timeperiods.cfg windows.cfg
contacts.cfg templates.cfg 

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

 # mkdir /usr/local/nagios/etc/objects/servers 

Nagios имеет шаблонный файл templates.cfg, который содержит некоторые примеры шаблонов определений объектов, которые передаются другими хостами, службами и т. д.

Эти определения будут полезны, когда мы создадим каждое определение файла удаленного хоста.

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

 # cp /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/servers/linux.cfg 

Теперь мы отредактируем наш файл, чтобы добавить наш хост.

 # cd /usr/local/nagios/etc/objects/servers/ 
# vim linux.cfg
###############################################################################
###############################################################################
#
# HOST DEFINITION
#
###############################################################################
###############################################################################

# Define a host for the local machine

define host{
use linux-server ; Name of host template to use
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name debian9
alias Debian 9
address 172.16.20.129
}
###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################

# Define a service to "ping" the local machine

define service{
use generic-service ; Name of service template to use
host_name debian9
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

# Define a service to check the disk space of the root partition
# on the local machine. Warning if < 20% free, critical if
# < 10% free space on partition.

define service{
use generic-service ; Name of service template to use
host_name debian9
service_description Root Partition
check_command check_local_disk!20%!10%!
} 

Ваш файл должен выглядеть как нечто выше.

Этот вывод был усечен.

У вас будет больше определений служб.

Адрес директивы должен содержать адрес удаленного хоста для мониторинга.

Директива host_name должна содержать имя, которое будет отображаться на панели управления nagios, и оно должно указывать на вас, поэтому удалите значение localhost по умолчанию и замените его другим именем (debian9 — это имя в моем случае).

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

Определения службы, представленные в файле, являются стандартными.

Я дам вам ниже три описания сервисов, которые нужно добавить в конце файла для imap, ftp и smtp, если вам нужно контролировать эти службы на удаленном Linux.

 #Checking FTP service

define service{
use generic-service ; Inherit default values from a template
host_name debian9
service_description FTP
check_command check_ftp
}

#Checking SMTP service

define service{
use generic-service ; Inherit default values from a template
host_name debian9
service_description SMTP
check_command check_smtp
}

#Checking IMAP service

define service{
use generic-service ; Inherit default values from a template
host_name debian9
service_description IMAP
check_command check_imap
}

d) Update the nagios configuration file and restart the service

Now that we have created a new directory for our remote hosts, we need to indicate where nagios can find it in order to use it. So will edit the default nagios configuration file /usr/local/nagios/etc/nagios.cfg

vim /usr/local/etc/nagios.cfg
# OBJECT CONFIGURATION FILE(S)
# These are the object configuration files in which you define hosts,
# host groups, contacts, contact groups, services, etc.
# You can split your object definitions across several config files
# if you wish (as shown below), or keep them all in a single config file.

# You can specify individual object config files as shown below:
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg

# Definitions for monitoring the local (Linux) host
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
#cfg_file=/usr/local/nagios/etc/objects/linux.cfg

# Definitions for monitoring a Windows machine
#cfg_file=/usr/local/nagios/etc/objects/windows.cfg

# Definitions for monitoring a router/switch
#cfg_file=/usr/local/nagios/etc/objects/switch.cfg

# Definitions for monitoring a network printer
#cfg_file=/usr/local/nagios/etc/objects/printer.cfg

# You can also tell Nagios to process all config files (with a .cfg
# extension) in a particular directory by using the cfg_dir
# directive as shown below:

cfg_dir=/usr/local/nagios/etc/objects/servers
#cfg_dir=/usr/local/nagios/etc/servers
#cfg_dir=/usr/local/nagios/etc/printers
#cfg_dir=/usr/local/nagios/etc/switches
#cfg_dir=/usr/local/nagios/etc/routers 

Вы можете заметить, что я добавил директиву cfg_dir = /usr/local/nagios/etc/objects/ servers, которая указывает на каталог нового хоста.

Вы можете заметить, что директива cfg_file указывает различные файлы конфигурации сервисов и хостов, используемые nagios.

Это означает, что если мы не создали каталог, а просто файл linux.cfg в каталоге по умолчанию /usr/local/nagios/etc/objects, нам просто нужно добавить директиву cfg_file =/usr/local/nagios/etc/objects/linux.cfg, чтобы nagios обнаружил конфигурацию нашего удаленного хоста.

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

 # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios Core 4.3.2
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2017-05-09
License: GPL

Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
Checked 19 services.
Checked 2 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 17 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 2 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors: 0

Things look okay - No serious problems were detected during the pre-flight check 

Вы можете видеть, что у нас нет ошибок, поэтому мы можем перезапустить службу nagios

 # systemctl restart nagios 

e) Доступ к веб-интерфейсу nagios

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

На вашем локальном сервере доступ через http: //localhost/nagios

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

Вы можете видеть, что у нас есть наш новый удаленный Linux с его службами.

Мы еще не установили службу FTP на нашем удаленном хосте.

Вот почему эта служба находится в критическом состоянии.

2) Добавить хост Windows на сервер nagios

Для мониторинга хостов Windows с Nagios вам необходимо установить NSClient ++ на удаленные системы Windows.

NSClient ++ (nscp) — это агент, который должен быть развернут на удаленных хостах для мониторинга.NSClient ++ позволяет много способов проверить вашу систему:

  • Получить системные характеристики (процессор, диски …)
  • Получите показания счетчиков
  • Проверить файл журнала
  • Проверить запланированные заданиея и т. д.

a) Настройка хоста Windows

На удаленном хосте Windows нам нужно установить nsclient ++. Вы можете скачать его с официального сайта.
Мы загрузили файл msi NSCP-0.5.0.62-x64.msi

Установка и настройка nsclient

На этом шаге выберите «Next»

На этом этапе выберите custom

Укажите IP-адрес nagios и пароль nagios для доступа в Интернет.

Также используйте все опции «Enable» (проверьте плагины, check_nt, check_nrpe, веб-сервер, клиент nsca) и безопасный режим.

Вы можете установить его, оставив пароль пустым.

Вам не нужно указывать это.

Проверьте состояние NSClient

Теперь, когда он установлен, мы проверим, запущена ли служба NSClient, открыв services.msc.

Теперь выполните поиск  nsclient и проверьте его состояние (должен быть Running).

Убедитесь, что для типа запуска установлено значение «Automatic»,

Мы видим, что наш плагин работает.

Теперь мы можем настроить сервер nagios.

b) Настроить сервер nagios

На сервере Nagios нам нужно определить наш новый хост Windows для мониторинга со своими службами.

Добавить новое определение хоста Windows

Мы добавим новое определение узла для машины Windows, которое мы будем отслеживать, изменяя файл /usr/local/nagios/etc/objects/windows.cfg.

Что касается нашего хоста Linux, мы скопируем файл конфигурации Windows в каталоге серверов, который мы создали ранее.

Обычно мы уже находимся в каталоге /usr/local/nagios/etc/objects/servers/ на сервере.

Поэтому мы отредактируем файл хоста Windows.

 # vim windows.cfg

###############################################################################
###############################################################################
#
# HOST DEFINITIONS
#
###############################################################################
###############################################################################

# Define a host for the Windows machine we'll be monitoring
# Change the host_name, alias, and address to fit your situation

define host{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 172.16.20.131 ; IP address of the host
}

###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################

# Create a service for monitoring the version of NSCLient++ that is installed
# Change the host_name to match the name of the host you defined above

define service{
use generic-service
host_name winserver
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}

# Create a service for monitoring the uptime of the server
# Change the host_name to match the name of the host you defined above

define service{
use generic-service
host_name winserver
service_description Uptime
check_command check_nt!UPTIME
} 

Попытайтесь иметь что-то в качестве выхода выше.

Этот вывод был усечен.

IP-адрес должен быть вашим IP-адресом Windows.

Вы можете использовать другое значение host_name.

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

Это служба check_ping по умолчанию, присутствующая в файле хоста Linux.

 define service{
use generic-service ; Name of service template to use
host_name winserver
service_description PING
check_command check_ping!100.0,20%!500.0,60%
} 

Помните, что мы указали защиту паролем nagios.

Когда вы укажете пароль в файле конфигурации NSClient ++ на компьютере Windows, вам необходимо изменить существующее определение команды check_nt, чтобы включить пароль, изменив файл commands.cfg.

Поэтому откройте файл и исследуйте соответствующую строку, как показано ниже:

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

define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
} 

Нам нужно будет изменить определение команды check_nt, чтобы включить аргумент «-s <PASSWORD>», где <PASSWORD> — это пароль nagios, который вы указали на хосте Windows (nagios в нашем случае) во время установки NSClient ++.

Если вы не укажете пароль во время установки NSClient, вы можете пропустить этот шаг.

Если вы установили пароль и хотите его отменить, вы можете отредактировать файл NSClient с помощью блокнота в командной строке, как показано ниже.

И закомментируйте строку пароля, как показано ниже.

В это время вам не нужно указывать пароль в файле command.cfg, вы можете пропустить этот шаг.

Проверьте файл конфигурации nagios и перезапустите службу

Теперь, когда мы закончили определение нашего Windows-хоста, теперь мы можем проверить, не нашла ли наш nagios никаких ошибок.

Вы должны заметить, что мы даже не добавляли директиву в основной файл конфигурации nagios /usr/local/nagios/etc/nagios.cfg, потому что мы отредактировали файл Windows в каталоге серверов, который мы указали ранее.

Если бы не создать этот каталог, мы должны просто разобрать директиву cfg_file = /usr/local/nagios/etc/objects/windows.cfg

Теперь мы можем проверить файл на ошибки

 # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios Core 4.3.2
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2017-05-09
License: GPL

Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
Checked 27 services.
Checked 3 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 25 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 3 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors: 0

Things look okay - No serious problems were detected during the pre-flight check 

Вы можете видеть, что у нас нет ошибок и обнаружен новый хост. Теперь у нас есть 3 хоста

 # systemctl restart nagios 

Доступ к веб-интерфейсу nagios

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

Вы можете видеть, что добавлен наш хост Windows.

Если вы посмотрите на службы, вы можете увидеть check_ping, которое мы добавили.

Мы не запустили проводник, поэтому вы можете увидеть критическое сообщение об этом.

Теперь у вас есть два новых сервера, добавленных на панели управления nagios.

Заключение

Мы увидели, как добавить хосты Linux и Windows на сервер Nagios, реализованные на Debian 9.

Мы описали, как установить и настроить NRPE, который отвечает за роль мониторинга.

Он используется для мониторинга компьютеров Linux и Windows с Nagios.

На хостах Windows вам необходимо установить NSClient ++.

4 комментария на “Как отслеживать хосты с помощью Nagios NRPE на Debian 9

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40