CPU使用率のアイテムで稀にZBX_NOTSUPPORTEDになる

いつも当フォーラムには大変助けて頂いております。

現在ZABBIX v2.0.0のサーバーを立てて複数のWindowsサーバー
及びLinuxサーバーの監視を実施致しております。
この中で一部のサーバー(Windows 2008 R2 SP1 ZABBIX Agent v2.0.0)にて
CPU使用率のアイテム"system.cpu.util[,,avg5]"が
ZBX_NOTSUPPORTEDになる事があります。
ZABBIX WEBコンソール上でもこの項目が「×取得不可」と出る事があります。

そこでZABBIXサーバーからzabbix_getを一定間隔で打って記録するバッチを作成し、
サーバー及び対象エージェントのログレベルを上げて実施致しました。
記録対象は以下の3パターン

①サーバーA(今事象発生中) : system.cpu.util[,,avg5]を30秒毎に計測
②サーバーB : system.cpu.util[,,avg5]を30秒毎に計測
③サーバーA : vm.memory.size[pused]を30秒毎に計測

上記を同時に暫く稼働させてログを取得した結果、
やはり①のみ発生しておりました。
同じサーバーの③は①でZBX_NOTSUPPORTEDになっている間も
値が取得出来ておりました。

同時間帯のエージェントログも確認致しました所、
該当時間で当該アイテムのみZBX_NOTSUPPORTEDになっている所が
見受けられました。

サーバー側のログについては該当時間のログは確認出来ませんでした
(zabbix_getで実行したから?)。ただアイテムで計測して測定不可になったであろう時間帯で
下記のようなログが発生しておりました。

31531:20121127:104800.206 In get_value() key:'system.cpu.util[,,avg5]'
31531:20121127:104800.206 In get_value_agent() host:'A-HOST01' addr:'11.22.33.44' key:'system.cpu.util[,,avg5]'

31531:20121127:104800.218 Sending [system.cpu.util[,,avg5]]
31531:20121127:104800.235 get value from agent result: 'ZBX_NOTSUPPORTED'
31531:20121127:104800.235 Item [A-HOST01:system.cpu.util[,,avg5]] error: Not supported by Zabbix Agent
31531:20121127:104800.235 End of get_value():NOTSUPPORTED

ネットワークの問題も疑っていたのですが
CPU以外(以前ネットワークのインターフェース監視を行っていた際、
PerfCounterのNIC帯域監視でも「×取得不可」発生しておりました)
では全く発生していないので他にも問題があるのではと思っております。

もし宜しければサポート頂けたら幸いです。
宜しくお願い致します。

※. 添付ファイルは前述①のログと監視対象サーバーのエージェント設定抜粋です。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

もしかしたら、エージェントからの値取得に時間がかかってしまっ
てタイムアウトが発生しているのかもしれません。

zabbix_server.conf内のTimeoutの値がデフォルトの3秒のままであ
るならば、少し時間をのばすよう変更して、zabbix_serverのプロ
セスを再起動してみてください。

ユーザー okanokouji の写真

>TNK様
お世話になっております。
ご回答ありがとうございます。
仰る通りTimeout値はデフォルトのままでございました。

zabbix_server.confのTimeout値を30に変更致しまして再度シェルを動かし計測、
まだ'ZBX_NOTSUPPORTED'が発生するので
今度は監視対象サーバーのzabbix_agentd.confのTimeout値も30にして実施致しました。
実施後のzabbix_getの計測結果はTimeout3030.txtでございます。

ユーザー okanokouji の写真

その後色々と施策をしておりますが2.0.0では現象が改善されませんでした。

施策は以下です。

・サーバー側のTimeout値を30
・エージェント側のTimeout値を30
・エージェントにPerfCounterの設定をカスタムで追加した以下4つをコメント化

 PerfCounter=NIC2_if_in,"\Network Interface(Microsoft Virtual Machine バス ネットワーク アダプター _3)\Bytes Received/sec",30
 PerfCounter=NIC2_if_out,"\Network Interface(Microsoft Virtual Machine バス ネットワーク アダプター _3)\Bytes Sent/sec",30
 PerfCounter=NIC3_if_in,"\Network Interface(Microsoft Virtual Machine バス ネットワーク アダプター _4)\Bytes Received/sec",30
 PerfCounter=NIC3_if_out,"\Network Interface(Microsoft Virtual Machine バス ネットワーク アダプター _4)\Bytes Sent/sec",30

以上を施しても状況は改善されず、
仕方なく対象Windowsの2.0.0 Agentをアンインストール後、
1.6.9のAgent(過去同機でCPU使用率が取得出来た実績あり、ただしこの時はサーバーも1.6.9)を導入致しました所、
CPU使用率がZBX_NOTSUPPORTDが発生せず、取得出来るようになりました。

出来ればこのAgentも2.0.0にしたいのですが、
なぜ1.6.9にてCPU使用率がちゃんと計測出来るのか、原因は分かっておりません。
当件で何か情報がありましたら教えて頂けると幸いです。

最悪はこの1.6.9で運用していこうと思います。

ユーザー kodai の写真

system.cpu.utilの件はこちらで報告されているものと同じように見えます。
https://support.zabbix.com/browse/ZBX-5201

どうやらWindowsのProcessor Timeパフォーマンスカウンタは-1を返すことがあるようです。現在修正対応中のようなのですがうまく再現ができておらず、

①サーバーA(今事象発生中) : system.cpu.util[,,avg5]を30秒毎に計測
②サーバーB : system.cpu.util[,,avg5]を30秒毎に計測
③サーバーA : vm.memory.size[pused]を30秒毎に計測

なぜサーバーBには問題が出ないのか、もしお分かりの点があれば教えていただけると助かります。

ユーザー okanokouji の写真

kodai様、お世話になります。
ご回答ありがとうございます。

サーバーAとサーバーBの違いですがWindows Server 2008 R2 SP1(64bit)と
Windows Server 2008 SP2(32bit)という違いがあります。
ただ当監視サーバーは複数サーバーに向けて監視を行っておりまして
これらとは別のサーバーC(Windows Server 2008 R2 SP未適用(64bit))では
system.cpu.util[,,avg5]が問題なく監視出来ています。

サーバーBはサーバーAとネットワーク上同じ場所にある事もありまして
ネットワーク起因の線が薄いのではという比較の意味で列挙致しました。

サーバーAとOSの条件を一緒にしたサーバーD(Windows Server 2008 R2 SP1(64bit))を
別途用意し同監視を行った所、こちらも問題がありませんでした。

いずれも仮想サーバーOSです。

> なぜサーバーBには問題が出ないのか、もしお分かりの点があれば教えていただけると助かります。

そういう意味ではOSの違い以外は見当たりません。