AWS
fluentd
S3
td-agent

Proxyサーバ経由でfluentdからS3にログを保存する

はじめに

最近AWSを触っていて色々検証中。
今回Proxyサーバ経由でfluentdからS3にログを転送してみたのでメモとして残しておきます。

環境

$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

$ docker -v
$ td-agent --version
td-agent 0.12.40

準備

下記が完了していることが前提です。
1.S3バケットの準備
2.td-agentとoutput_s3のプラグインインストール
3.forwarder側の設定

aggregator側の設定

$ sudo vi /etc/td-agent/td-agent.conf
<match **.access_log>
type copy
  <store>
    type s3
    aws_key_id XXXXXXXXXX
    aws_sec_key XXXXXXXXXX
    s3_bucket XXXXXXXXXX
    s3_region ap-northeast-1
    path td-logs/
    flush_interval 60s
    time_slice_format %Y%m%d%H
    time_slice_wait 10m
    buffer_path /var/log/td-agent/s3
    buffer_chunk_limit 128m
    buffer_queue_limit 256m
    retry_limit 10
    retry_wait 5s
    proxy_uri http://<<proxy-server>>:<<port>>
  </store>
</match>

$ sudo service td-agent configtest
td-agent                                                   [  OK  ]
$ sudo service td-agent reload
Reloading td-agent configuration (via systemctl):          [  OK  ]

これでProxyサーバ経由でもS3にログを無事に転送出来ました。

proxy_uriにProxyサーバのIPとポートを指定するだけでした。

EC2内であればIAMポリシーで許可するかと思いますが、
EC2外の場合はaws_key_idとaws_sec_keyの取り扱いは注意ですね。

細かいパラメーターは下記や公式ドキュメントを参考にしました。
https://qiita.com/munazo/items/d665e2c4e86f42d06cf7

無事S3に保管出来ましたが、
保管するだけならaws cliでバッチで転送しても良いんだろうな~と思いました。