fluentdで、%Y%m%d%H としたときに、%HがUTCの時刻で出力されるときの確認



fluentdで、ログを収集サーバに飛ばしてテストしていたんですが、pathに%Y%m%d%Hとしたにも関わらず、ファイル名が、2014061409(実際には日本時間で18時)と出力されていました。

cronやmessages等がおかしく、apacheのログは2014061418と出力されていたのでしばら悩んでいました。
このような場合の確認方法です。

環境

  • CentOS 6.5(vagrant boxイメージ)
  • fluentd 1.1.19

こんな警告がでていたのに見逃していたのが原因です。

-bash: warning: setlocale: LC_CTYPE: cannot change locale (ja_JP.utf8): No such file or directory
-bash: warning: setlocale: LC_COLLATE: cannot change locale (ja_JP.utf8): No such file or directory
-bash: warning: setlocale: LC_MESSAGES: cannot change locale (ja_JP.utf8): No such file or directory
-bash: warning: setlocale: LC_NUMERIC: cannot change locale (ja_JP.utf8): No such file or directory
-bash: warning: setlocale: LC_TIME: cannot change locale (ja_JP.utf8): No such file or directory

そのため、messagesログをみると-9時間された時刻で記録されていました。
fluentdはアクセスログ上に記録された日時で%Y%m%d%Hに当てはめるらしい
アクセスログのファイル日付かと思ってました。ls -l で見るとJST時間だったので、なぜ?と悩んでいたのも原因

というわけで、下記コマンドを実行して、localeを追加します。

localedef -f UTF-8 -i ja_JP ja_JP

サーバを再起動して、記録されている時刻がJSTになっていることを確認します。
これで、fluentdで出力されるファイル名もJSTで出力されるようになりました。
めでたし、めでたし

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次