===== Плагин мониторинга доступности TCP-прослушивателей check_tcp ===== Плагин проверки доступности TCP-порта **check_tcp** устанавливается в систему в составе пакетов **nagios-plugins** или **nagios-plugins-all**. Найти плагин в системе и получить информацию о его ключах можно так:
# locate check_tcp /usr/lib/nagios/plugins/check_tcp # /usr/lib/nagios/plugins/check_tcp --help
\\ ==== Пример использования плагина check_tcp ==== Плагин **check_tcp** может быть полезен тогда, когда нужно проверить доступность какой-то сетевой службы того или иного Хоста.\\ Для примера рассмотрим использование плагина check_tcp для проверки доступности TCP-портов, которые используются клиентами при подключении к сетевым USB-концентраторам **Digi AnywhereUSB**. Для этих устройств нам потребуется настроить мониторинг ряда портов: **TCP 3422**, **3423**, **771**, **1027**.\\ Настройку будем выполнять в **Icinga Web 2** с модулем **Icinga Director 1.3.1** \\ === Создаём Команду === В первую очередь создадим в интерфейсе **Icinga Director** новую Команду (**Command**) с именем, например, "**check_tcp**": {{ :icinga:pasted:20170612-101555.png }} В свойствах Команды на закладке **Arguments** описываем аргументы, которые мы будем использовать для вызова плагина **check_tcp**. Обратите внимание на то, что плагин может принимать множество разных аргументов, а мы используем только некоторые их них. {{ :icinga:pasted:20170612-102133.png }} На закладке **Fields** добавляем дополнительное Поле Данных, через которое будем передавать номер TCP-порта. {{ :icinga:pasted:20170612-102959.png }} В конечном итоге, в свойствах созданной Команды "**check_tcp**" на закладке **Preview** в нашем случае отображается следующая результирующая конфигурация, которая попадёт в конфигурацию Icinga Director (zones.d/director-global/commands.conf) при очередном развёртывании: object CheckCommand "check_tcp" { import "plugin-check-command" command = [ PluginDir + "/check_tcp" ] timeout = 1m arguments += { "--hostname" = { required = true value = "$address$" } "--port" = { required = true value = "$check_tcp_port$" } "--use-ipv4" = {} } } \\ === Создаём Группы Хостов === Создание Групп Хостов может быть полезным для того, чтобы для Шаблона Службы, который мы в дальнейшем будем делать на основе Команды "**check_tcp**", можно было выполнить привязку правил Apply Rule к этим группам.\\ В моём случае используется два типа устройств Digi AnywhereUSB - 5-портовые и 14-портовые концентраторы. В рамках нашей задачи эти два типа различаются тем, что имею разный набор прослушиваемых TCP-портов: 14-портовые слушают порты TCP 3422/3423/771/1027, а 5-портовые слушают только порт 3422. Поэтому мы сделаем две Группы Хостов "**Digi-AnywhereUSB**" и "**Digi-AnywhereUSB-5**" {{ :icinga:pasted:20170612-105024.png }} Созданные Группы Хостов для привязки к Хостам могут использовать правила динамической привязки. В моём случае используется привязка на основании основного идентификатора SNMP System OID, о настройке и применении, которого рассматривалось в статье [[https://blog.it-kb.ru/2017/05/30/deploy-and-configure-icinga-2-on-debian-8-part-13-1-snmp-probe-monitoring-of-network-devices-as-apc-eaton-ups-nmc-in-icinga-director/|Настройка мониторинга сетевых устройств в Icinga Director]]. Но это касается только Группы Хостов "**Digi-AnywhereUSB**", так как подразумевается, что членство в этой Группе будет назначаться устройствам типа **Digi AnywhereUSB/14**, которые могут быть опрошены по протоколу SNMP. Устройства, типа **Digi AnywhereUSB/5** не имеют поддержки протокола SNMP, и поэтому привязка членства таких устройств в Группе Хостов "**Digi-AnywhereUSB-5**" будет выполняться вручную. В конечном итоге, в свойствах созданных Групп Хостов на закладке **Preview** в нашем случае отображается следующая результирующая конфигурация, которая попадёт в конфигурацию Icinga Director (zones.d/director-global/hostgroups.conf) при очередном развёртывании: object HostGroup "Digi-AnywhereUSB" { display_name = "Digi AnywhereUSB USB over IP Switch" assign where host.vars.snmp_SNMPv2_MIB_sysObjectID == "1.3.6.1.4.1.332.11.6" } object HostGroup "Digi-AnywhereUSB-5" { display_name = "Digi AnywhereUSB/5 Single-Hosted" } \\ === Создаём Шаблон Службы === Создаем Шаблон Службы с именем, например, "**TCP Port Availability**". В свойствах Шаблона Службы в качестве **Check command** выбираем ранее созданную Команду "**check_tcp**" {{ :icinga:pasted:20170612-111017.png }} Определяем параметры выполнения, например следующим образом: {{ :icinga:pasted:20170612-111425.png }} В конечном итоге, в свойствах созданного Шаблона Службы "**TCP Port Availability**" на закладке **Preview** в нашем случае отображается следующая результирующая конфигурация, которая попадёт в конфигурацию Icinga Director (zones.d/director-global/service_templates.conf) при очередном развёртывании: template Service "TCP Port Availability" { check_command = "check_tcp" check_period = "Always" check_interval = 1m enable_notifications = true enable_active_checks = true enable_passive_checks = false enable_event_handler = false enable_perfdata = true volatile = false } \\ === Создаём правила Apply Rule === Для созданного Шаблона Службы "**TCP Port Availability**" создаём правила **Apply Rule**. Данные правила будут отвечать за динамическую привязку Служб мониторинга к Хостам на основании членства в Группах Хостов. Создадим несколько Служб, по одной Службе на TCP-порт, который нужно мониторить. {{ :icinga:pasted:20170612-113023.png }} \\ === Проверяем результат === ---- Дополнительный источник информации: * [[https://www.monitoring-plugins.org/doc/man/check_tcp.html|Monitoring Plugins Development Team - The check_tcp Plugin]] ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 10.06.2017 11:35 {{tag>Icinga Monitoring Plugin check_tcp nagios-plugins "Icinga Director"}} ~~DISCUSSION~~