| Расширение возможностей Net - SNMP |
|
Как уже говорилось ранее, в большинстве операционных систем *nix пакет Net-SNMP установлен в виде агента. По умолчанию агент может возвращать определенный перечень информации, однако существует возможность расширять этот перечень. Можно было бы указать агенту на необходимость собирать некоторые сведения и затем возвращать их по протоколу SNMP. Файл EXAMPLE.conf, поставляемый в составе Net-SNMP, - это один из лучших источников информации по расширению возможностей Net-SNMP. Нелишним будет обратиться к команде man snmpd.conf, которая выводит более подробную информацию с описанием API. Если вас интересуют вопросы расширения возможностей «родных» агентов пакета, оба эти источника справочной информации могут стать для вас незаменимыми. С точки зрения программистов на языке Python, возможность расширения Net-SNMP является одним из самых захватывающих аспектов работы с SNMP, потому что позволяет разработчикам писать программный код, выполняющий мониторинг всего, что они сочтут необходимым, и дополнительно иметь внутреннего агента, отвечающего предъявляемым условиям. Пакет Net-SNMP предлагает достаточно много способов расширения возможностей агента, и для начала мы напишем программу «Hello World», которая будет выполняться по запросу snmp. Первый шаг заключается в создании простого файла snmpd.conf, посредством которого будет запускаться наша программа «Hello World», написанная на языке Python. В примере 7.4 показано, как выглядит этот файл в операционной системе Red Hat. Пример 7.4. Конфигурационный файл SNMP, предусматривающий вызов программы «Hello World»
или сначала выполнить такую команду:
а затем послать демону сигнал:
После этого следует сообщить демону snmpd о необходимости перечитать конфигурационный файл. Сделать это можно тремя разными способами. В Red Hat можно использовать такую команду: Наконец, можно с помощью команды snmpset присвоить целое число (1) параметру UCD-SNMPMIB: :versionUpdateConfig.0 и тем самым вынудить демон snmpd перечитать конфигурационный файл. Теперь, когда демон snmpd перечитал измененный файл snmpd.conf, мы можем двинуться дальше и послать нашей машине запрос с помощью команды snmpwalk или с помощью расширения Net-SNMP из оболочки IPython. Ниже показано, что возвращает команда snmpwalk:
Этот запрос требует некоторых пояснений, так как наблюдательный читатель может задаться вопросом, откуда взялся OID 1.3.6.1.4.1.2021.8. Этот OID соответствует идентификатору ucdavls.extTable. Когда создается расширение в snmpd.conf, оно присваивается этому OID. Дело несколько осложняется, когда возникает потребность создать свой OID. Для этого необходимо обратиться в организацию iana.org и получить уникальный номер для своего предприятия. После этого можно будет использовать полученный номер для создания специализированных запросов агенту. Основная причина таких сложностей состоит в необходимости сохранить однородность пространства имен и избежать конфликтов с числами, которые, возможно, получат поставщики оборудования в будущем. Истинная сила Python заключается вовсе не в том, чтобы получить вывод от единственной команды - это было бы слишком просто. Ниже приводится пример сценария, который определяет общее число обращений к веб-серверу Apache из броузера Firefох, анализируя файл журнала, и возвращает результат под нестандартным OID предприятия. Начнем рассмотрение с конца и сначала посмотрим на полученные результаты:
Если отыскать строку со значением 100.101.1, можно увидеть вывод, полученный от сценария, который анализирует файл журнала веб-сервера Apache и отыскивает записи, свидетельствующие об обращениях с помощью броузера Firefox. Затем сценарий суммирует их и возвращает по протоколу SNMP. В примере 7.5 приводится исходный текст сценария, который запускается при выполнении запроса к данному OID. Пример 7.5. Сценарий поиска числа обращений к веб-серверу Apache из броузера Firefox
Чтобы заставить этот запрос работать, мы сначала должны добавить в файл snmpd.conf информацию об этом сценарии, как показано ниже:
Самая магическая часть здесь - последняя строка с идентификатором .1.3.6.1.4.1.2021, где 28664 является числом нашего предприятия, а число 100 — просто некоторое число, которое мы решили использовать для примера. Это очень важно - следовать общепринятым правилам и использовать свое число предприятия, если вы планируете заниматься расширением возможностей SNMP. Благодаря этому вы сумеете избежать конфликтов при использовании в команде snmpset чисел, уже занятых кем-то другим. Мы склонны считать, что тема использования SNMP является одной из самых захватывающих тем и что при этом SNMP по-прежнему остается малоизведанной областью. Можно привести массу примеров, когда расширение возможностей Net-SNMP может быть полезным, а при аккуратном использовании SNMPvS вы сможете делать удивительные вещи, реализовать которые с помощью протокола SNMP совсем несложно и для которых применение ssh и сокетов могло бы показаться естественным выбором.
Related Articles
Set as favorite
Bookmark
Email This
Hits: 437 Комментарии (0)RSS feed CommentsНаписать комментарий |