はじめに
前回までの記事ではFluentdのソースにApacheのアクセスログを指定していましたが、今回はCSVファイルを指定してS3にアップロードしてみます。
CSVデータは適当にWebで拾ってきたデータを使用します。
https://www.kaggle.com/webirlab/iris-data/data
実施内容
- conf設定
- TEST実施
実施手順
conf設定
今回も前回使用したconfをベースに、それを修正する形で設定します。
<source>
@type tail
path C:\data\test-data.csv
pos_file C:\var\log\td-agent\test-data.csv.pos
read_from_head true
<parse>
@type csv
keys sepal_length,sepal_width,petal_length,petal_width,class,timestamp
types sepal_length:float,sepal_width:float,petal_length:float,petal_width:float,timestamp:time
</parse>
tag s3.data.csv
</source>
<match s3.*.*>
@type s3
<assume_role_credentials>
role_arn arn:aws:iam::************:role/test-bation
role_session_name test-bation
</assume_role_credentials>
s3_bucket test-tmp-20200128
s3_region ap-northeast-1
path logs
s3_object_key_format %{path}/%{time_slice}/${tag[1]}.json.%{file_extension}
time_slice_format year=%Y/month=%m/day=%d
overwrite true
<buffer tag,time>
@type file
path C:\var\log\td-agent\s3
timekey 3m # 3 min
timekey_wait 5m
chunk_limit_size 5g
compress gzip
</buffer>
<format>
@type json
</format>
</match>CSVファイルを使用する上で特筆して記載するのは以下のパラメータについてです。
- read_from_head
このパラメータを設定せずに実行したところ、ファイルが中々S3にアップロードされず困りました。
原因を探したところ以下の記事が見つかりました。
obel.hatenablog.jp
どうやらこれを設定していないと対象ファイルの末尾から読み始めるみたいで、設定することで対象ファイルの先頭から読み込んでくれるそうです。
ただし、posファイルを使用するように設定していないと毎回先頭から読んでしまうので、そこは注意が必要です。
TEST実施
Td-agentプロンプトを立ち上げて、プロセスを実行するコマンドを叩きます。

S3に日付のフォルダが作成され、その配下にファイルがアップロードされていることを確認しました。

S3 Selectでファイルの中身も確認できました。

所感
read_from_headのパラメータが必要なことに気付くのに時間が少しかかりました。
まだFluentdの動きについて理解しきれていないので、徐々に試しながら理解していこうと思います。