System Management Agent ( SNMP Agent )

Solaris 10 から標準でバンドルされている SNMP Agent が追加・変更されているのはご存知でしょうか?

Solaris では Solaris 2.6 の頃から Solstice Enterprise Agents がバンドルされておりましたが、 Solaris 10 になって System Management Agent (以下 SMA) という 新しい SNMP Agent が追加されています。
( 代表的な Sun の SNMP Agent は下記をご覧下さい。 )
  • System Management Agent (SMA)
    • Solaris 10 から新たに追加された SNMP Agent です。

  • Solstice Enterprise Agents
    • Solaris 2.6 以降にバンドルされている SNMP Agent。
      ( Solaris 10 にもバンドルされています )
      今後は System Management Agent に統合予定です。

  • Sun SNMP Management Agent ※ Sun Download Center から取得できます
    http://www.sun.com/servers/entry/sun_management.html
    • Sun Hardware Product System 用の SNMP Agent
      Sun Fire V215/245/445 Server 等の H/W 情報を監視できます。

    ※ 上記の他に、Sun MC ( Sun Management Center ) などにも SNMP Agent が含まれています。

この SMA では、MIB ファイルや SNMP 関連のコマンドが大幅に追加されています。
そこで今回は SMA を利用して、SNMP の情報取得例をご紹介したいと思います。

まず SMA の大きな変更点として、いくつかピックアップしてみました。


[ SMA の変更点 ]
  • SMA の Version

    SMA の Version 情報を確認してみると、 NET-SNMP を元に作成されている事が確認できます。

    % /usr/sfw/sbin/snmpd -v
    
    NET-SNMP version:  5.0.9
    Web:               http://www.net-snmp.org/
    Email:             net-snmp-coders@lists.sourceforge.net
    
    %
    

  • SMA の MIB ファイル

    SMA になって、Solstice Enterprise Agent の時よりも多くの MIB ファイル が追加されました。 その為、SNMP で監視できる項目も大幅に増えています。

    SMA の MIB 定義ファイルは /etc/sma/snmp/mibs 配下にあります。

    % pwd
    /etc/sma/snmp/mibs
    %
    % ls
    AGENTX-MIB.txt                        RFC-1215.txt
    DISMAN-EVENT-MIB.txt                  RFC1155-SMI.txt
    DISMAN-SCHEDULE-MIB.txt               RFC1213-MIB.txt
    	:
    	: 省略
    	:
    NET-SNMP-SYSTEM-MIB.txt               UCD-IPFWACC-MIB.txt
    NET-SNMP-TC.txt                       UCD-SNMP-MIB.txt
    NETWORK-SERVICES-MIB.txt              UDP-MIB.txt
    NOTIFICATION-LOG-MIB.txt              smatrap.mib
    %
    
    ちなみに、Solstice Enterprise Agents の MIB File は下記の2つだけでした。
    ( Solaris 10 でも Solstice Enterprise Agents はインストールされているので、下記のファイルも確認する事ができます。)
    % pwd
    /var/snmp/mib
    %
    % ls
    snmpdx.mib   sun.mib
    %
    

  • SNMP 関連のコマンド

    SNMP の情報取得に役立つ snmpwalk, snmpget といったコマンドも追加されています。
    その為、他にパッケージ等を追加しなくても、SNMP の動作確認などが行えます。

    • /usr/sfw/bin/snmpwalk コマンド
      指定した OID 配下の情報を取得 ( ツリー単位 )

      例 ) OID : .1.3.6.1.2.1 配下を全表示
      % /usr/sfw/bin/snmpwalk -v 1 -c public HOSTNAME .1.3.6.1.2.1
    • /usr/sfw/bin/snmpget コマンド
      指定した OID の情報を取得 ( エントリ単位 )

      例 ) OID : .1.3.6.1.4.1.2021.10.1.5.1 の情報 ( CPU 使用率 ) を表示
      % /usr/sfw/bin/snmpget -v 1 -c public HOSTNAME .1.3.6.1.4.1.2021.10.1.5.1
    • /usr/sfw/bin/snmptranslate コマンド
      MIB シンボル名や OID Tree を表示

      例 ) MIB シンボル名と OID をツリー構造で表示
      % snmptranslate -Tp
      +--iso(1)
         |
         +--org(3)
            |
            +--dod(6)
      


  • SNMP Trap 関連のコマンド

    SNMP Trap 関連のコマンドも標準で入っています。

    • /usr/sfw/bin/snmptrap コマンド
      特定ホストに Test Trap を上げる事ができる。

      例 ) SNMP Ver1
      % /usr/sfw/bin/snmptrap -v 2c -c public HOSTNAME .1.3.6.1.4.1.8072.999999999  6 1 '' .1.3.6.1.4.1.8072.999999999.1 s "Test Trap"
    • /usr/sfw/sbin/snmptrapd デーモン
      SNMP Trap を受信する事ができる


上記の様に SMA では、かなり多くの MIB や SNMP コマンドが追加されています。



それでは SMA を利用して、Solaris 10 のシステム同士 ( HOST-1, HOST-2 の計 2 台 ) で SNMP の情報を取得してみたいと思います。
  • SMA を利用してメモリ関連の情報取得例

    HOST-1 から snmpwalk コマンドを利用して HOST-2 の物理メモリサイズを取得してみます。

    1. まず HOST-2 上でメモリの��報を持っていそうな MIB シンボル名を調べます。
      snmptranslate -Tp コマンドは OID と MIB シンボル名をツリー構造で表示してくれるコマンドです。

      snmptranslate コマンドを利用すると、かなり長い出力になるので、 grep などで絞り込んだ方が良いと思います。

      HOST-2% snmptranslate -Tp
      +--iso(1)
         |
         +--org(3)
            |
            +--dod(6)
               |
               +--internet(1)
                  |
                  +--private(4)
                  |  |
                  |  +--enterprises(1)
                  |     |
                  |     +--ucdavis(2021)
                  |     |  |
                  |     |  +--memory(4)
                  |     |  |  |
                  |     |  |  +-- -R-- Integer32 memIndex(1)
                  |     |  |  +-- -R-- String    memErrorName(2)
                  |     |  |  |        Textual Convention: DisplayString
                  |     |  |  |        Size: 0..255
                  |     |  |  +-- -R-- Integer32 memTotalSwap(3)
                  |     |  |  +-- -R-- Integer32 memAvailSwap(4)
                  |     |  |  +-- -R-- Integer32 memTotalReal(5)
                  |     |  |  +-- -R-- Integer32 memAvailReal(6)
                  |     |  |  +-- -R-- Integer32 memTotalSwapTXT(7)
      	:
      	: 省略
      	:
      HOST-2%
      これで memory に関連しそうな MIB シンボル名と OID が確認できました。

    2. 次に先程の mem から始まる MIB シンボル名を利用して、HOST-1 から HOST-2 に snmpwalk コマンドを実行します。
      HOST-1% /usr/sfw/bin/snmpwalk -v 1 -c public HOST-2 mem | grep Real
      UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 262144  <== K bytes
      UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 10448   <== K bytes
      HOST-1%
      Total Memory Size ( Real ) が確認できました。

    3. 試しに HOST-2 で prtdiag -v コマンドを実行してみると、 Memory Size が同じ 256M byte ( 262144K byte ) である事が確認できます。
      HOST-2% prtdiag -v | grep Memory
      Memory size: 256 Megabytes
      HOST-2%
    尚、各 MIB シンボル名の簡単な説明が MIB 定義ファイル ( /etc/sma/snmp/mibs ) の中に、 DESCRIPTION やコメントなどで記載されているので、そちらも参考になると思います。



  • SMA を利用して SNMP Trap を受け取る

    今度は snmptrap コマンドを利用して、HOST-1 から HOST-2 に SNMP Trap を上げて見たいと思います。

    1. まず SNMP Trap を受け取る HOST-2 で snmptrapd デーモンを上げておきます。
      ( ログファイルは /tmp/snmptrapd.log です )
      HOST-2# /usr/sfw/sbin/snmptrapd -o /tmp/snmptrapd.log
      HOST-2#
      HOST-2# cat /tmp/snmptrapd.log
      2007-07-24 09:53:12 NET-SNMP version 5.0.9 Started.
      HOST-2#
      
    2. 次に HOST-1 から HOST-2 に snmptrap コマンドで Test Trap を送信します。
      HOST-1% /usr/sfw/bin/snmptrap -v 2c -c public HOST-2 '' .1.3.6.1.4.1.8072.999999999 .1.3.6.1.4.1.8072.999999999.1 s "Test Trap"
      HOST-1%
    3. SNMP Trap を受け取る HOST-2 のログファイルを確認すると、 SNMP Trap が記録されています。
      HOST-2# cat /tmp/snmptrapd.log
      2007-07-24 09:53:12 NET-SNMP version 5.0.9 Started.
      2007-07-24 09:54:12 \*\*\*\*\*\*\*\*\*\*\*\*\* [\*\*\*.\*\*\*.\*\*\*.\*\*\*]:
              DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (335864288) 38 days, 20:57:22.88       SNMPv2-MIB::snmpTrapOID.0 = OID: NET-SNMP-MIB::netSnmp.999999999        NET-SNMP-MIB::netSnmp.999999999.1 = STRING: "Test Trap"
      HOST-2#
    以上の様に簡単に SNMP Trap を送信・受信することができました。

今回は SMA を利用して MIB の項目の値を取得したり、SNMP Trap を実際に受け取ったりしてみました。

snmptrapd を利用すれば簡単に SNMP trap を受け取ることができますので、 SNMP Agent になれるシステムや機器 ( router など ) の検証を行うときなどにも 力を発揮すると思います。

又、snmptranslate コマンドや MIB 定義ファイル ( /etc/sma/snmp/mibs 配下 ) のコメント欄を参照すれば、 対象のホストで、どのような情報が取得できるのかご確認頂けます。

システムのパフォーマンス等の情報を cron で定期的に取得するのにも便利ですので、 Solaris 10 のシステムがありましたら、是非一度、お試し下さい。


\*\*\* 参考資料 \*\*\*
投稿されたコメント:

コメント
コメントは無効になっています。
About

Search

Archives
« 4月 2014
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
今日