いつの頃からかFreeBSD basesystemに付属しているbsnmpdを使ってみました。
環境整備
- FreeBSD 6.0-RELEASE
- 最新の driver が必要だったのでkernelのみ-STABLE
- basesystemのbsnmpdを使用
設定ファイル
- /etc/snmpd.config
- host, location, contact, system read あたりを設定
- write, trap は使わないので、$(write), $(trap) マクロを含むようなルールはコメントアウト
- /etc/rc.conf
- bsnmpd_enable="YES"
起動
- rcNGスクリプトから起動
- /etc/rc.d/bsnmpd start
接続テスト
- 他のホストから適当に接続
- snmpwalk -v1 -c COMMUNITY IPADDR
SNMPv2-MIB::sysDescr.0 = STRING: host.example.jp 0 FreeBSD 6.0-STABLE SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.12325.1.1.2.1.1 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (178125) 0:29:41.25 SNMPv2-MIB::sysContact.0 = STRING: root@host.example.jp SNMPv2-MIB::sysName.0 = STRING: host.example.jp SNMPv2-MIB::sysLocation.0 = STRING: Japan SNMPv2-MIB::sysServices.0 = INTEGER: 76 SNMPv2-MIB::sysORLastChange.0 = Timeticks: (4) 0:00:00.04 SNMPv2-MIB::sysORID.1 = OID: SNMPv2-SMI::enterprises.12325.1.1.1.10.2 SNMPv2-MIB::sysORID.2 = OID: SNMPv2-SMI::enterprises.12325.1.1.1.10.3 SNMPv2-MIB::sysORID.3 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.4 = OID: SNMPv2-SMI::enterprises.12325.1.1 SNMPv2-MIB::sysORID.5 = OID: IF-MIB::ifMIB SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ipMIB SNMPv2-MIB::sysORID.7 = OID: TCP-MIB::tcpMIB SNMPv2-MIB::sysORID.8 = OID: UDP-MIB::udpMIB SNMPv2-MIB::sysORID.9 = OID: IP-MIB::ip.24 SNMPv2-MIB::sysORDescr.1 = STRING: udp transport mapping SNMPv2-MIB::sysORDescr.2 = STRING: lsock transport mapping SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for SNMPv2 entities. SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for the Begemot SNMPd. SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module to describe generic objects for network interface sub-layers. SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations, but excluding their management of IP routes. SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing TCP implementations. SNMPv2-MIB::sysORDescr.8 = STRING: The MIB module for managing UDP implementations. SNMPv2-MIB::sysORDescr.9 = STRING: The MIB module for the display of CIDR multipath IP Routes.
IF-MIB::ifNumber.0 = INTEGER: 4 IF-MIB::ifIndex.1 = INTEGER: 1 IF-MIB::ifIndex.2 = INTEGER: 2 IF-MIB::ifIndex.3 = INTEGER: 3 IF-MIB::ifIndex.4 = INTEGER: 4 IF-MIB::ifDescr.1 = STRING: em0 IF-MIB::ifDescr.2 = STRING: em1 IF-MIB::ifDescr.3 = STRING: plip0 IF-MIB::ifDescr.4 = STRING: lo0
この辺りが取れます。
構成
雑感
ネットワーク関係は一通り取れるので、いわゆるMRTGのためだけに net-snmp の snmpd を入れる必要は無さそうです。
ただし、HOST-RESOURCES-MIBやUCD-SNMP-MIB::dsk系が無いので、ディスク容量の監視をしたい場合には使えません。後者は最近のnet-snmpにも廃止されているのでともかく、HOST-RECOURCES-MIBは有用な項目がたくさんあるので欲しいところですね……。
2005/12/25追記: ucdavis MIB
書き忘れていましたが、いわゆるucdavisサブツリーなどと呼ばれる.1.3.6.1.4.1.2021(enterprises.ucdavis)以下のMIBについては、上記のパッチを適用しても未実装のままです。この配下には、snmpdが動作しているホスト(SNMPエージェント)に関する情報が含まれており、特にロードアベレージを保持するlaTableサブツリー、メモリ状態を保持するmemoryサブツリーが存在します。前者は、HostResources MIBのhrProcessorLoadで1分平均のloadを、後者はhrStorageUsed等にメモリ状況も含まれるのでそこから代替ができますが、多少文脈が変わってしまいます。また、hrStorageサブツリーの構成は環境によって変化するため、hrStorageDescr等で判断しなければならないのも面倒なところです。
また、net-snmpではsnmpd.confで指定するようなプログラム実行結果のようなものも当然代替できません。
というわけで、exec等はともかく、memoryサブツリーは欲しいところですね……。