個人的なメモ。
大層な話じゃないです。
あとfluentdをdissりたいわけでもないです。
使ってみてすごい使いやすかった。すばらしい。
ただちょっとだけ気をつけとかないと、という話。
遭遇した問題
- 前提
- fluentd-0.10.11(td-agent)
- アクセスログ(データ不正的な感じ)を複数行まとめて投入してtailで読み込み
- アクセスログの2行目以降にUTF-8なマルチバイトが含まれる
- アクセスログをparseしてfileに書き出したい
- 事象
- 複数行投入したうち、マルチバイトを含む行以降がfileに出力されず
- ログファイルに元データが出力されず。ログには
unexpected error error="\"\\xEF\" from ASCII-8BIT to UTF-8"
が出力
どういうこと?
まとめて投入した一連の途中で出力処理がエラーになっていて、以降の処理(=マルチバイトを含む行の次の行以降を出力する処理)が実行されない。
マルチバイトを含む行はエラーとして別の(システム側の)ログファイルにデータをまるっと出力しつつ、次の行以降の出力は継続してほしかった。
んで?
解析データの収集ツールとして使う分にはいいと思います。すごい使いやすいし、解析しやすい。使ってみて感動した。
ただし、現状ではログが消失する可能性があるので、ログ収集という意味合いでは使えないのです。
想定外のログ出力が消失してしまうので、不正アクセスみたいな問題があった時にトレースできなくなっちゃう。
syslogの代替に、って考えてるひとはご注意を(いないかな?)。