Пользовательская реализация SNMP Trap в .NET - PullRequest
3 голосов
/ 03 октября 2009

Мне нужно создать механизм мониторинга с использованием SNMP (в .NET). Я думаю, что мы будем использовать компонент nsoftware для выполнения большей части работы.

Похоже, мы должны использовать «ловушки» для связи агента с сервером. У нас будет несколько разных ловушек и различной информации, детализирующей каждую ловушку. Каков наилучший способ реализации пользовательских ловушек? То есть, как лучше всего не только отправить ловушку, но и отправить информацию, описывающую ловушку, нашему «менеджеру snmp»? Я думаю, что это делается с помощью «переменных привязок». Чтобы использовать «привязки переменных», нужно ли нам создавать собственный «номер предприятия» и использовать ловушку «EnterpriseSpecific»? Должны ли мы реализовать наши собственные пользовательские MIB или мы можем просто отправить нужные нам данные с помощью ловушки (через привязки переменных)?

Ответы [ 2 ]

4 голосов
/ 03 октября 2009

Если вы не хотите уведомлять об одной из 5 предопределенных ловушек (например, холодный старт, теплый старт): да, вам придется определить ловушку, специфичную для предприятия, и вам нужно будет выделить идентификаторы объектов (и их множество).

Параметры действительно передаются в переменных привязках; эти структуры определены как

VarBind ::=
         SEQUENCE {
           name ObjectName,
           value ObjectSyntax
         }

VarBindList ::= SEQUENCE OF VarBind

ObjectName ::= OBJECT IDENTIFIER
ObjectSyntax ::= CHOICE {
     simple SimpleSyntax,
     application-wide ApplicationSyntax
}

SimpleSyntax ::= CHOICE {
     number INTEGER,
     string OCTET STRING,
     object OBJECT IDENTIFIER,
     empty  NULL
}

ApplicationSyntax ::=  CHOICE {
      address  NetworkAddress,
      counter  Counter,
      gauge    Gauge,
      ticks    TimeTicks,
      arbitrary  Opaque
}

Вам как-то нужно сообщить своей библиотеке, каково имя и значение; библиотека должна предоставлять API для поддержки различных типов данных, доступных в качестве значений. Обратите внимание, что переменные «names» снова являются идентификаторами объектов.

1 голос
/ 15 октября 2009

Я предлагаю вам сначала определить, сколько случаев ваш агент будет отправлять данные обратно на сервер / монитор.

Затем вам нужно решить, как различать эти случаи (используя разные ID или упаковывая разные привязки переменных).

А теперь запишите несколько пакетов на листе бумаги и начните создавать определение ловушки в документе MIB.

Что будет дальше, зависит от того, какую библиотеку вы используете для реализации диалога. Что ж, nsoftware one - хороший выбор.

Кстати, я скорее отправляю пакет TRAP v2 или INFORM вместо TRAP v1.

С уважением,

Лекс Ли http://sharpsnmplib.codeplex.com

...