2010-12-14 14 views
5

Estoy trabajando en Debian y tengo este servidor que queremos monitorear.
La aplicación es nuestra y hay alrededor de un centenar de contadores en tiempo real que queremos exportar para propósitos de monitoreo, gráficos y alarmas.La mejor manera de agregar compatibilidad con SNMP a su propia aplicación en Debian

He estado mirando la forma de Debian de hacerlo porque utilizamos el paquete Debian para instalar la aplicación, y Debian usa el daemon snmpd, basado en net-snmp, para exportar SNMP. Hasta ahora, cada enfoque que he visto parece muy complicado, desde volver a compilar snmpd para cargar una biblioteca dinámica en él y compilar una forma de subagente que replica lo que hace snmpd.

Si bien todas estas opciones me hacen pensar que debería ir por algo más que SNMP, no quiero renunciar tan temprano y me preguntaba si alguien ha encontrado una implementación factible.

Idealmente debería codificarse en C o C++ ya que la aplicación está en C++, pero estoy abierto a envoltorios u otro tipo de sugerencias.

Respuesta

5

net-snmp admite los protocolos de extensión de agente smux y agentx, lo que permite a los subagentes vivir en procesos diferentes. También tienen un tutorial al escribir AgentX subagentes en C.

+0

Entonces, ¿agregaría un proceso separado como un subagente o directamente haría su propio proceso un subagente? Por un lado, no me gusta la idea de que el agente vuele mi proceso 100 veces por 100 valores cuando podría hacerse de una vez, pero crear otro proceso para esto y para las comunicaciones parece demasiado. –

+1

Con el procesamiento multiproceso/asíncrono adecuado, no debería importar que su proceso reciba 100 solicitudes. Así que definitivamente trataría de poner el subagente en el proceso de solicitud. –

0

¿Has probado net-snmp?

+0

Debian snmpd se basa en net-snmp y los enfoques que enumeré son los que figuran en net-snmp, a menos que me pierda cualquier cosa –

+0

El snmpd al que se refiere probablemente se origina en net-snmp. –

5

Una solución que a menudo se pasa por alto es AgentX++, que para mí se ve bastante bien. Dicho esto, hacer un subagente no es una mala elección. Usted inicia el snmpd sin parche estándar. Luego se conecta a él con su subagente, que solo agrega los OID que desea agregar. El kit net-snmp para codificar agentes secundarios (como se denomina al protocolo) no es muy fácil de usar, pero tampoco es muy difícil. También hay un módulo Perl para el desarrollo de subagentes: https://metacpan.org/pod/NetSNMP::agent

+0

También https://pypi.python.org/pypi/agentx –

2

La forma tradicional de hacer esto en Linux es usar el paquete net-snmp. Asegúrate de escribir primero la MIB. Todo se basa en el MIB y los cambios en el MIB suelen dar lugar a muchos cambios en el código. La codificación de net-snmp no es difícil y hay mucha documentación para comenzar, por ejemplo: http://www.net-snmp.org/wiki/index.php/Tutorials#Coding_Tutorials

Cuestiones relacionadas