ここには、ruby
フィルタを使用した例があります。 説明のために、私は標準入力に送るメッセージは、単に形式で日付で構成されているdd/MM/yyyy
input {
stdin {}
}
filter {
date {
match => ["message", "dd/MM/yyyy"]
}
ruby {
code => "
if event['@timestamp'] > Time.now
event.cancel
end
"
}
}
output {
stdout {
codec => rubydebug
}
}
ですから、上記の設定でlogstash開始した場合、次のような出力が得られます。
10/08/2016 <--- today is accepted
{
"message" => "10/08/2016",
"@version" => "1",
"@timestamp" => "2016-08-09T22:00:00.000Z",
"host" => "iMac-de-Consulthys.local"
}
11/08/2016 <--- tomorrow is dropped
10/09/2016 <--- a date in a month from now is dropped
09/07/2016 <--- a date a month ago is accepted
{
"message" => "09/07/2016",
"@version" => "1",
"@timestamp" => "2016-07-08T22:00:00.000Z",
"host" => "iMac-de-Consulthys.local"
}
出典
2016-08-10 03:44:57
Val
これがlogstashを経由している場合、elasticsearchの出力を入力して削除する前に、それらのイベントを検出できます。 – Val
私はこれをやろうとしましたが、Logstash内で日付比較をすることはできません –
'ruby'フィルタを使って実行できます – Val