サイトアイコン puti se blog

fluentdの設定ファイル内に環境変数を使用したい。AWSオートスケール対応

AWSオートスケールのスケールイン時にサーバー内のログの回収が問題になったりします。
そんな時に、fluentdを導入していると便利ですよね。
気にせず、オートスケールでスケールインが可能になります。

ただ、サーバーが乱列するのでfluentdで収集したログも分かりやすくしたい。
そんな目的で、fluentd設定ファイル内で環境変数が利用できないかと調べました。

fluentd設定で実現したいこと

エージェント側のfluentdの設定ファイル内で、タグに環境変数を使用しコンピュータ名を付けたい。

※ オートスケールでサーバー毎にコンピュータ名が変更するような設定をする(Windowsの場合は、EC2configの設定が必要)

環境・前提条件

AWS上のEC2で、オートスケールを利用しfluentdエージェントとなる今回のサーバーは

  • Windows Server 2012 R2
  • fluentd-0.12.15.gem

    になります。
    こちらに環境変数を利用して、fluentdの設定ファイルを設定したいです。

    結論、fluent.confに環境変数設定できます!標準機能で

    特にfluentdのプラグイン等導入しなくても、fluentdの標準機能で設定ファイル内に環境変数を設定することが可能でした。
    以下のように設定します(fluent.confの例)

    <source>
      @type tail
      format none
      pos_file C:\fluentd\pos_file\u_ex.pos
      path C:\inetpub\logs\LogFiles\W3SVC1\u_ex%y%m%d.log
      tag "iis.u_ex.#{ENV['COMPUTERNAME']}"
    </source>

    #{ENV['COMPUTERNAME']}」と指定することで、Windows環境変数の「%COMPUTERNAME%」をfluentdのタグに指定出来ました。

    ちなみに、

    fluentdの設定ファイル内に日時がついたログファイル名(日時ファイル)を指定する方法。IISのアクセスログファイル

    上記のサンプルに既にありますが

    <source>
      @type tail
      format none
      pos_file C:\fluentd\pos_file\u_ex.pos
      path C:\inetpub\logs\LogFiles\W3SVC1\u_ex%y%m%d.log
      tag "iis.u_ex.#{ENV['COMPUTERNAME']}"
    </source>

    「%y%m%d」でIISのアクセスログの日時ファイル指定できます。

    IISのアクセスログは以下のようにファイル名に日時を含んでローテーションされていますよね。「u_exYYMMDD.log」
    そんな日時を含んだログファイルも、fluentdでは指定がtail監視対象として出来ます

  • モバイルバージョンを終了