FreeBSD/SNMP のバックアップの現在との差分(No.2)


SNMP

Net-SNMPとはSNMP(Simple Network Management Protocol)を使用してルータやホストを管理するためのデーモンやパッケージの集合です。
ルータにSNMPで情報を取得したい場合、ルータの設定変更を一括で行う場合、トラップを生成したい場合等にとても役立つでしょう。
SNMPでトラフィックやディスクの情報を取り出して、MRTGなどでグラフィカルに表示したりします。

  1. 環境
  2. インストール
  3. /etc/rc.confの編集
  4. snmp設定ファイル編集
  5. hosts.allowファイル編集
  6. 確認
  7. 初期設定

環境

FreeBSD 6.0
net-snmpd 5.2.2

インストール

# cd /usr/ports/net-mgmt/net-snmp
# make install

/etc/rc.confの編集

■下記を追加

#SNMP
snmpd_enable="YES"
snmptrapd_enable="YES"
snmpd_conffile="/usr/local/etc/snmpd.conf"

snmp設定ファイル編集

■snmpの設定ファイルは何故か「/usr/local/share/snmp/snmpd.conf」です。
# vi /usr/local/share/snmp/snmpd.conf
■snmpの設定ファイル「/usr/local/share/snmp/snmpd.conf.example」をコピーして利用
# cp /usr/local/share/snmp/snmpd.conf.example /usr/local/etc/snmpd.conf
# vi /usr/local/etc/snmpd.conf
下記のような感じでコミュニティ名とネットワークを設定する。
コミュニティー名とはパスワードみたいなものです。
#       sec.name  source          community
com2sec local     localhost       PRIVATE
com2sec mynetwork 192.168.0.0/24 PUBLIC
***追加***
proc httpd     #httpプロセス監視の為
disk /var      #diskの容量を取得する為
disk /home
disk /usr
***追加***

hosts.allowの設定

■snmp接続したいIPを通るようにしておく

# vi /etc/hosts.allow
snmpd : 192.168.1. : allow
snmpd : 127.0.0.1 : allow 

確認

■snmpdプロセスを立ち上げて確認

# /usr/local/etc/rc.d/snmpd.sh start
# /usr/local/etc/rc.d/snmptrapd.sh start
# snmpwalk -v 1 -c PUBLIC 192.168.0.1

MIB情報がいっぱい出てくれば正常です。
MRTGでのグラフ表示は ⇒ こちら

MIB情報の検索

$ snmpwalk -c <コミュニティ名> <ホスト名> [ 検索範囲 ] 

$ snmpwalk -v1 -c public localhost 

MIB情報の名前変換

$ snmptranslate -On UCD-SNMP-MIB::memTotalReal.0
.1.3.6.1.4.1.2021.4.5.0

$ snmptranslate .1.3.6.1.4.1.2021.4.5.0
UCD-SNMP-MIB::memTotalReal.0

MIBシンボル名/オブジェクトIDの詳細を表示

$ snmptranslate -Td .1.3.6.1.4.1.2021.4.5.0
UCD-SNMP-MIB::memTotalReal.0
memTotalReal OBJECT-TYPE
  -- FROM       UCD-SNMP-MIB
  SYNTAX        Integer32
  UNITS         "kB"
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION   "The total amount of real/physical memory installed
         on this host."
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) ucdavis(2021) memory(4) memTotalReal(5) 0 }

MIBシンボル名/オブジェクトID以下のツリー構造を表示

$ snmptranslate -Tp .1.3.6.1.4.1.2021.4
+--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)
  +-- -R-- Integer32 memAvailSwapTXT(8)
  +-- -R-- Integer32 memTotalRealTXT(9)
  +-- -R-- Integer32 memAvailRealTXT(10)
  +-- -R-- Integer32 memTotalFree(11)
  +-- -R-- Integer32 memMinimumSwap(12)
  +-- -R-- Integer32 memShared(13)
  +-- -R-- Integer32 memBuffer(14)
  +-- -R-- Integer32 memCached(15)
  +-- -R-- Integer32 memUsedSwapTXT(16)
  +-- -R-- Integer32 memUsedRealTXT(17)
  +-- -R-- EnumVal   memSwapError(100)
  |        Textual Convention: UCDErrorFlag
  |        Values: noError(0), error(1)
  +-- -R-- String    memSwapErrorMsg(101)
           Textual Convention: DisplayString
           Size: 0..255

ソースからインストール

http://www.net-snmp.org/ ここから、ソースをダウンロード
# tar zxvf net-snmp-5.4.2.1.tar.gz
# cd net-snmp-5.4.2.1
# ./configure
# make
# make install

起動時にエラー

こんなエラーが出て起動できてなかった・・・。
# /usr/local/etc/rc.d/snmpd start
Starting snmpd.
/libexec/ld-elf.so.1: Shared object "libperl.so" not found, required by "snmpd"
/usr/lib以下にシンボリックリンクを張ってやる。
# ln -s /usr/local/lib/perl5/5.8.9/mach/CORE/libperl.so /usr/lib/libperl.so
再度起動
# /usr/local/etc/rc.d/snmpd start
Starting snmpd.
起動できた。 たぶん、snmpdを再インストールしてやっても普通に起動できるのだと思う。
# portupgrade net-mgmt/net-snmp