はじめに
本記事では、ZabbixでSNMP(Simple Network Management Protocol)を使用して、ルータ等のネットワーク機器を監視する方法について記載します。ここでは、NEC製品のルータであるUNIVERGE IX2106のトラフィック情報を取得する方法について記載いたします。
環境
- ボード
Raspberry Pi 4 Model B - OS
Raspberry Pi OS with desktop
Release date: March 4th 2021
Kernel version: 5.10 - Zabbix
Version 5.2.4 - UNIVERGE IX2106
Version 10.4.14
SNMP(Simple Network Management Protocol)とは
SNMP(Simple Network Management Protocol)とは、ルータやスイッチ、サーバなどのネットワークに接続された通信機器に対し、ネットワーク経由で監視、制御するためのアプリケーション層のプロトコルです。このSNMPを利用することにより、ネットワーク機器が持っている様々な情報を取得でき、監視することができるので、ネットワークに障害が発生した場合にどの機器に障害が発生したのかをすぐに突き止められるなど、迅速な障害復旧に役立ちます。
SNMPマネージャとSNMPエージェント
SNMPは、SNMPマネージャとSNMPエージェントの2つによって構成されています。SNMPマネージャは、SNMPエージェントに対して情報の要求や監視などを行います。SNMPエージェントは、SNMPマネージャからの要求への応答やネットワーク機器の状態が変化した時の通知を行います。SNMPのバージョンには、SNMPv1、SNMPv2c、SNMPv3があり、SNMPv3ではセキュリティ機能が強化されています。
SNMPマネージャからSNMPエージェントに問い合わせられる内容は、インターフェイスのトラフィック状況やCPU使用率、メモリ使用率のほか、インターフェースの状態(リンクアップやダウンなど)、トラフィック量、MTUやSpeed/duplexの状態なども確認することができます。

MIB(Management Information Base)とOID(Object IDentifer)
MIB(Management Information Base)とは、SNMPエージェントが持っている機器の様々な管理情報の集合体のことで、ぞれぞれに固有のオブジェクトを定義している規格です。このMIBには、標準MIBと拡張MIBがあり、インターフェイス名やインターフェイスの使用状況、CPU使用率といった一般的に使用されるものは、標準MIBとして定義されています。また、ベンダーが独自で定義したものは、拡張MIBとして定義されています。(ベンダーMIBやプライベートMIBと呼ばれたりします。)
MIBによって区分された管理情報はツリー構造で管理されていて、このMIBにある1つ1つ情報をオブジェクトと言います。例えば、ツリーの上から、「iso、org、dod」などのオブジェクトがあります。
OID(Object IDentifer)とは、1つ1つのオブジェクトを区別するために割り振られている識別子で、オブジェクト識別子とも呼ばれています。このOIDは、「1.3.6.1.2.1.1.1」というように、ピリオドで区切られた数字として表現されます。それぞれの数字は、MIBツリー構造の枝に対応し、オブジェクトまでのパスを表したものになっています。
例えば、オブジェクト「sysDescr」のOIDは、iso(1)→org(3)→dod(6)→internet(1)→mgmt(2)→mib-2(1)→system(1)→sysDescr(1)と辿っていき、「1.3.6.1.2.1.1.1」になります。
必要なパッケージのインストール
SNMPを使用した監視ができるように、必要なパッケージをインストールします。
はじめに、snmpパッケージのインストールを行います。
pi@raspberrypi:~ $ sudo apt install snmp
pi@raspberrypi:~ $
次に、snmpエージェントとやり取りを行うために必要なMIBファイルをインストールするため、snmp-mibs-downloaderパッケージのインストールを行います。
pi@raspberrypi:~ $ sudo apt install snmp-mibs-downloader
pi@raspberrypi:~ $
「download-mibs」コマンドを実行し、MIBファイルのインストールを行います。
pi@raspberrypi:~ $ sudo download-mibs
Downloading documents and extracting MIB files.
This will take some minutes.
In case this process fails, it can always be repeated later by executing
/usr/bin/download-mibs again.
RFC1155-SMI: 119 lines.
RFC1213-MIB: 2613 lines.
~(中略)~
IANA-IPPM-METRICS-REGISTRY-MIB: 818 lines.
IANA-MAU-MIB: 984 lines.
pi@raspberrypi:~ $
「/etc/snmp/snmp.conf」ファイルの変更
インストールしたすべてのMIBファイルをロードして使用するように、「/etc/snmp/snmp.conf」ファイルを以下のように編集します。
pi@raspberrypi:~ $ sudo vi /etc/snmp/snmp.conf
【変更前】
mibs :
【変更後】
mibs ALL
pi@raspberrypi:~ $
SNMPの動作確認
「snmpwalk」コマンドを実行し、以下のようにルータからMIB情報を取得できることを確認します。
「snmpwalk」は、SNMPの情報取得要求を使用して、ネットワーク機器のMIB情報ツリーを照会するSNMPアプリケーションです。
【snmpwalkの構文】
snmpwalk -v {SNMPバージョン} -c {コミュニティ名} SNMPエージェントのIPアドレス
pi@raspberrypi:~ $ snmpwalk -v 2c -c public 192.168.0.1
SNMPv2-MIB::sysDescr.0 = STRING: NEC Portable Internetwork Core Operating System Software, IX Series IX2106 (magellan-sec) Software, Version 10.4.14, RELEASE SOFTWARE, Compiled Sep 17-Thu-2020 13:11:19 JST #2, IX2106
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.119.1.84.22.1
DISMAN-EXPRESSION-MIB::sysUpTimeInstance = Timeticks: (666470228) 77 days, 3:18:22.28
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: router01
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 72
IF-MIB::ifNumber.0 = INTEGER: 12
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.405 = INTEGER: 405
IF-MIB::ifIndex.406 = INTEGER: 406
IF-MIB::ifIndex.407 = INTEGER: 407
IF-MIB::ifIndex.473 = INTEGER: 473
IF-MIB::ifIndex.541 = INTEGER: 541
IF-MIB::ifIndex.543 = INTEGER: 543
IF-MIB::ifIndex.801 = INTEGER: 801
IF-MIB::ifIndex.880 = INTEGER: 880
IF-MIB::ifIndex.925 = INTEGER: 925
IF-MIB::ifIndex.926 = INTEGER: 926
~(中略)~
IPV6-MLD-MIB::mldInterfaceQuerierExpiryTime.266 = Timeticks: (0) 0:00:00.00
IPV6-MLD-MIB::mldInterfaceQuerierExpiryTime.267 = Timeticks: (0) 0:00:00.00
pi@raspberrypi:~ $
ZabbixのSNMP監視の設定
SNMPを使用するための準備が整いましたので、ZabbixでSNMP監視を行う設定を行います。
ここでは、IX2106ルータからWAN側インターフェイスGE0.0の受信トラフィック情報を取得します。
使用した環境でのOIDは、「IF-MIB::ifInOctets.407」です。
「407」という数字は、インターフェイスのインデックス番号を表し、IX2106のインターフェイスのインデックス番号は、「show interface」コマンドで確認することができます。
router01# enable-config
Enter configuration commands, one per line. End with CNTL/Z.
router01(config)# show interfaces
Interface GigaEthernet0.0 is up
Fundamental MTU is 1500 octets
Current bandwidth 1G b/s, QoS is enabled
Datalink header cache type is ethernet: 0/0 (standby/dynamic)
IPv4 subsystem connected, physical layer is up, 38d13h20m46s
ARP subsystem connected, physical layer is up, 38d13h20m46s
SNMP MIB-2:
ifIndex is 407 <== インターフェイスのインデックス番号
Logical INTERFACE:
~(略)~
router01(config)#
ホストグループの作成
監視対象にするホストのホストグループを作成します。
【参考】
ホストグループとは、ホストをグループにまとめたものです。
画面左のメニューから「設定」→「ホストグループ」をクリックします。
次に、画面右上部の「ホストグループの作成」をクリックします。

「グループ名」欄に作成するホストグループ名(ここでは、「Routers」とします。)を入力し、「追加」をクリックします。

ホストグループが作成されたことを確認します。

ホストの作成
次に、監視対象にするホストを作成します。
【参考】
ホストとは、監視対象のデバイス(サーバ、ワークステーション、スイッチなど)のことです。
画面左のメニューから「設定」→「ホスト」をクリックします。
次に、画面右上部の「ホストの作成」をクリックします。

「ホスト名」欄に作成するホスト名(ここでは、「router01」とします。)を記載し、「グループ」欄に先ほど作成したホストグループ名(「Routers」)を選択します。

次に、監視対象ホストをSNMPで監視を行うため、「インターフェイス」の「追加」をクリックし、「SNMP」を選択します。

各欄に以下のように記載します。
項目1 | 項目2 | 内容 |
SNMP | IPアドレス | 監視対象ホストのIPアドレスを記載する |
DNS名 | 監視対象ホストのDNS名を記載する | |
接続方法 | 監視対象ホストをIPアドレスで指定するか DNS名で指定するか選択する | |
ポート | 監視対象ホストのSNMPポート番号を記載する | |
SNMPバージョン | 監視対象ホストで利用可能なSNMPのバージョンを指定する | |
SNMPコミュニティ | 監視対象ホストのコミュニティ名を記載する |
「ポート」欄は、通常、161番ポートが使用されるので、変更の必要ありません。
「SNMPバージョン」欄は、ここでは、「SNMPv2」を選択します。
「SNMPコミュニティ」欄は、通常、変更は必要ありません。($SNMP_COMMUNITY)は、Zabbixの変数設定で、「PUBLIC」になっています。「PUBLIC」以外を使用する場合は、別途記載してください。
上記の入力が完了したら、「追加」をクリックします。

監視対象のホストが作成されたことを確認します。

アイテムの作成
監視対象ホストからSNMPで情報を取得するため、アイテムを作成します。
画面左のメニューから「設定」→「ホスト」を選択します。
次に、監視対象ホストの「アイテム」をクリックします。

左上部の「アイテムの作成」をクリックします。

各欄に以下のように記載します。
項目 | 内容 |
名前 | アイテムの名前を記載します。 |
タイプ | SNMPエージェントを選択します。 |
キー | アイテムを一意に識別するための名前を記載します。 |
SNMP OID | 取得する管理情報のOID(Object IDentifier)を記載します。 |
データ型 | 数値(整数)を選択します。 |
単位 | 取得する管理情報の単位を記載します。 |
監視間隔 | 管理情報を取得する間隔を記載します。 |
ここでは、ルータのWANインターフェイスの受信トラフィックを監視するため、名前を「WAN:INPUT」とし、キーをOID名からとり「ifInOctets.407」とし、SNMP OIDを「IF-MIB::ifInOctets.407」とし、データ型を「数値(整数)」とし、単位を「bps」とし、監視間隔を「10s」(10秒)と記載します。
次に、画面上部の「保存前処理」をクリックします。

「保存前処理設定」横の「追加」をクリックします。
【注】
「追加」ボタンが2つあるので、間違えないように注意してください。

取得した管理情報はバイト単位のため、これをビット単位に変換します。
「名前」欄で「乗数」を選択し、「パラメータ」欄に「8」を入力し、「追加」をクリックします。
【注】
「追加」ボタンが2つあるので、間違えないように注意してください。

bpsを監視するため、1秒あたりの差分を取得するため、「名前」欄で「1秒あたりの差分」を選択し、下の「追加」をクリックします。
【注】
「追加」ボタンが2つあるので、間違えないように注意してください。

アイテムが追加されたことを確認します。

動作確認
SNMPで管理情報データが取得できているか確認します。
画面左のメニューから「設定」→「ホスト」をクリックします。次に、監視対象ホストの「アイテム」をクリックします。

作成したアイテムをクリックします。

画面下部の「テスト」をクリックします。

「値の取得とテスト」をクリックします。

以下のように、値が取得できていることを確認します。「キャンセル」をクリックし、画面を閉じます。

グラフの表示
画面左のメニューから「監視データ」→「最新データ」をクリックします。次に、監視対象ホストのアイテムの「グラフ」をクリックします。

以下のように、監視対象ホストからSNMPで管理情報データが取得でき、グラフが表示されていることを確認します。

以上です。