取得不可から有効に戻らないアイテムの対応について
いつもお世話になっております。
取得不可が続くアイテムがあり、その原因と有効に戻す方法を教えていただきたく投稿いたしました。
環境
Zabbix Server:3.0.7
OS:CentOS 7.2
Zabbix Agent:3.0.7
OS:Ubuntu 14.04
監視対象サーバ上でGPUの性能情報をファイルに出力するスクリプトを使用しており、
そのファイルから以下のアイテムで情報収集しています。
1つのファイルに性能情報は6種類出力しており、それぞれに対応するアイテムを作成。
また1つのサーバに8つのGPUが搭載されているため、8GPU(ファイル)×6種類のアイテム=計48アイテムで、
それぞれのGPUの性能情報を収集しています。
例
ファイル1
性能情報A用アイテム
性能情報B用アイテム
~
性能情報F用アイテム
ファイル2
性能情報A用アイテム
性能情報B用アイテム
~
性能情報F用アイテム
・
・
・
ファイル8
性能情報A用アイテム
性能情報B用アイテム
~
性能情報F用アイテム
アイテム
タイプ:Zabbixエージェント(アクティブ)
キー:vfs.file.regexp<ファイル名>,"<性能情報名>: *([0-9].*) <単位>",,,,\1]
更新間隔:30秒
スクリプトはOSのcronで以下の通り実行していました。
* * * * * for i in `seq 0 20 59`;do (sleep ${i} ; xxxx.sh ) & done;
このスクリプトがファイル初期化⇒性能情報出力を行うタイミングとアイテムの更新時間が重なることで、
度々「Received value [] is not suitable for value type [Numeric (unsigned)] and data type [Decimal]」のように
値が取得できないことがあるため、各アイテムとcronの設定を以下の通り変更しました。
アイテム
タイプ:Zabbixエージェント
キー:vfs.file.regexp<ファイル名>,"<性能情報名>: *([0-9].*) <単位>",,,,\1]
更新時間のカスタマイズ
タイプ:定期更新
更新間隔:s15,45
cron:* * * * * for i in `seq 0 30 59`;do (sleep ${i} ; xxxx.sh ) & done;
アイテムの更新とcronの実行タイミングをずらし、しばらくはうまく動作していたのですが、
上記例で記載したファイル1に紐付くアイテムA、アイテムC~Fと、ファイル6に紐付く
アイテムA、アイテムC~Fが突然取得不可となり、そのまま有効に戻らなくなってしまいました。
その他のファイルに紐付くアイテムは有効のまま使用できています。
取得不可アイテムの無効化⇒有効化でも解決しません。
Zabbix Serverの「取得不可アイテムの更新間隔(秒)」は60秒です。
この他必要な情報がございましたら、できるかぎり記載いたします。
情報提供お願いいたします。
以上です。
TNK - 投稿数: 4769
性能情報出力の処理に何秒くらいかかるのでしょうか?
実行開始タイミングをずらしていても、時間が長くかかっているの
であれば、処理タイミングが重なってしまう可能性が高いと思われ
ます。
例えば、cronでファイル出力を行っているのであれば、そのファイ
ル出力処理を行っている最中に、取得したい正規表現の行が出力さ
れていないタイミングでアイテムの値の取得処理のタイミングが重
なってしまっていたりしませんか?
そうであるならば、性能情報を取得してファイルに書き込み終える
までの処理時間の影響を小さくするために、cronでの処理は、直接
Zabbixエージェントがアクセスするファイルに出力するのではなく、
一時的に別のファイルに出力して、出力し終えたらZabbixエージェ
ントがアクセスするファイルと置き換えるというような処理にして
みたらいかがでしょうか?
dondoc - 投稿数: 86
TNK様
回答ありがとうございます。
試しにcronでのスクリプト実行を2分ごとにし、アイテム側の更新時間をs50としたところ、
全てのアイテムが有効に戻りました。
スクリプト実行でファイルサイズが0になる時間が10秒ほどでしたが、その他の処理が
何かしら影響を及ぼして情報採取ができなくなっていたようです。
ご提案いただいた別ファイルへの出力や、スクリプトの処理見直しなど、
改めて対応策を考えます。