NEC IXのベンダーMIBをダウンロードし、そのMIBファイルを用いて監視する方法を説明します。MIBファイルはOIDの名前解決や仕様調査のために使うファイルですので、厳密に言えばMIBファイルがなくても監視は可能ですが、ちゃんとMIBファイルを設定した方が調査はやりやすくなります。以下、RHEL(Red Hat Enterprise Linux)と互換性があるRocky Linuxを使用する場合の操作例を示します。
エンタープライズ環境でよく使用されるJP1 NNMiは主要ベンダーのMIBファイルが予め同梱されており特段の設定を必要としません。OSやソフトウェアによっては本操作を省略可能である事に留意ください。
MIBファイルのダウンロード
「NEC UNIVERGE IXシリーズ ダウンロード
」をブラウザで開きます。画面を下の方へダウンロードさせ、「MIBファイルのダウンロード」を押下します。
「PICO-SMI-MIB」「PICO-SMI-ID-MIB」「PICO-IPSEC-FLOW-MONITOR-MIB」の3ファイルをダウンロードし、適当なディレクトリに保存します。
MIBファイルの設定
net-snmp-utilsインストール
snmpに関するツール群をインストールします。
dnf install net-snmp-utils
ディレクトリ作成
デフォルト設定では/usr/share/snmp/mibs配下に格納されているMIBファイルを読み込みます。全てを同一ディレクトリに格納するのは管理しづらいので、「/usr/share/snmp/mibs」「/usr/share/snmp/standard-mibs」「/usr/share/snmp/nec-mibs」の3つのディレクトリに分けて管理します。
まずはMIBファイルを格納するディレクトリを作成します。
mkdir -p /usr/share/snmp/standard-bims mkdir -p /usr/share/snmp/nec-bims
前述の3ディレクトリを読み込むようにsnmp.confを編集します。(snmpd.confではない事に注意してください)
# mkdir /etc/snmp/ # vi /etc/snmp/snmp.conf MIBDIRS /usr/share/snmp/mibs:/usr/share/snmp/standard-bims:/usr/share/snmp/nec-bims MIBS all
MIBファイルの配置
さきほどダウンロードしたMIBファイルを/usr/share/snmp/nec-bimsへ転送します。もし、SNMP managerとなるサーバがインターネットへ接続可能ならば、ファイル転送ではなくwgetコマンドでMIBファイルを配置しても差し支えございません。
cd /usr/share/snmp/nec-bims wget https://jpn.nec.com/univerge/ix/Manual/MIB/PICO-SMI-MIB.txt wget https://jpn.nec.com/univerge/ix/Manual/MIB/PICO-SMI-ID-MIB.txt wget https://jpn.nec.com/univerge/ix/Manual/MIB/PICO-IPSEC-FLOW-MONITOR-MIB.txt
MIBの調査
MIBの読み方 説明
MIBファイルはテキストファイルです。そのため、中身を見れば何を監視できるかを把握する事ができます。/usr/share/snmp/nec-bims/PICO-SMI-MIB.txtをテキストエディタなどで開きます。
まず先頭に以下のようなバージョンアップ履歴が書かれています。「–」で始まる記述はコメント文ですので、実際にOIDが名前解決される挙動には影響を与えません。
-- PICO Product Vendor MIB -- From file: "PICO-SMI" -- Copyright (c) NEC Corporation 2001-2021. All rights reserved. -- Update History -- -- 2002/12/20 : R0.1 Draft -- 2003/03/11 : R1.0 Initial release
下の方へスクロールさせると「PICO-SMI DEFINITIONS ::= BEGIN」との記述が見られます。このファイルでは「PICO-SMI::」で始まる名前のOIDを定義する事を意味します。
その下に「IMPORTS句」がありますが、「IMPORTS句」は説明を後述します。
-- 2021/03/23 : R19.1 Fixed syntax errors of naptCacheTable and NAPTCacheEntry. -- Fixed date of R18.0 and R19.0 in Update History. -- 2021/06/25 : R19.2 Fixed llq and cbq order errors(QoS MIB) PICO-SMI DEFINITIONS ::= BEGIN IMPORTS enterprises, NetworkAddress, IpAddress, Counter, Counter64, Gauge, TimeTicks FROM RFC1155-SMI
さらに下へスクロールさせるとOIDの名前定義が見られます。例えば、enterprises.119というOIDは「PICO-SMI::nec」という名前で定義されている事が読み取れます。
-- The following definition is privately defined for pico Private MIB -- org OBJECT IDENTIFIER ::= { iso 3 } -- dod OBJECT IDENTIFIER ::= { org 6 } -- internet OBJECT IDENTIFIER ::= { dod 1 } -- private OBJECT IDENTIFIER ::= { internet 4 } -- enterprises OBJECT IDENTIFIER ::= { private 1 } nec OBJECT IDENTIFIER ::= { enterprises 119} -- sysObjectID -- -- The PICO Software Products. --
実際に「PICO-SMI::nec」が名前解決できるかどうかを確かめます。snmptranslateコマンドを使用すると、「PICO-SMI::nec」が「.1.3.6.1.4.1.119」に変換できる事が確認できます。
[root@zabbix218 ~]# snmptranslate -On PICO-SMI::nec MIB search path: /usr/share/snmp/mibs:/usr/share/snmp/standard-bims:/usr/share/snmp/nec-bims Cannot find module (ISDN-MIB): At line 81 in /usr/share/snmp/nec-bims/PICO-SMI-MIB.txt Did not find 'isdnLapdOperStatus' in module #-1 (/usr/share/snmp/nec-bims/PICO-SMI-MIB.txt) .1.3.6.1.4.1.119 [root@zabbix218 ~]#
依存関係の調査
MIBファイルには依存関係があります。さきほどのMIBファイルのIMPORTS句に着目するとRFC1155-SMI, SNMPv2-TC, RFC-1212などのMIBファイルを必要としている事が読み取れます。
IMPORTS enterprises, NetworkAddress, IpAddress, Counter, Counter64, Gauge, TimeTicks FROM RFC1155-SMI PhysAddress, TimeStamp, DisplayString FROM SNMPv2-TC OBJECT-TYPE FROM RFC-1212 TRAP-TYPE FROM RFC-1215 Ipv6Address FROM IPV6-TC ifIndex, InterfaceIndex FROM IF-MIB isdnLapdOperStatus FROM ISDN-MIB;
これら依存するMIBファイルを1つ1つダウンロードしても良いですが、依存関係の依存関係のような入れ子構造になっていますので、人間が目視で必要なMIBファイルを洗い出すのは不可能に近いと思われます。
そこで、実際にsnmp関連のコマンドを実行し、エラーが発生しないようにMIBファイルを収集するのが現実的な操作方法になるでしょう。さきほどのsnmptranslateコマンドの実行結果を再掲します。よく見ると、「ISDN-MIB」が不足している旨のエラーメッセージが出力されています。
[root@zabbix218 ~]# snmptranslate -On PICO-SMI::nec MIB search path: /usr/share/snmp/mibs:/usr/share/snmp/standard-bims:/usr/share/snmp/nec-bims Cannot find module (ISDN-MIB): At line 81 in /usr/share/snmp/nec-bims/PICO-SMI-MIB.txt Did not find 'isdnLapdOperStatus' in module #-1 (/usr/share/snmp/nec-bims/PICO-SMI-MIB.txt) .1.3.6.1.4.1.119 [root@zabbix218 ~]#
このように不足する標準MIBは色んなサイトから手に入りますので、適当なミラーサイトからダウンロードしましょう。私は「http://www.circitor.fr」をよく使用します。
トップページから当該のMIBファイルを探すのが手間な場合は、googleなどの検索エンジンのサイト内検索機能を使用しましょう。例えば、googleを使うならば、検索バーに以下のように入力します。
ISDN-MIB site:www.circitor.fr
[root@zabbix218 ~]# snmptranslate -On PICO-SMI::nec .1.3.6.1.4.1.119 [root@zabbix218 ~]#
ISDN-MIB.mibをダウンロードします。
MIBファイルを/usr/share/snmp/standard-bims/配下に配置します。
cd /usr/share/snmp/standard-bims/ wget http://www.circitor.fr/Mibs/Mib/I/ISDN-MIB.mib
snmptranslateコマンド実行時にエラーメッセージが出力されなくなった事を確認します。
[root@zabbix218 ~]# snmptranslate -On PICO-SMI::nec .1.3.6.1.4.1.119 [root@zabbix218 ~]#
監視項目の精査
snmpwalk
NEC IXをsnmpgetに応答するように設定します。その後、snmpwalkコマンドを実行するとsnmpgetによって取得可能な値の一覧を見る事ができます。このような名前はある程度は直感的な名前がつけられているので、名前から監視内容を推測する事ができます。例えばpicoCelsiusならば「摂氏(セルシウス)温度」である事が推測できます。
[root@zabbix218 ~]# snmpwalk -v 2c -c public 192.168.1.1 PICO-SMI::nec PICO-SMI::picoCelsius.0 = INTEGER: 43 PICO-SMI::picoFahrenheit.0 = INTEGER: 109 PICO-SMI::picoVoltage.0 = INTEGER: 3268 PICO-SMI::picoSchedRtUtl1Sec.0 = Gauge32: 11 PICO-SMI::picoSchedRtUtl5Sec.0 = Gauge32: 11 PICO-SMI::picoSchedRtUtl1Min.0 = Gauge32: 11 PICO-SMI::picoSchedRtUtl1Hour.0 = Gauge32: 11 PICO-SMI::picoHeapSize.0 = Gauge32: 116850688 <omitted>
description
名前から監視内容が判断できない場合はMIBファイルのdescriptionを見ましょう。PICO-SMI::picoCelsiusならば「Indicates the temperature of the equipment inside, in degree (Celsius).」とのdescriptionが書かれています。
picoCelsius OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Indicates the temperature of the equipment inside, in degree (Celsius)." ::= { picoTemperature 1 }