ログ監視を利用してCSVファイルの内容をチェックする方法
ログ監視では、特定の文字列の有無をチェックして、
トリガーのステータスを変化させることができますが、
CSVファイル中の特定の位置にある数値に対して、
大小比較等を行って、その結果でトリガーのステータスを
変化させることは可能でしょうか?
例えば、CSVファイルに以下のような数値が
記録されていた場合に、
1,2,3,4,5
1,2,9,4,5
1,2,3,4,5
左から3つ目の数値が、4より大きい場合
(上記の場合、2行目が該当する)、
トリガーのステータスを変化させるようなことが
できないでしょうか?
実現方法をご存知の方がおられましたら、
ご教授ください。
heya - 投稿数: 319
こんにちは。
大小比較はよく分かりませんが、上の例に限っていえば、正規表現を使うのはどうでしょうか。
試してはいませんが、例えば、その数値が一桁限定でよければ、
{ホスト:アイテムキー.regexp("^[^,]+,[^,]+,[5-9],")}=1
みたいな感じ。二桁以上もありうるならこう?
{ホスト:アイテムキー.regexp("^[^,]+,[^,]+,0*([5-9]|[1-9][0-9]+),")}=1
部分文字列が取り出せるようになったらいろいろ便利そうなんですけどね。
TNK2 - 投稿数: 5
情報ありがとうございます。
そうですね。
正規表現をがんばって駆使すれば、
何とか対応できるかもしれません。
ただ、取扱うCSVファイルの1行がかなり長い
(項目が多数ある)場合に、その中の何箇所かについて、
それぞれチェックをするといったことを考えた場合、
もう少し簡単にチェックできる仕組みがあると
うれしいのですが。
例えば、条件式の書式
{ホスト名:logrt[CSVファイル].関数} 演算子 数値
において、関数の部分で、
テキスト解析処理(例えば、awk等)が利用できて、
$3 > 4
といったチェックの結果を返せると便利なのですが、
そのような関数は存在しないですよね。