見出し画像

【ZABBIX】拡張MIB利用でSNMP Trap監視する

 こんにちは〜インフラエンジニアのtamolabです!
今回はZBBIXとSNMPを利用したシステム監視について監視するまでの構築手順を書きたいと思います。Zabbixでネットワーク機器などZabbix agentがインストールできない機器、いわゆるエージェントレスな監視を行う際に、SNMP trapのOIDをmibファイルから解決してアラートと検知できるようにしたいというモチベーションです。今回は拡張MIB(ベンダーMIB、エンタープライズMIBとも言う)で監視する手順いついて書きたいと思います!

1.やりたいこと

っっw

前回までのお話(【ZABBIX】Zabbix4系とCentOS 7系でSNMP Trap監視する )で、SNMP trapを受けるようになりましたが、ここからはmibを使ってOIDをわかりやすい文字列に変換していきます。

09:52:54 2020/06/03 .1.3.6.1.4.1.9.9.41.2.0.1 Normal "General Events" localhost - ZBXTRAP 127.0.0.1 Unknown

09:52:54 2020/06/03 .1.3.6.1.4.1.9.9.41.2.0.1 Normal "Status Events" Switch1 - When a syslog message is generated by the device a SW_MATM warning MACFLAP_NOTIF Host XXXX.xxxx.XxXx in vlan YYY is flapping between port GigabitEthernet1/0/24 and port GigabitEthernet1/0/23

のように表示させていきます。OIDの数字羅列よりも変換させた方がメッセージが具体的にわかりやすいですね。

2. 前提条件

えええ

 ZabbixでSNMP TRAPを利用した監視ができている状態からスタートします。まだできてないよって方は、まず【ZABBIX】Zabbix4系とCentOS 7系でSNMP Trap監視するをご確認ください!

3. MIBファイルの準備

っr

未解決のOIDに関するMibファイルを準備してください。
Mibファイル取得は下記の方法があります。

・インターネット上で公開されている
・監視対象機器から直接ダウンロードする
・誰かにもらう(対象機器を管理している会社など)

一般的なOIDを検索すればMibファイルも出てくるのでそれをダウンロードして使うことが多いです。CiscoとかAristaなどの拡張Mib(エンタープライズMib)は人からもらう場合が多いです。取得したMibファイルは下記に保存します。

# ディレクトリを用意
$ sudo mkdir /usr/share/snmp/vendor-mibs/

# scpなり、wgetなりでサーバに転送します。
# データ本文を全コピーして貼り付けでもOKです。
$ ls -l /usr/share/snmp/vendor-mibs/<Mibファイル名>.my
-rwxr-xr-x 1 root root 11272 Jul 17  2019 /usr/share/snmp/vendor-mibs/<Mibファイル名>.my

4. MIBファイルのコンバート

っっy

Zabbixで扱えるようにMibファイルをコンバートします。

# コンバート後のデータ置き場作成
$ sudo mkdir /root/tmp/

# Mibファイルをコンバートして別の場所に保存する
$ sudo snmpttconvertmib --out=/root/tmp/<Mibファイル名>.conf.org --net_snmp_perl --in=/usr/share/snmp/vendor-mibs/<Mibファイル名>.my

...

Total translations:        114
Successful translations:   114
Failed translations:       0

コンバートが成功すれば、Successful translations:の値とTotal translations:の値は同じになります。

 Failedするよくある例として「Mibの依存関係が解決できてない」が考えれれます。<Mibファイル名>.myを見てみると、先頭の方にIMPORTSがあるのですが、FromのMibファイルを同じディレクトリにおいていないと依存関係で怒られてFailedにカウントされます。下記の場合ですと、SNMPv2-SMISNMPv2-CONFなどのMibファイルが必要ということです。

IMPORTS
   MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, IpAddress, Gauge32
       FROM SNMPv2-SMI
   OBJECT-GROUP, MODULE-COMPLIANCE
       FROM SNMPv2-CONF
   DisplayString, DateAndTime, TruthValue
       FROM SNMPv2-TC
   TimeTicks
       FROM SNMPv2-SMI
   lumModules, lumMulticastMIB
       FROM LUM-REG
   MgmtNameString, CommandString, EnableDisable, PmReset
       FROM LUM-TC;

5. 文言の整形とiniファイル編集

ううう

 次に文言の整形と、/etc/snmp/snmptt.iniの編集を行います。

# 文言の整形
$ sudo sudo sed -e "s/^FORMAT\s/FORMAT ZBXTRAP \$aA /g" /root/tmp/<Mibファイル名>.conf.org > /etc/snmp/snmptt/vendor-mibs/<Mibファイル名>.conf$ sudo vim /etc/snmp/snmptt.ini

 # 下記を記載
/etc/snmp/snmptt/vendor-mibs/<Mibファイル名1>.conf
/etc/snmp/snmptt/vendor-mibs/<Mibファイル名2>.conf
/etc/snmp/snmptt/vendor-mibs/<Mibファイル名3>.conf
 ...
# <追加したMibファイルを列挙>
 ...

# ファイルの最後は下記にする
/etc/snmp/snmptt.conf

OIDを受信した時に、リストの上から順番にMibファイルをチェックしていきます。
どれにもマッチしない場合は/etc/snmp/snmptt.confにマッチさせてGeneral Eventとして出すようにしています。
自分の/etc/snmp/snmptt.iniには60行くらいのMibファイルを記載してます。(Cisco系、Arista系、Fori系、OSPF系、JUNIPER系など)

 最後に、/etc/snmp/snmptt.iniファイルを変更したので反映させるためにSNMPTTサービスを再起動します。

$ sudo systemctl restart snmptt

これで以降のOIDはMibファイルによって解決できるようになります。以降は、下記を繰り返すことになります。

Mibファイルで解決できないOIDを受信した
 → Mibファイルの取得
 → zabbix-serverでコンバート
 → SNMPTT再起動

6. キーワード

画像2

#CentOS #zabbix #snmp # snmptrap #監視ツール #IT #拡張mib

7. お問い合わせ

画像1

 本投稿のコメントでも構いませんし、下記からお問い合わせいただいても大丈夫です。
 note.tamolab@gmail.com

この記事が参加している募集

最近の学び

サポートをお願いいたしますmm もしXXXXな記事を書いて欲しい、XXXXな記事は不適切だなどのご要望がありましたら、お知らせください!