Slide 1

Slide 1 text

Copyright © GREE, Inc. All Rights Reserved. 新卒⼊社エンジニアが 2年間fluentdを運⽤して学んだ事いろいろ グリー株式会社 開発本部 ⼭⽥ ⿓寛 @ Developers Summit 2015 Autum

Slide 2

Slide 2 text

Copyright © GREE, Inc. All Rights Reserved. ⾃⼰紹介 • ⼭⽥ ⿓寛 • グリー株式会社 開発本部 • 週末は野球か⾃転⾞か秋葉原 • 2013年新卒⼊社 • プロダクトが分析するためのログ を回収したり • 集計の⼿伝いをしたり • BIツールをつくったり • 気づいたらfluentdとは2年 の付き合い

Slide 3

Slide 3 text

Copyright © GREE, Inc. All Rights Reserved. グリーでの fluentd の利⽤⽅法 • サービスごとに数台のアグリゲーターを⽤意 • TreasureData や 内製のHadoopクラスタにデー タ転送 webサーバ アグリゲーター Copyright © 2014 The Apache Software Foundation. Apache Hadoop, Hadoop, Apache, the Apache feather logo, and the Apache Hadoop project logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and other countries.

Slide 4

Slide 4 text

Copyright © GREE, Inc. All Rights Reserved. fluentdの運⽤で こうした⽅がよいと思うこと

Slide 5

Slide 5 text

Copyright © GREE, Inc. All Rights Reserved. webサーバのfluentdの設定変 更が少ないかたちに

Slide 6

Slide 6 text

Copyright © GREE, Inc. All Rights Reserved. webサーバの設定変更が少ないかたちに • サーバ台数が多く再起動のコストが⾼い • プロダクト側がログを追加しやすく • データの保存先はtagを利⽤して決定 • アグリゲータで制御可能 webサーバ アグリゲーター 容易にログを増やせる ような設定にする 集計やtagの書き換えなど 複雑なことはこっちで

Slide 7

Slide 7 text

Copyright © GREE, Inc. All Rights Reserved. ログを追加しやすい設定例 • ログは基本的にJSONで • カラムの追加が容易 • アプリケーション側でtagをつけるようにする type unix 例1 type tail format json path /path/to/log.json tag log type rewrite_tag_filter rewriterule1 _tag ^(.+)$ db.$1 例2 tagとrecordを 自由に渡せる レコード内でテーブルに相 当するtagを指定する

Slide 8

Slide 8 text

Copyright © GREE, Inc. All Rights Reserved. プラグインをforkして改造しない

Slide 9

Slide 9 text

Copyright © GREE, Inc. All Rights Reserved. プラグインをforkして改造しない • fluentdのバージョンアップに追従しづらくなる • 例1: 拡張 out_webhdfs • 問題点 • fluentdのバージョンアップ時にデータが壊れてしまった • 本家のアップデートをマージするのが⼤変だった • 対応 • ⼀部のメソッドに変更点をまとめることができた • WebHDFSOutput を継承するようにした

Slide 10

Slide 10 text

Copyright © GREE, Inc. All Rights Reserved. プラグインをforkして改造しない • fluentdのバージョンアップに追従しづらくなる • 例2: 拡張 in_tail • 昔のfluentdの時から使ってる( fluentd-0.10.35 以前 ) • 問題点 • 公式のtailに追加された機能を取り⼊れるのが難しい • 内製のパーサが動かなくなった • 対応 • どうしようもなかった • 割りきって使っている • 運⽤でカバー • テストをたくさん追加した

Slide 11

Slide 11 text

Copyright © GREE, Inc. All Rights Reserved. プラグインで何でもできるからといって やり過ぎてしまうと後々つらい...

Slide 12

Slide 12 text

Copyright © GREE, Inc. All Rights Reserved. 公開されているプラグインを使う 機能追加は本家にコントリビュート シンプルな構成に留める

Slide 13

Slide 13 text

Copyright © GREE, Inc. All Rights Reserved. ドキュメントを書く(⾃戒)

Slide 14

Slide 14 text

Copyright © GREE, Inc. All Rights Reserved. まとめ • fluentdの運⽤でこうした⽅が良いと思うこと • webサーバのfluentdの設定変更が少ない形にする • プラグインをforkして改造しない • ドキュメントを書く(⾃戒) • なるべく公開されているプラグインを使う • 追加機能は本家にコントリビュート • シンプルに使う • 困ったら#fluentdをつけてtwitterでつぶやくと吉 : )