はじめに
- 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 で質問してみたい気がするけど、もう少し詰めてからにしようと思う