fluentdのドキュメントに以下のような記載がありました。

Configuration File – (3) Include Directive

# absolute path
include /path/to/config.conf

# if using a relative path, the directive will use
# the dirname of this config file to expand the path
include extra.conf

# glob match pattern
include config.d/*.conf

# http
include http://example.com/fluent.conf

最後の行より、HTTPから設定ファイルを取得してインクルードできるようです。

そこで試してみました。
■common.conf


type tail
format apache
pos_file /var/log/td-agent/httpd-access.log.pos
path /var/log/httpd/access_log
tag apache.access



type s3

aws_key_id xxxxxxxxxxxxxxxxxxx
aws_sec_key yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
s3_bucket hoge-bucket
path logs/
buffer_path /var/log/fluent/s3
flush_interval 10s

これをS3にアップロードしてWEBホスティングしてみます。

そして、EC2では以下のように設定します。

■/etc/td-agent/td-agent.conf

include http://s3-ap-northeast-1.amazonaws.com/hoge-bucket/conf/fluentd/common.conf
# /etc/init.d/td-agent start

httpdのコンテンツにアクセスしてしばらく経つと

無事出力されていました!

これの何がいいかというと、

  • 各サーバーに共通の設定ファイルなどを外部化しておき、一括変更をかけられる (再起動は必要ですが、定期的に再起動をかけるようにしておくという手もあります)
  • いっそ全設定を外出しして完全に外部で管理する

などが可能になります。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら