(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Logstash】初めてのcsvファイル用fileter作成

スポンサーリンク

Logstashでcsvファイルを扱う

ElasticStackのツールであるLogstashにてCSVファイルは簡単に取り込むことができます。
その手順を備忘録として記載します。

事前準備

test用のcsvファイルを用意しました。

# cat /var/log/test.csv
Ken,23,O
Yu,18,X
Emi,20,O

フィルターの動作確認

# cat /etc/logstash/conf.d/testcsv.conf
input {
 stdin { }
}
filter {
 csv {
  columns => ["Name","Age","Over20"]
 }
}
output {
 stdout {}
}

この設定ファイルは、
標準入力で受け取ったCSVファイル

"Name","Age","Over20"

上記の構造として認識
標準出力に返すための設定ファイルです。

動作結果

実際に動かしてみます。

# cat /var/log/test.csv | /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/testcsv.conf
....
....
{
 "@timestamp" => XXXX-XX-....
 "Name" => "Ken",
 "@version" => "1",
 "Over20" => "O",
 "Age" => "23",
 "message" => "Ken,23,O",
 "host" => "xxxxxx"
}
{
...

ちゃんと値が格納されていることが分かります。

補足として、Name、Age、Over20の全てが文字列として格納されています。

Ageに関しては数値として扱いたい場合、明示的に指定してあげる必要があります。

...
csv {
  columns => ["Name","Age","Over20"]
  convert => {
   "Age" => "integer"
   }
 }
...

この設定ファイルで再度Logstashに読み込ませると

...
 "Age" => 20
...

となりダブルクオテーションが外れます。
こうすれば、Elasticsearch経由でKibanaで可視化する際に数値として認識されて便利です。

今回は整数値ですが、少数点を含む場合はfloatと変換してください。

以上、LogstashによるCSVファイルの取り込みについてでした。