tjinjin's blog

インフラ要素多めの個人メモ

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の各種データのメトリクスを取得してグラフ表示したいです!

Links