Ruby コードが無効であるため、Ruby 例外が発生します。代わりにこれを試してください:
filter {
ruby {
init => "require 'json'"
code => "
my_hash = JSON.parse( event['url']['queryString'] )
my_hash.delete_if { |key,value| key.to_s.match(/^404;/) }
"
}
}
これは、イベント'url' => 'queryString'
に有効な json を含むフィールドがある場合に機能します。これを実現するためのある種のフィルターが既にある場合があります (例: grok )。また、logstash の組み込みjson フィルターの使用を検討し、ドロップして特定のイベントを削除することもできます。
編集:
入力がプレーンなjsonであるとします(これを整理する必要がありました):
{"id":"val1","host":"val2","app":"val3","@timestamp":"2015-08-04T19:00:03.6429322Z","@timestampEnd":"2015-08-04T19:00:03.6429322Z","vid":"val4","vidNew":"val5","sessionId":"val6","url":{"rawUrl":"val7","path":"val8","queryString":{"404;dfdgfdgfghfhjghhhhhhhhhhhhh":""}},"net":{"method":"GET","status":"200","size":"0","timeTakenMillis":"0"},"context":{"SearchType":""}}
codec => "json"
ファイル入力で使用できます。
input {
file {
path => ["C:\Users\ppurush\Desktop\test\*.log"]
start_position => "beginning"
codec => "json"
}
}
次のフィールドが表示されます。
"url" => {
"rawUrl" => "val7",
"path" => "val8",
"queryString" => {
"404;dfdgfdgfghfhjghhhhhhhhhhhhh" => ""
}
}
変数404;dfdgfdgfghfhjghhhhhhhhhhhhh
も同様です。それを確認してイベントを削除するには、次のようにします。
if [url][queryString][404;dfdgfdgfghfhjghhhhhhhhhhhhh] {
drop {}
}