3 MIB文件

介绍

MIB 是管理信息库(Management Information Base)的缩写。MIB 文件允许使用 OID(object 标识符)的文本表示形式。 在使用 Zabbix 监控 SNMP 设备时,可以使用原始的 OID,但如果您更习惯使用文本表示形式,则需要安装 MIB 文件。

例如,

ifHCOutOctets

是以下 OID 的文本表示形式:

1.3.6.1.2.1.31.1.1.1.10

安装MIB文件

在基于 Debian 的系统上:

apt install snmp-mibs-downloader
       download-mibs

在基于 RedHat 的系统上:

dnf install net-snmp-libs

启用 MIB 文件

在基于 RedHat 的系统上,MIB 文件默认情况下应已启用。 在基于 Debian 的系统上,你需要编辑 file /etc/snmp/snmp.conf 并注释掉包含 mibs : 的行。

# 由于许可原因,snmp 软件包不包含 MIB 文件,默认情况下
       # MIB 的加载已被禁用。如果你已添加 MIB 文件,可以通过
       # 注释掉以下行来重新启用它们的加载。
       mibs :

测试MIB文件

可以使用 snmpwalk 工具测试 SNMP MIB。如果尚未安装该工具,请按照以下说明操作。

在基于Debian的系统上:

`apt install snmp`

在基于 RedHat 的系统上:

`dnf install net-snmp-utils`

然后,当您query a时,以下命令不得给出错误 网络设备:

$ snmpwalk -v 2c -c public <NETWORK DEVICE IP> ifInOctets
       IF-MIB::ifInOctets.1 = Counter32: 176137634
       IF-MIB::ifInOctets.2 = Counter32: 0
       IF-MIB::ifInOctets.3 = Counter32: 240375057
       IF-MIB::ifInOctets.4 = Counter32: 220893420
       [...]

在Zabbix中使用MIB

需要牢记的最重要一点是,Zabbix 进程不会get 获知对 MIB 文件所做的更改。因此每次更改后,都必须重启 Zabbix server 或 proxy,例如:

systemctl restart zabbix-server

此后,对 MIB 文件所做的更改才会生效。

使用自定义 MIB 文件

每个GNU/Linux发行版都附带标准MIB文件。但某些设备厂商会提供自己的MIB文件。

假设您需要使用CISCO-SMI MIB file。以下指令将下载并安装该文件:

wget ftp://ftp.cisco.com/pub/mibs/v2/CISCO-SMI.my -P /tmp
       mkdir -p /usr/local/share/snmp/mibs
       grep -q '^mibdirs +/usr/local/share/snmp/mibs' /etc/snmp/snmp.conf 2>/dev/null || echo "mibdirs +/usr/local/share/snmp/mibs" >> /etc/snmp/snmp.conf
       cp /tmp/CISCO-SMI.my /usr/local/share/snmp/mibs

现在您应该可以使用它了。尝试将MIB file中的object ciscoProducts 名称转换为OID:

snmptranslate -IR -On CISCO-SMI::ciscoProducts
       .1.3.6.1.4.1.9.1

如果收到错误而非OID,请确保之前所有命令均未返回错误。

object名称转换成功后,您就可以使用自定义MIB file了。请注意query中使用的MIB名称前缀(CISCO-SMI::)。在使用命令行工具和Zabbix时都需要这个前缀。

在Zabbix中使用此MIB file前,请勿忘记重启Zabbix server/proxy。

请注意MIB文件可能存在依赖关系。即一个MIB可能需要另一个MIB。为了满足这些依赖关系,您必须安装所有相关的MIB文件。