[comment]: # ({8afcd82f-8afcd82f})
# 3 MIB ファイル

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

[comment]: # ({80a94110-f224bb08})
#### はじめに

MIB は Management Information Base の略です。MIB ファイルを使用すると、OID（Object Identifier）のテキスト表現を利用できます。
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ファイルのテスト

SNMP MIBのテストは、`snmpwalk`ユーティリティを使用して実行できます。インストールされていない場合は、以下の手順を使用してください。

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サーバーまたはプロキシを再起動する必要があります。例えば、次のようにします。

    systemctl restart zabbix-server

その後、MIBファイルに加えられた変更が有効になります。

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

[comment]: # ({2a393106-efd836b8})
#### カスタムMIBファイルの使用

標準のMIBファイルは、すべてのGNU/Linuxディストリビューションに付属しています。
しかし、一部のデバイスベンダーは独自のものを提供しています。

たとえば、
[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

これで使用できるようになるはずです。MIBファイル内の
オブジェクト *ciscoProducts* の名前をOIDに変換してみてください。

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

OIDではなくエラーが表示される場合は、前述の
コマンドの実行時にエラーが発生していないことを確認してください。

オブジェクト名の変換が成功したので、カスタムMIB
ファイルを使用する準備ができました。クエリで使用しているMIB名のプレフィックス
(*CISCO-SMI::*) に注意してください。これはコマンドラインツールだけでなく、Zabbixでも
必要になります。

このMIBファイルをZabbixで使用する前に、Zabbix server/proxyを再起動することを
忘れないでください。

::: noteimportant
MIBファイルには依存関係がある場合があることに注意してください。
つまり、あるMIBが別のMIBを必要とすることがあります。これらの
依存関係を満たすには、影響を受けるすべてのMIB
ファイルをインストールする必要があります。
:::

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