Posted at

td-agent3(Fluentd v1.0)でS3に「LTSV形式のログ」を保存する。2018-03-16

More than 1 year has passed since last update.


内容

td-agent3(Fluentd v1.0)でS3にログを保存する では td-agent3Fluentd v1.0)で Apache のログを、 S3 に保存しました

今回は、「LTSV形式ログ」を保存する設定について記します


準備

td-agent3(Fluentd v1.0)でS3にログを保存する を一通り設定した状態にする


設定の例


LTSV形式のログについて

(例ということでかなりてきとーなものです)



  • /tmp/ltsv.log に出力される

  • ログのフォーマットは datetime:%Y-%m-%d %H:%M:%S<TAB>id:数値のID


    • 例: datetime:2018-03-05 07:48:33<TAB>id:697


    • $ printf "datetime:$(date "+%Y-%m-%d %H:%M:%S")\tid:$RANDOM\n" >> /tmp/ltsv.log で出力します




設定ファイル

参考: LTSV Parser Plugin


/etc/td-agent/td-agent.conf

# <source> の内容が本題

<source>
@type tail
path /tmp/ltsv.log
tag ltsv.log
pos_file /var/log/td-agent/ltsv-log.pos

<parse>
@type ltsv
</parse>
</source>

# <match> についての詳細は割愛
<match ltsv.log>
@type s3

aws_key_id YOUR_AWS_KEY_ID
aws_sec_key YOUR_AWS_SECRET_KEY
s3_bucket YOUR_S3_BUCKET_NAME
s3_region us-east-1
path logs/${tag}/%Y-%m-%d/
s3_object_key_format %{path}%{time_slice}_%{index}.%{file_extension}

# if you want to use ${tag} or %Y/%m/%d/ like syntax in path / s3_object_key_format,
# need to specify tag for ${tag} and time for %Y/%m/%d in <buffer> argument.

<buffer tag,time>
@type file
path /var/log/td-agent/s3
timekey 60
timekey_wait 60
chunk_limit_size 256m
</buffer>
</match>



動作確認

以上の設定例で td-agent を起動してログ(/var/log/td-agent/td-agent.log)を確認します。

特に問題がなさそうであれば

$ while true ; do printf "datetime:$(date "+%Y-%m-%d %H:%M:%S")\tid:$RANDOM\n" >> /tmp/ltsv.log && sleep 10; done

などで「LTSV形式のログ」を出力して、S3にログがたまっていくか確認します。


ログデータの確認

S3に以下のようなテキストのログがたまっていきました


YOUR_S3_BUCKET_NAME/ltsv.log/2018-03-16/201803160439_0.gz

2018-03-16T04:39:32+00:00   ltsv.log    {"datetime":"2018-03-16 04:39:32","id":"8204"}

2018-03-16T04:39:42+00:00 ltsv.log {"datetime":"2018-03-16 04:39:42","id":"13831"}
2018-03-16T04:39:52+00:00 ltsv.log {"datetime":"2018-03-16 04:39:52","id":"14953"}


まとめ


  • 「LTSV形式のログ」を parse できました


  • td-agent3Fluentd v1.0)で S3 に「LTSV形式のログ」を保存できました