2012-08-27 34 views
0

我遵循此tutorial。 我成功做到了,但我无法弄清楚如何从我的应用程序中更改MIB标量值。C++如何使用snmp-net将值写入OID

我想从我的应用程序写入这些OID值,以便有能力通过SNMP监视我的应用程序。

本教程将告诉您如何注册OID并为其设置值,但是如何根据应用程序状态更改我的应用程序中的值?

我的目标: 我有我自己的应用程序(简单的商业应用程序),它运行在Ubuntu机器上。 我通过SNMP从远程客户端监控主机。我监视像CPU,RAM这样的东西..我通过发送snmp-get到这些OID来做到这一点。

作为托管监控的一部分,我也想监视我的应用程序(例如request_quoue_size),所以我认为这样做的方法是通过编写我自己的MIB模块并编写调用以从我的应用程序设置此OID ,我现在正在看如何调用set(C++),如果这是方式。

回答

3

首先,MIB只是一个接口(它指定了从MIB模块可访问的所有OID)。您的应用程序是SNMP代理还是SNMP使用者?

如果您在SNMP代理内,那么我假设您可以直接访问OID所在的内存。那么,你的问题到底是什么?

如果SNMP客户端内,那么你需要发送SNMP设置的请求,使用适当的UDP数据包的代理...

请你想达到什么样的补充一些细节。

+0

谢谢!!!!更新我的问题。 –

+0

好的,我假设你正在使用NET-SNMP框架(纯粹用C编写)。如果你想建立并发送正确的UDP数据包以进行设置请求,那么我建议查看位于net-snmp- /snmp/agent /目录下的snmpset.c文件。你有一个很好的方式来写这个功能。请注意,您也有可能错误地添加了MIB模块或标量(是否为读写?) - 只需在您的Ubuntu中使用snmp-set binary来对该MIB执行设置请求以查看它是否有效。如果确实如此,那么您可以开始考虑将设置请求代码添加到您的应用程序。 – lucassm

+0

我做得对吗?这是能够监控我的应用程序的方式吗?我看着这个文件,这是他们的snmpset解析器。我会试着嘲笑它。我认为他们有一个简单的C API。 –

相关问题