NEC IXのプライベートMIB(ベンダーMIB)を用いた監視

スポンサーリンク

NEC IXのベンダーMIBをダウンロードし、そのMIBファイルを用いて監視する方法を説明します。MIBファイルはOIDの名前解決や仕様調査のために使うファイルですので、厳密に言えばMIBファイルがなくても監視は可能ですが、ちゃんとMIBファイルを設定した方が調査はやりやすくなります。以下、RHEL(Red Hat Enterprise Linux)と互換性があるRocky Linuxを使用する場合の操作例を示します。

エンタープライズ環境でよく使用されるJP1 NNMiは主要ベンダーのMIBファイルが予め同梱されており特段の設定を必要としません。OSやソフトウェアによっては本操作を省略可能である事に留意ください。

MIBファイルのダウンロード

NEC UNIVERGE IXシリーズ ダウンロード
」をブラウザで開きます。画面を下の方へダウンロードさせ、「MIBファイルのダウンロード」を押下します。

NEC IX mibファイルのダウンロード 01

「PICO-SMI-MIB」「PICO-SMI-ID-MIB」「PICO-IPSEC-FLOW-MONITOR-MIB」の3ファイルをダウンロードし、適当なディレクトリに保存します。

NEC IX mibファイルのダウンロード 02

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 ~]# 

標準MIBのダウンロード 01

ISDN-MIB.mibをダウンロードします。

標準MIBのダウンロード 02

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 }
タイトルとURLをコピーしました