SNMPに入門し始めた
皆様snmpget
してますか?
ということで最近SNMPを実際に触ることがあって全くわからなかったのでまとめました。聞いたことはあったんですよ…
SNMPとは
Simple Network Management Protocolの略。よくネットワーク機器などの監視で使われまる。SNMPに対応している機器ではMIBというデータ・モデルを持っていて、取得側でそのMIBを指定して機器の情報を取得する仕組みです。
ユースケース
- サーバの監視に使ったり
- ルータの監視に使ったり
ネットワーク機器の監視に利用するイメージです!
SNMPを構成する要素
バージョン
SNMPには現在主に3つのバージョンがあるとのこと。v1/v2c/v3の3つがあり、セキュリティ周りだとかSNMPトラップ周りでできることが違うようです。詳しくはこちら
[SNMPによるネットワークモニタリング「第2版」:第3回 SNMPによるモニタリングセキュリティの実態 (2/5) - ITmedia エンタープライズ] (http://www.itmedia.co.jp/enterprise/articles/0705/16/news011_2.html)
MIB
Managemet information baseの略。機器の情報を一意に表したものです。RFC1155/RFC1213/RFC1157辺りが関連するらしい。SNMPマネージャ側で取得したい情報をOIDを指定することで情報を取得できます。
OID
Object Identifierの略。一つ一つのオブジェクトを区別するために振られた識別子で、オブジェクト識別子ともよばれます。実際にデータを取得する際にはこれを使います。
コミュニティ名
マネージャとエージェント間でやりとりするパスワードのような情報。
SNMPトラップ
SNMPではSNMPマネージャからエージェントに対して問い合わせを行うモデルだが、SNMPトラップを使うとエージェントからマネージャに通知を送ることができる。
コマンド
SNMP関連のコマンドはたくさんあるみたいです。snmp
で始まるコマンドがこのくらいありました。
$ snmp-bridge-mib snmp-bridge-mib snmpconf snmpdf snmpinform snmpstatus snmptranslate snmpusm snmpbulkget snmpd snmpget snmpnetstat snmptable snmptrap snmpvacm snmpbulkwalk snmpdelta snmpgetnext snmpset snmptest snmptrapd snmpwalk
今回私が調べたものだけ簡単にまとめておきます。
snmpwalk
指定したOIDに一致するものを前方一致で一覧を取得する。まとめて情報を取得することができる
snmpget
指定したOIDの情報を取得する。完全一致で取得?
$ snmpget -v 1 -c public localhost 1.3.6.1.4.1.1182.2.1.6.0 # yamaha cpu 1minute
snmptranslate
SNMPには標準のMIBがあるがベンダ毎に拡張したある場合どのOIDを指定すればよいかわからないそんなときに使うものみたいです。
$ snmptranslate .1.3.6.1.2.1.2.2.1.1 # OID->名前 $ snmptranslate -On IF-MIB::ifIndex
MIBの一覧も登録されているデータ(/usr/share/snmp/mibs/
)などから表示できます。
$ snmptranslate -Tp # ツリー表示 +--iso(1) | +--org(3) | +--dod(6) $ snmptranslate -Tl # ドット区切りでとラベルとOIDを順に表示 .iso(1).org(3).dod(6).internet(1).snmpV2(6).snmpModules(3).snmpv2tm(19) $ snmptranslate -To # OIDだけを表示 .1.3.6.1.6.3.19 $ snmptranslate -Ts # TlのOIDがないバージョン .iso.org.dod.internet.snmpV2.snmpModules.snmpv2tm $ snmptranslate -Tz # 名称とOIDを表示(これがよさそう)
まとめ
SNMPはまだまだ深そうなので、継続的に調べていきたいです。SNMPのデータをDBに突っ込んで、可視化ツールに食わせると楽しそうです。cactiは使い方わからなくてつらたんです。最終的にはRTX1210の各種データのメトリクスを取得してグラフ表示したいです!