2016/02/14
久しぶりですが、自分の備忘のためにも記載します。
ほんと、td-agent(fluentd)って、よく仕様変更します。
設定の度に、何かにつまづく気がします。
さて、今回は ${hostname} が使えなくて困った件です。
AWS の AutoScaling なんかで、td-agent(fluentd)を使うんですが、半年くらい前まで上手く設定できていたのに、今回設定したら上手くいきません。
何が上手くいかないかというと「S3に転送したログファイルのファイル名をホスト名付きにしたいんだよねー」が上手くいかない。
今までは、ホスト名を入れるのに ${hostname} と入れればよかったんです。
以下みたいに。
( time_slice_format パラメータに $hostname を入れること自体がそもそもどうか?という話はさておき)
time_slice_format ${hostname}-syslog.messages-%H
今回も、そのように書いて設定したら、以下のようになってしまいました。
${hostname} がファイル名になっとる…。
あれこれ調べた結果、td-agent(fluentd)のとあるバージョンから変わった気配。
ということで正解は以下。
time_slice_format “#{Socket.gethostname}-syslog.messages-%H”
${hostname} を “#{Socket.gethostname}” にすると解決。
ruby の書式らしいです。
td-agent(fluentd)って、ほんと、ちょくちょく仕様が変わって困る。
前に困ったのは、以前のバージョンは、td-agent.conf.tpl を編集すると、td-agent 起動時に、td-agent.conf.tpl が td-agent.conf に上書きされる仕様だったものが、どこかから、その仕組みが変わって td-agent.conf を直接編集する形になった、というもの。
あとは、プラグインが変わったのか、ログフォーマットが変わったりとか。
手順を作成しても、毎回、その通りにいかないのだよなぁ…。
あ、それと、今回調べてわかったのが、td-agent と fluentd の違い。
これ、毎回、謎だったんですが、td-agent というのが、fluentd を内包した安定的なものらしいですね。
なので、基本的には、td-agent をインストールする、ということでよいらしい。
それと、td-agent をインストールした際に、内包されている fluentd のバージョンを調べる方法もわかったので記載しておきます。
# td-agent-gem list | grep fluentd
fluentd (1.12.3)
半日かかってしまったよ…。
どなたかのお役に立てば幸いです。