AWSオートスケールのスケールイン時にサーバー内のログの回収が問題になったりします。
そんな時に、fluentdを導入していると便利ですよね。
気にせず、オートスケールでスケールインが可能になります。
ただ、サーバーが乱列するのでfluentdで収集したログも分かりやすくしたい。
そんな目的で、fluentd設定ファイル内で環境変数が利用できないかと調べました。
レジュメ
fluentd設定で実現したいこと
エージェント側のfluentdの設定ファイル内で、タグに環境変数を使用しコンピュータ名を付けたい。
※ オートスケールでサーバー毎にコンピュータ名が変更するような設定をする(Windowsの場合は、EC2configの設定が必要)
環境・前提条件
AWS上のEC2で、オートスケールを利用しfluentdエージェントとなる今回のサーバーは
になります。
こちらに環境変数を利用して、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監視対象として出来ます