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

ITのこととか趣味のカメラのことなどを赴くままに書いていきます。カピバラの可愛さこそ至高。

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

はじめに

前回の記事でFluentdを使用してS3にアップロードしましたが、今回はそのアップロード先をタグ名によって動的に変更してみます。

tag名をパスに使用する方法は以下の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の時間を指定する必要があります。

以上のことから、bufferにtagを引数で付ければよいとわかります。
 
 

実施内容

  • conf設定
  • TEST実施

 
 

実施手順

conf設定

前回使用したconfをベースに設定します。
Pathの部分だけ修正した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/${tag[0]}/${tag[1]}/${tag[2]}

  <buffer tag>
    @type file
    path C:\var\log\td-agent\s3
    timekey 3m  # 5 min
    timekey_wait 10m
    chunk_limit_size 256m
  </buffer>

  time_slice_format %Y%m%d%H
</match>

 
 

TEST実施

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

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

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

所感

fluentdのtagで設定した名前は、bufferプラグインにtagを指定することで、配列から取得するように使用できることがわかりました。