windowsのネットワークトラフィック量の取得方法について
お世話になります。
windowsのNIC名でネットワークトラフィック量の取得を行いたいのですが
以下の設定例のパターンで設定しても、ステータスが取得不可になってしまいます。
・NIC名:Broadcom BCM5709C NetXtreme Ⅱ GigE (NDIS VBD クライアント)
※IF毎に1~4の番号が「#」か「_」で振られています(以下は3番の例)
Broadcom BCM5709C NetXtreme Ⅱ GigE(NDIS VBD クライアント) #3
Broadcom BCM5709C NetXtreme Ⅱ GigE (NDIS VBD クライアント)_3
設定例
perf_counter[Network Interface)Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント)Bytes Received/sec]
perf_counter[Network Interface)Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント) _3Bytes Received/sec]
perf_counter[Network Interface)Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント) #3Bytes Received/sec]
net.if.in[Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント),bytes]
net.if.in[Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント) #3,bytes]
net.if.in[Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント) _3,bytes]
過去に同様のNIC名で設定したことがある方がおられましたら
設定方法についてご教示頂きたく、よろしくお願いします。
TNK - 投稿数: 4731
利用されているZabbixのバージョンの記載がありませんが、利用さ
れているバージョンをお教えください。
私が認識している範囲では、カウンタ名称にマルチバイト文字が含
まれているとperf_counter[]では値がうまく取得できないようです。
ただし、Zabbix 1.8.6以降の新しいバージョンであれば、以下のよ
うな対応策があります。
まず、zabbix_agentd.confに以下のような記述を追加します。
PerfCounter=UserBytesReceived1,"Network Interface(Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント)Bytes Received/sec",30
PerfCounter=UserBytesReceived2,"Network Interface(Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント) _3Bytes Received/sec",30
このフォーラムでは文字化けしてしまっているかもしれませんが、
・「typeperf -qx」コマンドなどで確認したインターフェイス名
・括弧の向き
・ダブルコーテーションでカウンタの名前を括る
に注意して指定してください。
設定後にZabbixエージェントを再起動すれば、それぞれ、
UserBytesReceived1
UserBytesReceived2
という文字列をアイテムのキーに指定することで値を取得すること
ができるようになります。
ご参考:
http://www.zabbix.com/documentation/1.8/manual/config/windows_performanc...
http://www.zabbix.com/documentation/jp/1.8/manual/processes/zabbix_agent...
ご確認ください。
taka - 投稿数: 7
ご回答ありがとうございます。
バージョンは1.8.13です。
zabbix_agentd.confに設定してみましたが、再起動しますと以下の通りエラーのメッセージが出ます。
「エラー 1067: プロセスを途中で強制終了しました。」
エラーの原因について何かご存知でしたら、ご教示の程よろしくお願い致します。
TNK - 投稿数: 4731
例えば、ダブルコーテーションが正しく閉じられていなかったりな
ど、zabbix_agentd.confの記述が正しくない場合にそのように異常
終了してしまう場合があります。
具体的にどのような記述を、zabbix_agentd.confに記載されたのか
をお教えください。
先の私の投稿のそのままでは、バックスラッシュが消えていたりし
ますので、ご参考としてご紹介したURLの内容なども再度ご確認の
上で設定してみてください。
taka - 投稿数: 7
以下の2通りで設定しました。
PerfCounter=UserBytesReceived1,"Network Interface(Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント)Bytes Received/sec",30
PerfCounter=UserBytesReceived1,"¥Network Interface¥Broadcom BCM5709C NetXtreme II GigE (NDIS VBD クライアント)¥Bytes Received/sec",30
※全角の「¥」は半角のバックスラッシュです。
このサイトではバックスラッシュが記載できないようです。
ログを確認したところ「クライアント」の文字が文字化けしておりました。
サクラエディタで他の文字コードに変更しても文字化けは解消されません。
zabbix_agentd.confに2バイト文字は設定できないのでしょうか?
以上、よろしくお願い致します。
TNK - 投稿数: 4731
Network Interfaceの前と、Bytes Rceivedの前にバックスラッシュ
は必要です。
最初に確認させて頂くべきでしたが、Windowsのバージョンをお教
えください。
ご参考までに、今回回答させて頂くために利用した検証環境では、
Windows XP SP3を利用させて頂きました。
zabbix_agentd.confは、SJIS(MS漢字)で作成しています。
zabbix_agentd.logで、文字化けは発生していません。
-- 追記 --
zabbix_agentd.logは、UTF-8です。
taka - 投稿数: 7
windows server 2008 R2 standard Service Pack 1です。
Broadcomの前は「¥」じゃなくて「(」でしょうか?
TNK - 投稿数: 4731
恐らく、「(」だと思います。
最初の回答で書かせて頂きましたが、
typeperf -qx
の出力を確認してカウンターの名称を再度ご確認ください。
taka - 投稿数: 7
確認した名称で設定しましたが、やはりエラーのメッセージが出てしまいます。
先頭に以下の3パターンで表示されたものをすべて指定しましたが
何か齟齬はありますでしょうか。
Per Processor Network Activity Cycles
Per Processor Network Interface Card Activity
Network Interface
以上、よろしくお願い致します。
TNK - 投稿数: 4731
手元にWindows Server 2008 R2でかつ、括弧やマルチバイトを含む
ネットワークインターフェイス名を持つサーバがないため再現できてい
ません。
可能であれば、Zabbixエージェントのデバッグレベルを4などにして
エラー発生時のより詳細な情報がログで取得できないかご確認頂け
ませんでしょうか。
よろしくお願いいたします。
hayanobiton - 投稿数: 1
当方、WindowsServer2008R2に、IntelのNIC、2枚チーミングをしたら、マルチバイトを含むネットワークインターフェイスになり、同様な問題で1週間程悩んでおりましたが、私の場合、zabbix_getにより値が所得でき、外部チェック登録で運用できましたので、参考になるかどうかわかりませんが、コメント致します。
サーバー、クライアントともに、Zabbix2.0を使用しております。
まず、このフォーラムを参考にして、クライアント(Windowsサーバー)のzabbix_agentd.confに、
PerfCounter=nic_0_in,"Network Interface(チーム:Wan - Intel[R] PRO_1000 PT Dual Port Network Connection)Bytes Received/sec",30
のように追加しましたが、サーバー側でnic_0_1を取得しようとしたら、『cannot get required buffer size for counter path 'nic_0_in': [0xC0000BC4] 指定したカウンター パスを翻訳できませんでした。』とエラーが発生し取得できませんでした。
次に、サーバー側で、試しに、
zabbix_get -s クライアントアドレス -k "perf_counter[Network Interface(チーム:Wan - Intel[R] PRO_1000 PT Dual Port Network Connection)Bytes Received/sec]
と実行したら、なんと、値が取得できました。その後、DBのアイテムテーブルに直接登録など、試しましたが、どれもうまくいきませんでいしたので、外部チェックを使用することにしました。
つまり、上記コマンドを実行する、clientA_wan_out.shという文字コードUTF8のスクリプトファイルを作成し、外部チェックで登録して、値を取得しております。
よろしくお願いします
halchiyo - 投稿数: 19
すぐに此方で再現できる環境がないのですが、ホストマクロを介したアイテム設定をお試しいただいてもよろしいでしょうか。
ホストマクロを中継させると認識されることがあった覚えがあります。
ホストのマクロ設定にて以下のように登録します。
Macro {$INTERFACE_NAME01}
Value Broadcom BCM5709C NetXtreme Ⅱ GigE(NDIS VBD クライアント) #3
Macro {$INTERFACE_NAME02}
Value Broadcom BCM5709C NetXtreme Ⅱ GigE (NDIS VBD クライアント)_3
テンプレートにて以下のように登録してみてください。
perf_counter[{$INTERFACE_NAME01}Bytes Received/sec,300]
perf_counter[{$INTERFACE_NAME02}Bytes Received/sec,300]
net.if.in[{$INTERFACE_NAME01},bytes]
net.if.in[{$INTERFACE_NAME01},bytes]