自分用備忘録です。
・S3upするときIAMロールにバケットの権限がたらなかった
こんなエラーでた
2015-11-17 07:12:20 +0000 [warn]: temporarily failed to flush the buffer. next_retry=2015-11-17 08:11:51 +0000 error_class="AWS::S3::Errors::Forbidden" error="AWS::S3::Errors::Forbidden" plugin_id="object:3f8cee0b5d8c"
現象としては、届いてはいるんだけどバッファに結構送られてない過去のファイルが存在してて、日付と同じディレクトリに過去の日付のログが届いてしまうという。
原因はIAMロールにGetObject(たぶん)の権限がついてなかったための模様。
(ソースを読んだ方からきいたら、置く前にファイルの存在を確認してるときにその権限がいる模様)
ちょっとその権限つける権限を持ってないアカウントだったのでわかんなかったりしました。
あと、過去ファイルが当日のディレクトリにきちゃうのは_%{index}
が不足してて置けなかったせいだった模様。
権限つけてもらってs3_object_key_format
に_%{index}
追加したところ回復しました。
・受信側にマッチするconfがかかれてなかった
まあこれはrole追加されて送信するクライアント側しか設定されてないまま起動しちゃうと受信するlogサーバ側で出るパターンが多いやつです。
2015-11-26 03:35:03 +0000 [warn]: no patterns matched tag="xxx"
解決するには合ったconfをサーバ側で準備するだけ。chefなのでattribute追加して撒くだけ。
(でも他のエラーを直さないとだめだったりした)
ただしchefと分離して他のツールつかってconf管理したらいいんじゃない説もあります。
・td-agent1だとmatchタグ内にincludeつかえなかった(td-agent2だと可能だった)
2015-11-25 01:38:48 +0000 [warn]: parameter 'include' in <match xxx.http.error.**>
type copy
include /etc/td-agent/extra/td-agent-el-tag4
<store>
type forest
subtype file_alternative
<template>
path /opt/data/logs/${tag_parts[3]}/xxx-http-error
buffer_path /opt/fluent_buf/__TAG__
flush_interval 1s
buffer_queue_limit 512
buffer_chunk_limit 10m
buffer_type file
</template>
</store>
</match> is not used.
こんなwarnで送り先を何度も書くのが嫌でincludeしたかったけどtd-agent1だとだめぽかったので、
手で冗長の同じconf置いてるところから戻してからchef的にtemplateのelsifを増やして対応するなどしました。
以上。
最近調べてみかけたURLを無差別にぺたっと。
http://dev.classmethod.jp/cloud/aws/aws-cfn-advent-calendar-2013-fluentd/
https://github.com/fluent/fluent-plugin-s3/issues/92
https://gist.github.com/sonots/c54882f73e3e747f4b20
http://f-retu.hatenablog.com/entry/2014/05/14/014546
http://og732.hatenadiary.com/entry/2014/05/06/212817
https://github.com/fluent/fluent-plugin-s3