私はdocumentationを誤解しているかもしれませんが、私は(例えば)木場で検索できるフィールドを私に与える予定ですか?event_set(logstash ruby)は私にフィールドを与えませんか?
私はまた、thisが自分の問題(?)を記述するのに最も近いと思ういくつかの投稿を見てきました。私はこの記事で@magnusbaeckが提案したような正確な構文を試しましたが、このように定義された新しいフィールドを得ることはできませんでした。
期待通りにevent_set
が動作しないようで、バージョン5.0で導入された構文でこれを行う方法がわかりません。
私はTimeSpentMinutesとTimeSpentSecondsという名前の私のログファイルから2つのフィールドが、完全に理解し、私はこれについていくつかの記事がある知っているが、私はv.5.0で後の変化を見つけることができましたことを非常に多くありません。
とにかく、私のログは、この(私は簡単にするためにビットを編集した)のようなものになります。
1012 2017-10-27 05:03:24 [ 2:31] some message blablabla
を私は、秒にTimeSpentMinutesを変換しようとすると、次を実行して、中valuleにこれらの秒を追加しますTimeSpentSecondsは、その後、TimeSpentと呼ばれる新しいフィールドにそれらを置く:このことから
filter {
grok {
match => {
"message" => ["^%{NUMBER:LogLineID} %{TIMESTAMP_ISO8601:LogLineTime} \[%{SPACE}%{INT:TimeSpentMinutes}\:%{INT:TimeSpentSeconds}\] %{GREEDYDATA:LogText}$"]
}
}
# Merge related minutes and seconds to one single value in seconds
if [TimeSpentMinutes][TimeSpentMinutes] {
ruby {
code => 'event_set("TimeSpent", event_get("TimeSpentMinutes").to_f*60 + event_get("TimeSpentSeconds").to_f)'
}
mutate {
remove_field => ['TimeSpentMinutes', 'TimeSpentSeconds']
}
}
}
私が取得:
LogLineID = 1012
LogLineTime = 2017-10-27 05:03:24
TimeSpentMinutes = 2
TimeSpentSeconds = 31
LogText = some message blablabla
これまでのところとても良いですが、ルビーフィルターのようには見えません。少なくとも、私は期待しているフィールドTimeSpent
を手に入れません。
add_field
をmutateフィルターまたはrubyフィルターに追加する必要がありますか?それとも私が誤解したことがありますか?私はエラーメッセージが表示されないので、少なくとも構文は多かれ少なかれだと思われますが、オフまたは欠落しているものがなければなりません。
あなたのコードを再読み込みすると、どちらかの条件がわかりません...達成しようとしているものはわかりませんが[これ](https://stackoverflow.com/) question/42341778/logstash-if-statement-with-regex-example)を使用すると、フィールド内の整数 – Phonolog