2012-01-27 71 views
6

He desarrollado una aplicación especial para una compañía bajo .net en C# y se utiliza desde hace años. Ahora está desarrollado, una de las principales características nuevas que tengo que implementar es integrarlo con otro software enviándole trampas SNMP en algunas situaciones de alerta.Defina MIB y envíe SNMP trap en .net

Soy un desarrollador experimentado pero nunca he usado SNMP. Busqué en Google todo el día, pero cada vez estoy más confundido sobre este tema. No tengo un "punto de partida" claro. Entiendo los conceptos básicos de SNMP, pero no sé dónde ni cómo comenzar la implementación.

Tengo los datos que debo enviar a través de SNMP trap, tiene unas 10 propiedades, algunas fechas, números y cadenas. Debería crear definiciones MIB en estas propiedades. Más tarde, debería implementar una característica en mi aplicación que envíe trampas SNMP basadas en esta MIB.

El proyecto está desarrollado en .net 4 en C#. Encontré esta biblioteca que parece prometedora: http://sharpsnmplib.codeplex.com/ Tiene alguna muestra sobre el envío de trampas SNMP.

Mi problema es: ¿por dónde empezar? ¿Cómo puedo definir los archivos MIB? Sé que son algunos archivos de texto que deben compilarse, pero no han encontrado ningún editor de MIB ni ayuda sobre este tema.

¡Se agradece cualquier ayuda!

Gracias!

Respuesta

3

No soy un experto, pero tengo la experiencia de estar en el mismo lugar que usted y finalmente encontré algo suficiente para mi proyecto.

Utilicé esta biblioteca codeplex que mencionó anteriormente y encontré que es bastante buena. Aquí hay algunos consejos para que pueda pasar por el http://sharpsnmplib.codeplex.com/.

  • En lo que a mi entender va un archivo MIB se requiere cuando se necesita hacer una snmpget y snmpset
    • Esto es algo que le informa al servidor y el servidor volviendo a su cliente pidiendo más detallada información, y puede ser requerido si usted requiere una amplia información para ser compartida acerca de su aplicación
  • Si todo lo que necesita es sólo trampas, se puede hacer esto
    • Ejecutar el snmpd.exe que actuará como el SNMP recibimiento del servidor g trampas enviadas desde su aplicación.
    • Escriba un programa similar al snmptrapd.exe y envíe sus trampas.

El enlace http://www.net-snmp.org/wiki/index.php/TUT:snmptrap es un buen año para conseguir una comprensión básica y obtener información más biblioteca.

Editar: Apenas se perdió un punto. Necesitarás un archivo MIB si utilizas get y lo configuras para snmp. Si todo lo que tienes son trampas, puede que no lo necesites.

+1

Si es así, ¿cómo puedo definir el formato ('campos de datos') de una trampa SNMP? – Tom

0

También puede probar con snmpsharpnet que es muy útil para jugar con SNMP en la parte superior de .NET?

Como editor MIB utilizo MG-SOFT MIB Browser, la edición profesional se vende con Visual MIB Builder para Windows.

1

ya que al parecer se está utilizando el sistema operativo Windows para trabajar con SNMP, entonces usted necesita para crear la costumbre agente de extensión SNMP con el fin de añadir la costumbre OID SNMP y trampas que corresponden a su sistema. Cada OID literalmente presentará una variable donde puede almacenar su información. Here is an example of such DLL. Por lo que sé, los archivos MIB solo se usan en Windows como referencia para los agentes SNMP y no se pueden usar para agregar OID nuevos sin crear un agente SNMP personalizado.

Cuando tenga su DLL de agente de SNMP personalizado, debe apuntarlo al registro. Puede hacerse así (ejemplo):

[HKEY_LOCAL_MACHINE\SOFTWARE\Symbol\MyAgent\CurrentVersion] 
"Pathname"="C:\\MyCustomAgent\\MyAgent.dll" 

;Add number of agent to the list (max num registered + 1) 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents] 
"10"="SOFTWARE\\Symbol\\MyAgent\\CurrentVersion" 

Después de eso deberá reiniciar su servicio SNMP. Si todo está bien, podrá usar su nuevo OID personalizado para establecer \ obtener algunos datos.

Para leer \ escribir en sus variables de SNMP, necesitará usar el administrador de SNMP. Usualmente estoy usando Sharpsnmplib para hacerlo. También hay administradores de GUI que serán útiles durante el proceso de depuración, por ejemplo: iReasoning MIB Browser.

Aquí es código de ejemplo para utilizar ese lib:

using System.Collections.Generic; 
using System.Net; 
using System.Net.Sockets; 
// SNMP Lib references 
using Lextm.SharpSnmpLib; 
using Mono.Options; 
using Lextm.SharpSnmpLib.Messaging; 
using Lextm.SharpSnmpLib.Security; 
... 
List vList = new List(); 
ISnmpData data; 
data = new OctetString("test"); // variable to add in to string OID 
Variable test = new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.6.0"), data); // OID 
vList.Add(test); 
VersionCode versionH = VersionCode.V2; // SNMP protocol version to use 
IPAddress ipH; 
IPAddress.TryParse("127.0.0.1", out ipH); 
IPEndPoint receiverH = new IPEndPoint(ipH, 161); 
foreach (Variable variable in 
     Messenger.Set(versionH, receiverH, new OctetString("private"), vList, 10))// set variable 
     // Arguments: (ver of SNMP, IP, group, iList containing OID and variable, timeoout) 
     { 
      // output variable 
     } 
... 

También se puede leer el artículo sobre el trabajo con SNMP en el sistema operativo Windows en TechNet: link. Este artículo no es nuevo, pero podría ayudarlo a comprender cómo usar wok con SNMP en Windows.

+0

"necesita crear un agente de extensión SNMP personalizado". Esto fue cierto hace quince años (cuando hice la última programación de SNMP) pero ahora puede enviar una trampa usando SnmpSendMsg desde la última API de WinSNMP (aunque ahora tiene más de una década). Ejemplo aquí: http://stackoverflow.com/questions/4498618/problem-sending-snmp-trap-and-manager-recognizing-it – arx

1

Si solo necesita enviar capturas, no tiene que definir MIB. Las MIB son para que otras partes entiendan el significado de las variables en él. Puede documentarlo utilizando otro formato, como un archivo de texto.

Para enviar capturas, puede hacer uso de una biblioteca SNMP de C#, o simplemente invocar el programa snmptrap directamente. Net-snmp proporciona herramientas de línea de comando gratuitas para enviar trampas. (http://net-snmp.sf.net). Su uso es bastante simple.

Para verificar si las trampas se han enviado con éxito, puede utilizar el navegador MIB de ireasoning gratuito (http://ireasoning.com/mibbrowser.shtml) para recibirlas. Si se puede recibir, generalmente significa que tus trampas están bien.

1

Así que desde http://www.net-snmp.org/tutorial/tutorial-5/commands/snmptrap.html

La notificación SNMPv2

El formato de la notificación SNMPv2 es algo diferente. La definición en el archivo MIB es la siguiente

NOTIFICATION-TEST-MIB DEFINITIONS ::= BEGIN 
     IMPORTS ucdavis FROM UCD-SNMP-MIB; 

demonotifs OBJECT IDENTIFIER ::= { ucdavis 991 } 

demo-notif NOTIFICATION-TYPE 
    STATUS current 
     OBJECTS { sysLocation } 
    DESCRIPTION "Just a test notification" 
     ::= { demonotifs 17 } 

END