カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

FluentdでS3パスを動的に変更してアップロードする(日付)

はじめに

前回の記事でFluentdでアップロードする際にS3のパスをタグで動的に変更してアップロードする方法を検証しました。
今度は日付を使って動的に変更する方法を検証します。

前回
capybara-engineer.hatenablog.com

日付をパスに使用する方法は以下のURLのExample Configuration部分に記載されています。
s3 - Fluentd

  # 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.

Google翻訳

  #パス/ s3_object_key_formatで$ {tag}または%Y /%m /%d /のような構文を使用する場合、
  #<buffer>引数で$ {tag}のタグと%Y /%m /%dの時間を指定する必要があります。

 
 

実施内容

  • conf設定
  • TEST実施

 
 

実施手順

conf設定

前回使用したconfをベースに設定します。
日付を設定する記載を追加しました。

<source>
  @type tail
  path C:\Apache24\logs\access.log
  pos_file C:\var\log\td-agent\apache24.access_log.pos
  <parse>
    @type apache2
  </parse>
  tag s3.apache.access
</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]}.%{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 10m
    chunk_limit_size 256m

    compress gzip
  </buffer>
</match>

 
 

TEST実施

Td-agentプロンプトを立ち上げて、プロセスを実行するコマンドを叩きます。
f:id:live-your-life-dd18:20200128201703p:plain

ログを出力するため、apacheのローカルサーバへpingを実行します。
f:id:live-your-life-dd18:20200128200328p:plain

S3に日付のフォルダが作成され、その配下にファイルがアップロードされていることを確認しました。
f:id:live-your-life-dd18:20200128213734p:plain
 
 

所感

Fluentdで取得した日付の情報を使用して、パスを設定することができました。
今更ですが、S3上のフォルダもFluentdが作成してくれるのは楽ですね。