Расширение возможностей SNMP агента в Windows

26 Дек
2011


Протокол SNMP (англ. Simple Network Management Protocol — простой протокол управления сетями) давно зарекомендовал себя как простое и удобное средство сбора информации о работе различных устройств и систем. Агенты SNMP реализованы для множества операционных систем что даёт возможность строить масштабируемые системы мониторинга функционирования инфраструктуры.

К сожалению, штатный агент Windows, несмотря на кажущуюся информативность, ограничен в вариантах доступной информации о работе системы и в особенности сторонних приложений, работающих на сервере. В этой статье описано как получать по SNMP больше данных о работе сервера, в частности значения счётчиков производительности ОС и любые другие данные, которые могут предоставлять приложения работающие на сервере, например количество подключённых пользователей к серверу приложений 1С 8 или любую другую информацию, которую Вы захотите получить.


SNMP Агент Windows позволяет расширить охват данных при помощи подключения дополнительных библиотек, что дает возможность получить доступ к нужным данным. Информацию по написанию таких расширений можно найти в MSDN, но мы воспользуемся одним из готовых, а именно — snmptools. Эта библиотека позволяет передавать информацию полученную из счетчиков произовдительности Windows или результат выполнения консольной программы/скрипта в ответах SNMP агента.

snmptools поддерживает все современные версии Windows, начиная с XP и заканчивая 2008R2 и имеет функционал, достаточный для решения большинства задач по мониторингу.

Качаем архив с библиотекой.В нем лежат:

  • snmptools.dll и snmptools64.dll — собственно библиотеки расширения SNMP Агента. 32-х и 64-х битная версии соответственно
  • counters.sample и traps.sample — файлы с примерами конфигурации
  • .reg файлы с примерами регистрации расширения в системном реестре
  • .reg файлы с примерами регистрации расширения в системном реестре
  • perf32.exe — программка для доступа к значениям счетчиков производительности из командной строки
  • папки с примерами скриптов

Для установки копируем библиотеку нужной архитектуры в системную папку Windows. Рядом создаем ini файл с конфигурацией (по умолчанию предлагается его ложить в корень диска С:). После чего изменяем путь к библиотеке и конфигурации в .reg файле и импортируем ключи в реестр. Вуаля — после перезапуска службы SNMP библиотека будет загружена, и будет возвращать данные описанные в файле конфигурации.

Файл конфигурации представляет собой ini-файл с простой структурой. Заголовок раздела задает обрабатываемый oid. Параметры которых всего 2 — type и counter — указывают какую информацию возвращать.


    ;
    ;Скалярные счетчики
    ;
    ;Просто текстовая строка
    [1.3.6.1.4.1.15.1]
    type=string
    counter=this is a test
       
    ;Значение счетчика производительности
    [1.3.6.1.4.1.15.2]
    counter=LogicalDisk\Free Megabytes\_Total
       
    ;Результат выполнения консольной команды.
    [1.3.6.1.4.1.15.3]
    type=exec
    counter=cmd /c ver
         
    ;Результат выполнения VB скрипта
    [1.3.6.1.4.1.15.4]
    type=exec
    counter=cscript /nologo c:\1c_sessions.vbs
         
    ;
    ;Табличные объекты
    ;
    ;Индекс
    [1.3.6.1.4.1.15.10]
    type=string
    counter=2
         
    ; Описательные поля
    [1.3.6.1.4.1.15.10.1]
    type=string
    counter=2
    [1.3.6.1.4.1.15.10.1.1]
    type=string
    counter=Available Bytes
    [1.3.6.1.4.1.15.10.1.2]
    type=string
    counter=Committed Bytes
         
    ; Информационные поля
    [1.3.6.1.4.1.15.10.2]
    type=string
    counter=2
    [1.3.6.1.4.1.15.10.2.1]
    counter=memory\Available Bytes
    [1.3.6.1.4.1.15.10.2.2]
    counter=memory\Committed Bytes
       
    ;Необходимо указывать конец для корректной работы последовательного обхода с помощью snmp_get_next
    [1.3.6.1.4.1.15.9999]
    type=string
    counter=EOF




И проверим работу:


> snmpwalk -v 2c -c public -O a 192.168.1.1 1.3.6.1.4.1.15
SNMPv2-SMI::enterprises.15.1 = STRING: "this is a test"
SNMPv2-SMI::enterprises.15.2 = INTEGER: 160922
SNMPv2-SMI::enterprises.15.3 = STRING: "Microsoft Windows [...... 5.2.3790]"
SNMPv2-SMI::enterprises.15.4 = INTEGER: 4
SNMPv2-SMI::enterprises.15.10 = INTEGER: 2
SNMPv2-SMI::enterprises.15.10.2 = INTEGER: 2
SNMPv2-SMI::enterprises.15.10.2.1 = STRING: "Available Bytes"
SNMPv2-SMI::enterprises.15.10.2.2 = STRING: "Committed Bytes"
SNMPv2-SMI::enterprises.15.10.3 = INTEGER: 2
SNMPv2-SMI::enterprises.15.10.3.1 = INTEGER: 427024384
SNMPv2-SMI::enterprises.15.10.3.2 = INTEGER: 522661888
SNMPv2-SMI::enterprises.15.9999 = STRING: "EOF"
End of MIB





Если что-то не заладилось можно включить отладку работы библиотеки установив в единицу параметр HKEY_LOCAL_MACHINE\SOFTWARE\snmptools\currentversion\debug. При этом отладочные сообщения будут сохранятся в файл c:\log.txt

Также можно настроить отправку трапов. Для этого нужно в настройках SNMP Агента Windows указать адрес получателя трапов, и в реестре в ветке HKEY_LOCAL_MACHINE\SOFTWARE\snmptools\currentversion создать строковой параметр traps с путем к файлу конфигурации трапов. Опционально можно добавить параметр trap_delay типа DWord для указания периодичности отправки трапов в миллисекундах.

Как видим snmptools это простой и удобный инструмент который может немного помочь в контроле увеличения энтропии вселенной и селекции зеленых хомячков.;-)

Если же Вам недостаточно функциональности предоставляемой snmptools, например требуются расширенные возможности протокола SNMP, типа управления сервером — можете попробовать использовать более продвинутые аналоги например, SNMPInformant

И в дополнение пример скрипта на VBScript для получения количества подключенных пользователей к серверу приложений 1Сv82.



Set Connector = CreateObject("V82.COMConnector")
Set Connection = Connector.ConnectAgent("tcp://localhost")
 
Clasters = Connection.GetClusters()
Set Cluster = Clasters (0)
Connection.Authenticate Cluster , "user", "password"
 
Sessions=Connection.GetSessions (Cluster)
 
WScript.StdOut.WriteLine (UBound(Sessions)+1)




Сайт snmptools2 erwan.l.free.fr/snmptools/
Архив с snmptools2 erwan.l.free.fr/snmptools/snmptools2.zip
32-х битный инсталлятор erwan.l.free.fr/snmptools/snmptools32.exe
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх