0%

Ubuntu系统中如何导入SNMP MIB库文件

我这边的一个系统用了telegraf的snmp_trap插件来采集snmp trap告警,然后再转换为http格式吐出进入下一个环节。这个插件配置起来倒是简单,但是其中对于OID的翻译依赖于snmptranslate命令的结果,而如果让snmptranslate命令能正常翻译,又依赖于MIB库文件的正确放置和配置。最近在用这套东西来采集H3C交换机设备的告警,正好记录下在ubuntu环境下导入MIB库文件的方法。

配置前

在进行配置前,可以先尝试运行下snmptranslate命令(注意,这里的-L n参数可以忽略输出的错误信息):

1
snmptranslate -L n .1.3.6.1.4.1.25506.2.38.1.6.3.0.1

这个示例中的OID来自H3C的交换机设备,如果没导入MIB库的话,结果只会是:

1
SNMPv2-SMI::enterprises.25506.2.38.1.6.3.0.1

很明显,光看这个还是没法知道设备发了个啥信息过来。

导入和配置

先从H3C官方搞到MIB库文件,然后把这些mib文件解压到一个目录中。在这个示例中,我们把这些mib文件都放置到/usr/share/mibs/h3c_mibs目录下。

放好MIB库文件后,就可以开始配置snmp.conf这个配置文件了:

1
vim /etc/snmp/snmp.conf

(如果没有这个文件,可能需要先使用apt install snmp命令来安装下相关的组件。)

配置文件中原始的配置内容是这样的:

1
2
3
4
# 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 :

为了能让新加的MIB库生效,需要做下修改:

1
2
3
4
5
6
# mibs :

mibdirs +/usr/share/mibs/h3c_mibs
mibdirs +/usr/share/mibs/another_mib_dir # for example

mibs +ALL

稍微解释下:

  • 注释掉了原有的mib : 这行,让系统可以加载第三方的库;
  • mibdirs参数用于指定加载的MIB库路径,如果有多个MIB库的目录,可以多次使用这个参数
  • mibs +ALL参数指定了在所有的mib文件中来进行查找。

配置文件修改完成后,保存退出即可,无需重启啥服务。

测试

再次测试翻译OID,在正确放置mib文件和正确配置的情况下,是可以成功翻译出结果的:

1
2
root@knktc.com:/root# snmptranslate -L n .1.3.6.1.4.1.25506.2.38.1.6.3.0.1
HH3C-TRAP-MIB::hh3cPeriodicalTrap

参考

如果我的文字帮到了您,那么可不可以请我喝罐可乐?