複数ある端末のトラフィック・CPU稼働率・メモリ使用率を取得する設定を行っています。
監視対象端末はWindows Server 2003で、監視端末はUNIXです。
mrtg.cfgファイルを作成し、実行するとCPU稼働率・メモリ使用率は取得できるのにトラフィックのみエラーが出ます。
エラー内容は下記の通りです。
-------------------------------------------------------------
SNMP Error:
no response received
SNMPv1_Session (remote host: "xxx.x.xx.xx"[xxx.x.xx.xx].161)
community: "test"
request ID: 296680867
PDU bufsize: 8000 bytes
timeout: 2s
retries: 5
backoff: 1)
at /data/mrtg-2/bin/../lib/mrtg2/SNMP_util.pm line 450
SNMPGET Problem for ifInOctets.2 ifOutOctets.2 sysUptime sysName on test@xxx.x.xx.xx
at ./mrtg line 1491
WARNING: Expected a number but got ''
WARNING: Expected a number but got ''
-------------------------------------------------------------
監視端末のコミュニティ名は『test』に変更しています。
mrtg.cfgは下記の様に記述しています。
-------------------------------------------------------------
Target[intra1_lan]: 2:test@xxx.x.xx.xx:
SetEnv[intra1_lan]: MRTG_INT_IP="xxx.x.xx.xx" MRTG_INT_DESCR="eth0"
MaxBytes[intra1_lan]: 1250000
AbsMax[intra1_lan]: 1250000
…以下略
-------------------------------------------------------------
いろいろと調べてみたのですが、原因が判りません。
どなたか情報をいただければ、と投稿しました。
ご教示よろしくお願いします。
> -------------------------------------------------------------
> SNMP Error:
> no response received
> SNMPv1_Session (remote host: "xxx.x.xx.xx"[xxx.x.xx.xx].161)
> community: "test"
> request ID: 296680867
> PDU bufsize: 8000 bytes
> timeout: 2s
> retries: 5
> backoff: 1)
> at /data/mrtg-2/bin/../lib/mrtg2/SNMP_util.pm line 450
> SNMPGET Problem for ifInOctets.2 ifOutOctets.2 sysUptime sysName on test@xxx.x.xx.xx
> at ./mrtg line 1491
> WARNING: Expected a number but got ''
> WARNING: Expected a number but got ''
> -------------------------------------------------------------
>
> 監視端末のコミュニティ名は『test』に変更しています。
> mrtg.cfgは下記の様に記述しています。
>
> -------------------------------------------------------------
> Target[intra1_lan]: 2:test@xxx.x.xx.xx:
インターフェース番号 2のデータを取得しようとしてますが、実は2ではないということはありませんか? Linuxでは1:lo で2:eth0という風になりますが、Windowsの場合、必ずしもそうはならなかったと記憶してます。
下記でインタフェース関係のMIBが取れますが、IF-MIB::ifIndex.2、IF-MIB::ifDescr.2 の内容を見ればどれがNICのものかわかると思うのですが・・・
# snmpwalk -v 1 xxx.x.xx.xx -c public 1.3.6.1.2.1.2
IF-MIB::ifNumber.0 = INTEGER: 2
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifDescr.1 = STRING: MS TCP Loopback interface
IF-MIB::ifDescr.2 = STRING: Intel(R) PRO/1000 CT Network Connection - pPbg XPW[ ~j|[g
IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)
IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifMtu.1 = INTEGER: 1520
IF-MIB::ifMtu.2 = INTEGER: 1500
IF-MIB::ifSpeed.1 = Gauge32: 10000000
IF-MIB::ifSpeed.2 = Gauge32: 100000000
IF-MIB::ifPhysAddress.1 = STRING:
IF-MIB::ifPhysAddress.2 = STRING: 0:d:61:30:a9:13
IF-MIB::ifAdminStatus.1 = INTEGER: up(1)
IF-MIB::ifAdminStatus.2 = INTEGER: up(1)
IF-MIB::ifOperStatus.1 = INTEGER: up(1)
IF-MIB::ifOperStatus.2 = INTEGER: up(1)
IF-MIB::ifLastChange.1 = Timeticks: (0) 0:00:00
IF-MIB::ifLastChange.2 = Timeticks: (0) 0:00:00
IF-MIB::ifInOctets.1 = Counter32: 4639489
IF-MIB::ifInOctets.2 = Counter32: 341001173
IF-MIB::ifInUcastPkts.1 = Counter32: 88456
IF-MIB::ifInUcastPkts.2 = Counter32: 237523
IF-MIB::ifInNUcastPkts.1 = Counter32: 0
IF-MIB::ifInNUcastPkts.2 = Counter32: 250
IF-MIB::ifInDiscards.1 = Counter32: 0
IF-MIB::ifInDiscards.2 = Counter32: 0
IF-MIB::ifInErrors.1 = Counter32: 0
IF-MIB::ifInErrors.2 = Counter32: 0
IF-MIB::ifInUnknownProtos.1 = Counter32: 0
IF-MIB::ifInUnknownProtos.2 = Counter32: 9
IF-MIB::ifOutOctets.1 = Counter32: 4639489
IF-MIB::ifOutOctets.2 = Counter32: 9492646
IF-MIB::ifOutUcastPkts.1 = Counter32: 88456
IF-MIB::ifOutUcastPkts.2 = Counter32: 160600
IF-MIB::ifOutNUcastPkts.1 = Counter32: 0
IF-MIB::ifOutNUcastPkts.2 = Counter32: 98
IF-MIB::ifOutDiscards.1 = Counter32: 0
IF-MIB::ifOutDiscards.2 = Counter32: 0
IF-MIB::ifOutErrors.1 = Counter32: 0
IF-MIB::ifOutErrors.2 = Counter32: 1
IF-MIB::ifOutQLen.1 = Gauge32: 0
IF-MIB::ifOutQLen.2 = Gauge32: 0
IF-MIB::ifSpecific.1 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.2 = OID: SNMPv2-SMI::zeroDotZero
おやじ様、返信ありがとうございます。
UNIXとWindowsServer2003の組み合わせが駄目なのか?等考え、WindowsにMRTGをインストールしmrtg.cfgを作成すると、
おやじ様の指摘した通りTargetの番号が違うことがわかりました。
> # snmpwalk -v 1 xxx.x.xx.xx -c public 1.3.6.1.2.1.2
それにしても、きちんと番号を調べるコマンドが用意されているのですね^^;
勉強不足でした。
しかしこのコマンド、上記の様に実行すると、サーバから「オプションが違うよ」とエラーが出てしまいました。
私の環境では
#/usr/local/bin/snmpwalk -v 1 -c test xxx.x.xx.xx 1.3.6.1.2.1.2
で
IF-MIB::ifNumber.0 = INTEGER: 2
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.65539 = INTEGER: 65539
IF-MIB::ifDescr.1 = STRING: MS TCP Loopback interface
IF-MIB::ifDescr.65539 = STRING: Intel(R) PRO/1000 MT Dual Port Server Adapter
IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)
…以下略
と取得できました。
LinaxとUNIXとでは引数の渡し方が違うのでしょうね。
どうもありがとうございました。
> しかしこのコマンド、上記の様に実行すると、サーバから「オプションが違うよ」とエラーが出てしまいました。
> 私の環境では
>
> #/usr/local/bin/snmpwalk -v 1 -c test xxx.x.xx.xx 1.3.6.1.2.1.2
>
> で
>
> IF-MIB::ifNumber.0 = INTEGER: 2
> IF-MIB::ifIndex.1 = INTEGER: 1
> IF-MIB::ifIndex.65539 = INTEGER: 65539
> IF-MIB::ifDescr.1 = STRING: MS TCP Loopback interface
> IF-MIB::ifDescr.65539 = STRING: Intel(R) PRO/1000 MT Dual Port Server Adapter
> IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)
> …以下略
>
> と取得できました。
> LinaxとUNIXとでは引数の渡し方が違うのでしょうね。
これは、おやじのチョンボです。-c オプションはコミュニティ名を指定するもので、うっかりWindowsのデフォルトのpublicで書いてしまっただけですので、Linux/Windowsの違いではないですよ。 誤って学習してしまうと、後で役に立たないので・・・。
それにしても、Windowsのインタフェース番号の付与法則はどうなっているんですかね? このあたりの情報は見つからないですね。
ところで、外部からSNMPアクセスを許可するならV1はまずいと思いますが・・・。最低限、accessでマネージャしかアクセスできないようにしてはどうですか?