"Континент 4" это Next Generation Firewall (NGFW) от российского разработчика средств сетевой безопасности и защиты информации - компании ООО "Код Безопасности". Из основных возможностей можно выделить систему предотвращения вторжений, потоковый антивирус, URL-фильтрацию и категоризацию, контроль приложений с механизмом глубокого анализа трафика, модуль поведенческого анализа на основе машинного обучения, а также модуль шифрования трафика по алгоритмам ГОСТ. Для мониторинга различных параметров NGFW имеется отдельная Система мониторинга и аудита комплекса "Континент". Но в этой заметке мы поговорим не об этой системе, а о возможностях, которые даёт производитель для интеграции с существующими системами мониторинга.
Рассматриваемая в нашем случае железка физически представляет собой аппаратную платформу в форм-факторе RM 1U с кодом модели IPC-R1000. В терминологии производителя эта платформа называется "узел безопасности", но мы, для простоты, будем называть её сервером.
Повышение доступности сервисов, предоставляемых "Континент 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, а писать отдельный плагин из-за этого не очень интересно.
Но в нашем случае с Континентами данный приём оказался не сильно удобен, так как при запросе данных по 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', 'cpu', 'memory', 'swap', 'storage', 'system', 'cluster', 'firewall', 'ips') также можно найти во встроенной справке.
В Icinga Director плагин подключается по аналогии с примерами, которые мы уже рассматривали ранее в цикле заметок об Icinga.
RSS - Записи
Добавить комментарий