[comment]: # ({8afcd82f-8afcd82f})
# 3 个 MIB 文件

[comment]: # ({/8afcd82f-8afcd82f})

[comment]: # ({80a94110-f224bb08})
#### 介绍

MIB 代表管理信息库。 MIB 文件允许您使用OID（对象标识符）的文本表示。使用 Zabbix 监控 SNMP 设备时可以使用原始 OID，但如果您更喜欢使用文本表示，则需要安装 MIB 文件。

例如，

    ifHCOutOctets

是 OID 的文本表示

    1.3.6.1.2.1.31.1.1.1.10

[comment]: # ({/80a94110-f224bb08})

[comment]: # ({7b2aa063-5aed9e1b})
#### 安装 MIB 文件

在基于 Debian 的系统上：

    apt install snmp-mibs-downloader
    download-mibs

在基于 RedHat 的系统上：

    dnf install net-snmp-libs

[comment]: # ({/7b2aa063-5aed9e1b})

[comment]: # ({02b2b423-5346f669})
#### 启用 MIB 文件

在基于 RedHat 的系统上，默认情况下应该启用 mib 文件。
在基于 Debian 的系统，您必须编辑文件 `/etc/snmp/snmp.conf` 和注释掉 `mibs :` 行

    # 由于许可原因，snmp 软件包没有 MIB 文件，默认情况下禁用 MIB 加载。如果您添加了 MIB，您可以重新启用
    # 通过注释掉以下行来加载它们。
    mibs：

[comment]: # ({/02b2b423-5346f669})

[comment]: # ({4bbacb8e-bb4c3c1f})
#### 测试 MIB 文件

可以使用 `snmpwalk` 工具测试 SNMP MIB。如果尚未安装，请使用以下说明。

在基于 Debian 的系统上：

    apt install snmp

在基于 RedHat 的系统上：

    dnf install net-snmp-utils

之后，当您查询网络设备时，以下命令不应报错：

    $ 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
    [...]

[comment]: # ({/4bbacb8e-bb4c3c1f})

[comment]: # ({9e9f20b6-87dbd7d4})
#### 在 Zabbix 中使用 MIB

最需要牢记的一点是，Zabbix 进程不会获知对 MIB 文件所做的更改。因此，每次更改后，您都必须重启 Zabbix 服务器或 proxy，例如：

    systemctl restart zabbix-server

之后，对 MIB 文件所做的更改才会生效。

[comment]: # ({/9e9f20b6-87dbd7d4})

[comment]: # ({2a393106-efd836b8})
#### 使用自定义 MIB 文件

每个 GNU/Linux 发行版都有标准的 MIB 文件。
但是一些设备供应商提供他们自己的。

假设您想使用[CISCO-SMI](ftp://ftp.cisco.com/pub/mibs/v2/CISCO-SMI.my) MIB 文件。这
以下说明将下载并安装它：

    # 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

现在你应该可以使用它了。试着翻译一下名字
对象 *ciscoProducts* 从 MIB 文件到 OID：

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

如果您收到错误而不是 OID，请确保之前的所有命令没有返回任何错误。

对象名称翻译成功，您可以使用自定义 MIB文件。请注意查询中使用的 MIB 名称前缀 (*CISCO-SMI::*)。你在使用命令行工具以及 Zabbix 时将需要这个。

在 Zabbix 中使用此 MIB 文件之前，请不要忘记重新启动 Zabbix 服务器/代理。

::: noteimportant
请记住，MIB 文件可以具有依赖关系。
也就是说，一个 MIB 可能需要另一个 MIB。为了满足这些您必须安装所有受影响的 MIB 的依赖项文件。
:::

[comment]: # ({/2a393106-efd836b8})
