在阅读了 SNMP 和这里的一些问题之后,我认为将代理角色理解为设备的 SNMP 服务(像 SQL 一样,它是存储的 API)。
当您执行 SQL 查询时,SQL 引擎会完成所有工作并返回结果 - 您无需了解存储方式和存储位置。
但是 MIB 不是实际存储,那么我的代理的作用是什么?
如果代理只像我在本教程中一样注册 MIB ,那么它根本不用作处理程序,这意味着有一个 pyhiscal 存储,您可以设置并到达那里而无需绕过处理程序。在本教程中,您可以这样做:
netsnmp_register_int_instance("my example int variable",
my_registration_oid,
OID_LENGTH(my_registration_oid),
&example1, NULL);
Run Code Online (Sandbox Code Playgroud)
不需要处理程序来处理调用。
假设我想监控我的应用程序的待处理请求队列,所以我想要一个代理,所有对 application_pending_request 的 SNMP 请求都将被触发,它会返回队列深度。当我需要轮询我的应用程序队列以获得结果时,为什么我需要一个实际的 MIB?
您对 SNMP 的工作原理存在根本性的误解。快速而肮脏的比较:SNMP MIB 就像主机名。MIB 将 OID 映射到友好名称——例如
.1.3.6.1.2.1.1.1.0
=> SNMPv2-MIB::sysDescr.0
=> Host Description
(uname 输出)。
为了从 SNMP 服务器(代理)检索信息,该信息必须在特定的 OID 上发布。
为了让 SNMP 守护进程发布信息,它(通常)需要两件事:
为了检索信息,您必须知道 OID - 这可以是数字 OID 或SNMP 客户端上 MIB 文件中的“友好”名称。
SNMP“浏览器”通常需要一个 MIB 文件,因为没有一个它们可以呈现给您的是毫无意义的数字列表。
所以回答你的问题是“你不NEED MIB文件,他们是谁需要与SNMP交互人类只是有帮助”。
以您的示例(报告队列长度)为例,听起来您喜欢使用的教程net-snmp
(UCD-SNMP)。
net-snmp
包括用于这类事情的内置工具——通读手册页和示例配置文件(特别注意exec
运行外部脚本的指令:通常你会运行一个打印队列长度的脚本,并在您的监控软件/SNMP 客户端)
归档时间: |
|
查看次数: |
6732 次 |
最近记录: |