ホーム > Windows > Windows 付属のsnmpとnet-snmpdを併用

Windows 付属のsnmpとnet-snmpdを併用

2008 年 10 月 8 日

Windows付属のSNMPサービスとSNMP Informantを使っていると マシンの情報を取得するには特に問題ない情報量であるが、別途周辺機器の情報まで情報取得となると拡張方法がわからない。実際 拡張して情報を取得出来るかもわからない。

ちなみに、Windows標準SNMP+SNMP Informantで取得可能な情報は、

標準のMIB-2以外にもRFC1514で定義されている「HOST RESOURCE」をはじめ、LAN Manager、DHCP、WINS、IISなど様々なMIBとなっている。

先日、APC UPSのバッテリーを交換したのでWindowsマシンに接続したUPSの監視も行いたい。

通常ならAPC純正ツールを利用すれば、UPS情報の取得は出来そうですが調べるのが面倒なのと すでにapcupsdをインストールして稼働状態にあることもあり、net-snmpdをインストールしてみた。

インストールは、net-snmpdで配布されているバイナリ(5.4.2-1)を利用した。

Windowsh付属のsnmpdを停止後、net-snmpdをインストール。

snmpd.confを編集する。

—snmpd.conf—

com2sec local localhost local
com2sec hoge 192.168.x.x/24 hoge
com2sec fuga 192.168.xx.0/24 fuga

group MyRWGroup   v1    local
group MyRWGroup   v2c  local
group MyRWGroup   usm local
group MyROGroup   v1    hoge
group MyROGroup   v2c  hoge
group MyROGroup   usm hoge
group MyROGroup2 v1    fuga
group MyROGroup2 v2c  fuga
group MyROGroup2 usm fuga

view all included .1 80

access MyROGroup “” any noauth exact all none none
access MyRWGroup “” any noauth exact all all none
access MyROGroup2 “” any noauth exact all none none

基本的な設定完了後、snmpdの動作チェックを行う。

$ snmpwalk -c vianet -v1 192.168.x.x system
SNMPv2-MIB::sysDescr.0 = STRING: Windows quad 5.1.2600 Service Pack 3 XP Professional x86 Family 15 Model 6 Stepping 4
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.13
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (2188) 0:00:21.88
SNMPv2-MIB::sysContact.0 = STRING: Me <me@somewhere.org>
SNMPv2-MIB::sysName.0 = STRING: quad
SNMPv2-MIB::sysLocation.0 = STRING: Right here, right now.
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.3 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.4 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.6 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.7 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.8 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.9 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module to describe generic objects for network interface sub-layers
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.6 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.7 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.8 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.9 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (9) 0:00:00.09
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (9) 0:00:00.09
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (9) 0:00:00.09
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (9) 0:00:00.09
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (9) 0:00:00.09
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (9) 0:00:00.09
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (12) 0:00:00.12
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (12) 0:00:00.12

ちゃんと動作したので、続いてupsの監視設定をする。

現状では、apcupsdをインストール&設定&運用中であり、詳しい説明は割愛。

apcupsdのデータをsnmpで取得するために、いくつかGNU Toolsをインストールする。といっても、awkのみインストールでOK。今回は、gawkをインストールすることにする。Windows版のgawk(gawk-3.16マルチバイト文字対応版)を c:\usr\local\gawkにインストールした。

snmpd.confにups情報取得の設定を追加する。追加する項目は、

  1. Battery Capacity
  2. InputVoltage
  3. Battery Load
  4. Battery OpeTime

の4つとする。 SmartUPSなら温度も取得出来るがESシリーズも併用しているため今回は省略。
下記のコマンドを適当な名前でC:\usr\snmpに作成する。

  1. Battery Capacity(BC.BAT)
    c:\apcupsd\bin\apcaccess.exe status | c:\usr\local\gawkm115\gawk.exe ‘/^BCHARGE/ {print int($3)}’
  2. InputVoltage(IV.BAT)
    c:\apcupsd\bin\apcaccess.exe status | c:\usr\local\gawkm115\gawk.exe ‘/^LINEV/ {print int($3)}’
  3. Battery Load(BL.BAT)
    c:\apcupsd\bin\apcaccess.exe status | c:\usr\local\gawkm115\gawk.exe ‘/^LOADPCT/ {print int($3)}’
  4. Battery Opetime(BO.BAT)
    c:\apcupsd\bin\apcaccess.exe status | c:\usr\local\gawkm115\gawk.exe ‘/^TIMELEFT/ {print int($3)}’

作成したBATファイルをsnmpd.confに書く。

extend .1.3.6.1.4.1.2021.56 Battery_Capacity “C:\\usr\\snmp\\BC.BAT”
extend .1.3.6.1.4.1.2021.57 Input_Voltage C:\\usr\\snmp\\IV.BAT
extend .1.3.6.1.4.1.2021.58 Battey_Load C:\\usr\\snmp\\BL.BAT
extend .1.3.6.1.4.1.2021.59 Operating_Time C:\\usr\\snmp\\BO.BAT

書けたら、net-snmpを再起動する。

$ snmpwalk -c homenet -v1 192.168.x.x .1.3.6.1.4.1.2021.56
UCD-SNMP-MIB::ucdavis.56.1.0 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.56.2.1.2.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = STRING: “C:\\usr\\snmp\\BC.BAT”
UCD-SNMP-MIB::ucdavis.56.2.1.3.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = “”
UCD-SNMP-MIB::ucdavis.56.2.1.4.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = “”
UCD-SNMP-MIB::ucdavis.56.2.1.5.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = INTEGER: 5
UCD-SNMP-MIB::ucdavis.56.2.1.6.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.56.2.1.7.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.56.2.1.20.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = INTEGER: 4
UCD-SNMP-MIB::ucdavis.56.2.1.21.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.56.3.1.1.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = “”
UCD-SNMP-MIB::ucdavis.56.3.1.2.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = STRING: ”
C:\\WINDOWS\\system32>c:\\apcupsd\\bin\\apcaccess.exe status   | c:\\usr\\local\\gawkm115\\gawk.exe ‘/BCHARGE/ {print int($3)}’
100″
UCD-SNMP-MIB::ucdavis.56.3.1.3.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = INTEGER: 3
UCD-SNMP-MIB::ucdavis.56.3.1.4.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.56.4.1.2.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121.1 = “”
UCD-SNMP-MIB::ucdavis.56.4.1.2.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121.2 = STRING: “C:\\WINDOWS\\system32>c:\\apcupsd\\bin\\apcaccess.exe status   | c:\\usr\\local\\gawkm115\\gawk.exe ‘/BCHARGE/ {print int($3)}’ ”
UCD-SNMP-MIB::ucdavis.56.4.1.2.16.66.97.116.116.101.114.121.95.67.97.112.97.99.105.116.121.3 = STRING: “100″

のように取得出来ることを確認。

あとは、cactiでデータテンプレートとグラフテンプレートを作成すれば完成ですが、net-snmpの待ち受けポートを変更する必要があります。net-snmpのポート変更の仕方が分からなかったので、付属のsnmpのポートを変更しました。変更箇所は、C:\WINDOWS\system32\drivers\etc\servicesのsnmp 161を 10161に。

最後に、Windows付属のSNMPとnet-snmpを再起動して完了。

それにしても、今まで管理をまともにしていなかったんですが、いざ グラフ化してみるとものすごい数のグラフになってしまうほど管理対象マシンの数が多いです。PCやネットワーク関係のSNMP対応しているHOST数は25台w

taizho Windows Print This Post Print This Post あとで読む

  1. コメントはまだありません。
  1. トラックバックはまだありません。