В нашей недавней статье мы показали, как установить 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)/ 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 # 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 », где— это пароль 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 ++.
0 Комментарии