2012年 1月 22日 はてなブックマーク -
タグ: #MySQL #fluentd #ruby

MySQLのslow query logのためのfluentdのinput pluginを作った

Fluent input plugin for MySQL slow query log format. — Gist

本家のドキュメントにin_tailプラグインを拡張してオリジナルのプラグインを作る方法が載っていたので、それを応用してMySQLのslow query logを送るプラグインを作った。

slow query logは個々のレコードが複数行にまたがるため、一行単位での処理しかできないin_tailは使えなかった。
余談:fluentd自体について

筋がとても良いなーと使っていて本当に思う。

単にログを集めるだけのソフトウェアなんだけど、コミュニティも活発だし、やっぱりRubyで書かれているというのが大きいのかな。
余談2:to_msgpackがないと怒られるエラーに苦しんだ

in_tailのparse_lineの返り値が time と record の配列な訳だけど、timeはTImeインスタンスじゃなく、Integerじゃないといけないという内部仕様があって、それに気が付かずにTimeインスタンスを返して to_msgpack なんていうメソッドはありません、とfluentの内部の方でエラーが発生して怒られた。

スレッドが走っていて、僕はあまりマルチスレッド環境でのデバッグ経験が無かったので、一体どこでバグが発生しているのか突き止めるのに結構苦労した。結局、to_iをつけるだけで解決したのだけど。

return する前にto_i を忘れないようにしましょう。

MySQLのslow query logのためのfluentdのinput pluginを作った - SELECT * FROM life;

1ヶ月前 | | 2012年 1月 22日 | このエントリーを含むはてなブックマーク