質問: ### 問題 nginxのアクセスログをFluentd経由でS3に保存したいのですが、AWSマネジメントコンソールから確認したところ、S3にログが保存されていません。 Fluentdに精通しておられる方にお知恵をお貸りできれば幸いです。 ### 確認できていること ・設定ファイルでs3_bucketに存在しないバケットを指定した場合、指定のバケットがS3に作成されるので、S3との接続は問題ないと思います。 ・bufferフォルダが常に空です。原因はわかりません。 ・Fluentdのエラーログを確認したいのですが/var/log/td-agentにtd-agent.logがありません。 ・matchのpathに指定したlogsフォルダはバケット内に存在しないので、バケットと同様に自動で作成される認識なのですが、バケット内にlogsフォルダが作成されません。 ### 設定ファイル fluentd.conf ``` @type tail path /var/log/nginx/access.log tag nginx pos_file /var/log/nginx/access.log.pos @type nginx @type s3 aws_key_id XXXX aws_sec_key XXXX s3_bucket XXXX s3_region ap-northeast-1 path logs/ @type file path /var/log/td-agent/s3 timekey 60 timekey_wait 0 chunk_limit_size 256m time_slice_format %Y%m%dT%H ```
回答: 今回の問題に関係あるなしにざっと気になった点を列挙します。 * td-agentは正しく起動していますか? * `/var/log/td-agent/`以下にtd-agentの実行ユーザの書き込み権限がありますか? * td-agentの実行ユーザにはnginxのログの読み取り権限がありますか? * 使用しているIAMユーザに必要な権限が割り当てられていますか? 余談ですが、EC2で動かしているのであればIAMアクセスキーを使うのはやめてIAMロールで権限を与えることが推奨されます。 ログが出てすらいないとのことなので、まずそもそもtd-agentを起動したかどうかが最も気になるところです。 起動しようとして失敗したとしても少なくともログは出るはずですので...。