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