前提・実現したいこと
Logstash で複数行のイベントを含む CSV を Elasticsearch に取り込み、複数行のデータは全行をそのカラムのデータとして扱いたいのですが、1行目しか取り込めません。
Multiline Codec プラグインをはじめて使うので、これが正しい動作なのかどうかも分かっておりません。
ご存知の方いらっしゃいましたらご教授お願いします。
発生している問題
複数行のデータは1行目しか取り込めませんでした。
設定ファイル、CSVファイル、実行結果
logstash.conf
input { file { mode => "read" path => ["/Users/myuser/work/elasticsearch/csv/log.csv"] sincedb_path => "/dev/null" start_position => "beginning" codec => multiline { pattern => "^\s" what => "previous" } } } filter { csv { columns => ["Date", "Level", "ErrorMessage"] } date { match => ["Date", "yyyy-MM-dd HH:mm:ss"] } } output { elasticsearch { hosts => ["localhost:9200"] index => "log" } stdout { codec => rubydebug } }
log.csv
2019-05-24 10:00:00,INFO,Success. 2019-05-24 11:00:00,ERROR,An error has occurred. Please wait a moment and try again.
実行結果
{ "Level" => "INFO", "ErrorMessage" => "Success.", "host" => "local", "@version" => "1", "Date" => "2019-05-24 10:00:00", "message" => "2019-05-24 10:00:00,INFO,Success.", "@timestamp" => 2019-05-24T01:00:00.000Z, "path" => "/Users/myuser/work/elasticsearch/csv/log.csv" } { "Level" => "ERROR", "ErrorMessage" => "An error has occurred", "host" => "local", "tags" => [ [0] "multiline" ], "@version" => "1", "Date" => "2019-05-24 11:00:00", "message" => "2019-05-24 11:00:00,ERROR,An error has occurred\n Please wait a moment\n and try again.", "@timestamp" => 2019-05-24T02:00:00.000Z, "path" => "/Users/myuser/work/elasticsearch/csv/log.csv" }
「multiline」タグが付いており、「ErrorMessage」に「An error has occurred.」は取り込まれているのですが、「Please wait a moment」「and try again.」が取り込まれていません。
試したこと
「Multiline codec plugin」のマニュアルを一通り読みましたが、それらしき設定を見つけられませんでした。
補足情報(FW/ツールのバージョンなど)
macOS 10.14.5
Elasticsearch 7.1.0
Logstash 7.1.0

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。