計算アイテムの文字表記について
いつもお世話になります。
Zabbix3.0.16にて、計算アイテムの式を記入したところ、zabbix-server.logより以下のログが表示され計算ができない状態です。
Cannot evaluate function "last("([0-9]+):([0-9]+):([0-9]+)(.*)(ERROR)",,,skip,\1\2\3])": item "samplehost:log[/var/log/dir/system.log" does not exist.
計算式は以下の通りです。
last("time.sh[]")-last("log[/var/log/dir/system.log,"([0-9]+):([0-9]+):([0-9]+)(.*)(ERROR)",,,skip,\1\2\3]")
time.sh[]は外部チェックで時刻を整数値で取得するスクリプトで、log[/var/log/dir/system.log,"([0-9]+):([0-9]+):([0-9]+)(.*)(ERROR)",,,skip,\1\2\3]は
ログファイルからERRORに該当する行の時刻部分を整数で取得するアイテムです。
ログの内容から、おそらく"([0-9]+):([0-9]+):([0-9]+)(.*)(ERROR)"の両端のダブルクォーテーションがエラーの原因となっていると思いますが、
アイテムキーとして記載している以上、表記を変える訳にもいかず、他の記載方法がないかご教示頂けますでしょうか。
お手数おかけいたしますが、何卒よろしくお願いいたします。
TNK - 投稿数: 4729
「"」(ダブルコーテーション)でのくくり方がまずいのではないで
しょうか?
関数の引数に指定するアイテム全体を「"」でくくるのを止めてみ
てください。
ex.
last(log[/var/log/dir/system.log,"([0-9]+):([0-9]+):([0-9]+)(.*)(ERROR)",,,skip,\1\2\3])
jusco0103 - 投稿数: 28
TNK様
いつも早急なご返信ありがとうございます。
上記の通り実施したところ、以下のエラーが出力され計算ができませんでした。
Cannot evaluate function "last("([0-9]+):([0-9]+):([0-9]+)(.*)(ERROR)",,,skip,\1\2\3])": item "samplehost:log[/var/log/dir/system.log" does not exist.
念のため、計算式も記載します。
last("time.sh[]")-last(log[/var/log/dir/system.log,"([0-9]+):([0-9]+):([0-9]+)(.*)(ERROR)",,,skip,\1\2\3])
TNK - 投稿数: 4729
last("time.sh[]")のところも同様に変更してみてください。
yk_taiko - 投稿数: 184
アイテムキー内の「"」は「\」でエスケープが必要だと思います。
マニュアルの Example5 が参考になるかと
https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/c...
jusco0103 - 投稿数: 28
TNK様
yk_taiko様
ご回答いただき、ありがとうございました。
yk_taiko様からいただいた内容を元に設定を変更したところ、正しく値が取得できるようになりました。
ちなみに設定は以下の通りです。
last("time.sh[]")-last("log[/var/log/dir/system.log,\"([0-9]+):([0-9]+):([0-9]+)(.*)(ERROR)\",,,skip,\1\2\3]")