はじめに
- fluentd で format の apache2 を使うと user とか referer が null になってしまったので調べてみた
- そもそも、この挙動が正しい場合にはすいません!
調べた環境
- AWS(ubuntu/images/ebs/ubuntu-precise-12.04-amd64-server-20130411.1 (ami-fe6ceeff))
- td-agent 0.10.38
- Apache/2.2.22 (Ubuntu)
- access.log (combined)
メモ
現象
td-agent.conf で format を apache2 を指定すると以下のように user や referer が null になってしまう。access.log の中で値が - となってしまっている部分が概ね null となってしまっているようだ。
書き出し先の type が text や mongodb だったりするとプラグインがよろしくやってくれていたけど、プラグインによっては(dynamodb) は Warning となってしまう。
parse.rb
fluentd でログ解析を行なっていると思われるのが parse.rb。format タイプの apache2 は以下の部分が該当しているっぽい。
切り分け
- ログの中で
userやrefererの値が-の時に発生する -以外の値が入っている場合にはnullにはならないformatタイプがapacheの場合にはこの現象は発生しない
とりあえずの回避策
parse.rb の修正
以下のように parse.rb を修正してみた。
結果を見てみる
user や referer に値がある場合
user や referer に値が無い場合
null にはならず、- がそのまま値として入っている。
ということで...
- 一般的にはあまり問題にはなっていないのかなって...
- issue で質問してみたい気がするけど、もう少し詰めてからにしようと思う