Плагин check_sc_continent_snmp для базового мониторинга аппаратной платформы NGFW "Код Безопасности Континент 4" в Icinga

Plugin check_sc_continent_snmp for basic monitoring of the NGFW hardware platform "Security Code Continent 4"/"Код Безопасности Континент 4" in Icinga"Континент 4" это Next Generation Firewall (NGFW) от российского разработчика средств сетевой безопасности и защиты информации - компании ООО "Код Безопасности". Из основных возможностей можно выделить систему предотвращения вторжений, потоковый антивирус, URL-фильтрацию и категоризацию, контроль приложений с механизмом глубокого анализа трафика, модуль поведенческого анализа на основе машинного обучения, а также модуль шифрования трафика по алгоритмам ГОСТ. Для мониторинга различных параметров NGFW имеется отдельная Система мониторинга и аудита комплекса "Континент". Но в этой заметке мы поговорим не об этой системе, а о возможностях, которые даёт производитель для интеграции с существующими системами мониторинга.

Рассматриваемая в нашем случае железка физически представляет собой аппаратную платформу в форм-факторе RM 1U с кодом модели IPC-R1000. В терминологии производителя эта платформа называется "узел безопасности", но мы, для простоты, будем называть её сервером.

"Континент 4" IPC-R1000 - Next Generation Firewall (NGFW) от российского разработчика средств сетевой безопасности и защиты информации - компании ООО "Код Безопасности"

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

В документации к продукту можно найти Перечень OID из CONTINENT-SNMP-MIB, которые предоставляет производитель для возможности опроса по протоколу SNMP v2/v3.

Изучая вопрос мониторинга серверов "Континент 4" стало очевидно, что готового решения в виде плагинов к системам мониторинга типа Icinga или Nagios попросту нет.

В подобных ситуациях в качестве быстрого решения можно попробовать поработать
с универсальными плагинами, которые позволяют опрашивать устройство по произвольным OID. Например, плагин "apps::protocols::snmp::plugin" из состава Centreon Plugins позволяет оперативно создавать отдельную службу
мониторинга, отталкиваясь от произвольного OID с описанием в JSON-запросе желаемых параметров метрики perfdata и порогов.

$ ./centreon_plugins.pl --plugin=apps::protocols::snmp::plugin --snmp-version '2c' --hostname' 'KOM-SW29' --snmp-community 'mysecret' --mode=numeric-value --config-json '[ { "oid": ".1.3.6.1.4.1.54555.1.1.1.1.2.2.0", "perfdata_name": "cpu.utilization.percentage", "perfdata_max": "100" , "format": "CPU usage is %s%%", "warning": "0:90", "critical": "0:98" } ]'

OK: CPU usage is 4% | 'cpu.utilization.percentage'=4;0:90;0:98;;100

Неоднократно я использовал эту штуку в "мутных"
случаях, когда есть нестандартный/нетипичный OID, а писать отдельный плагин из-за этого не очень интересно.

The "apps::protocols::snmp::plugin" plugin from Centreon Plugins allows you to quickly create a separate monitoring service, based on an arbitrary OID with a description in a JSON request of the desired parameters of the perfdata metric and thresholds. Yarus Switch CPU Usage in Icinga

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

Было решено провести эксперимент с возможностями одного из распиаренных нынче чат-ботов искусственного интеллекта Deepseek. Ранее для задач программирования мне не приходилось использовать ИИ и у меня сложилось двойственное впечатление. С одной стороны можно за относительно короткое время получить готовое решение, но с другой стороны за это самое время Deepseek может попить немало крови, пока будет получен желаемый результат. Скрипт создавался поэтапно с тестированием каждого нового добавляемого режима. При этом каждый раз приходилось перепроверять работу уже проверенных ранее режимов, так как Deepseek периодически "дурковал" (то вдруг начнёт иероглифы рандомно вставлять в ранее работающем коде, то затеет "упрощать" логику, ломая ранее оттестированное, то на него нападают приступы забытия предыдущих промптов в рамках одного чата, то попросту не отвечает на запросы часами). В конечном итоге у нас появился самостоятельный плагин мониторинга для Icinga, написанный на Perl.

Скачать плагин можно c GitHub.

Плагин требует наличия утилит snmpget/snmpwalk и имеет несколько режимов работы. Эти режимы обозначены во встроенной справке с описанием допустимых параметров вызова :

$ ./check_sc_continent_snmp.pl --help

Пример использования плагина в режиме 'sensors' для мониторинга текущего состояния температурных сенсоров сервера:

$ ./check_sc_continent_snmp.pl --mode=sensors --verbose --host 'KOM-FW001' --snmp-version '3' --username 'myusr' --auth-protocol 'MD5' --auth-password 'my.Auth!Pwd' --priv-protocol 'AES' --priv-password 'my!Priv.Pwd' --warning-cpu '5:55' --warning-hdd '5:45' --critical-cpu '1:65' --critical-hdd '1:50'

[OK] All 2 components are ok [2/2 temperatures].
\_ [OK] Temperature sensor 'CPU' is 28C
\_ [OK] Temperature sensor 'HDD' is 43C
 | 'cpu.temperature.celsius'=28;5:55;1:65 'hdd.temperature.celsius'=43;5:45;1:50

Пример использования плагина в режиме 'sensors' для мониторинга текущего состояния температурных сенсоров сервера Континент 4

Другие примеры использования плагина в разных режимах вызова ('sensors', 'cpu', 'memory', 'swap', 'storage', 'system', 'cluster', 'firewall', 'ips') также можно найти во встроенной справке.

Результат настройки плагина мониторинга check_sc_continent_snmp в Icinga для NGFW "Security Code Continent 4"/"Код Безопасности Континент 4"

В Icinga Director плагин подключается по аналогии с примерами, которые мы уже рассматривали ранее в цикле заметок об Icinga.

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