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で出力されるようになりました。
めでたし、めでたし