当我发出以下命令时,出现标题中的错误。
$ snmpget -v3 -u edgeos-snmpd-user -l authPriv -a SHA -x AES -A authPhrase -X privPhrase 192.168.x.x hrSystemUptime.0
hrSystemUptime.0: Unknown Object Identifier (Sub-id not found: (top) -> hrSystemUptime)
如果我在目标系统(192.168.xx)上输入相同的命令,我会得到有效的结果。
# snmpget -v3 -u edgeos-snmpd-user -l authPriv -a SHA -x AES -A authPhrase -X privPhrase localhost hrSystemUptime.0
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (1362660) 3:47:06.60
客户端是基于 Ubuntu 18.04.1 的 Docker 容器,目标是基于 Alpine 的 Linux 设备。
我已经snmp-mibs-downloader
在容器中安装并且hrSystemUptime
条目存在于"/var/lib/snmp/mibs/ietf/HOST-RESOURCES-MIB
。
-- The Host Resources System Group
hrSystemUptime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The amount of time since this host was last
initialized. Note that this is different from
sysUpTime in the SNMPv2-MIB [RFC1907] because
sysUpTime is the uptime of the network management
portion of the system."
::= { hrSystem 1 }
但是,它似乎没有搜索该目录。
$ net-snmp-config --default-mibdirs
/home/edge/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp
我复制HOST-RESOURCES-MIB
了/home/edge/.snmp/mibs
但没有什么区别。
我必须在容器中做什么才能使其工作?
答案1
该snmp
包安装/etc/snmp/snmp.conf
:
# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loading them by commenting out the following line.
mibs :
注释掉最后一行可以解决文件中注释中描述的问题。snmp.conf
完全删除会产生同样的效果。
答案2
当我尝试让 telegraf 通过 docker 轮询路由器以获取各种统计数据时,也遇到了类似的错误。
它似乎想要的文件 HOST-RESOURCES-MIB 位于硬链接文件夹中(不知道正确的术语,但使用 ls -l,它与指定的链接目标具有不同的颜色),但即使在 docker 配置中具有正确的卷和正确的 /usr/* 权限,也无法进行。
花了半个晚上的时间来解决它,但最终当我在docker中将两个硬链接文件夹指定为卷时它起作用了:
- /var/lib/snmp/mibs/ietf:/usr/share/snmp/mibs/ietf:ro
- /var/lib/snmp/mibs/iana:/usr/share/snmp/mibs/iana:ro
很确定这只是我太笨了,可能没有按照正确的顺序安装东西,但我越想越觉得这是一个 docker/ubuntu 的问题 - 应该可以开箱即用,对吧?
我完全是 Linux 菜鸟,所以可能很难解释我搞砸了什么,谁知道呢。希望这对某人有帮助