[デブサミ秋2015]...
TRANSCRIPT
Copyright © GREE, Inc. All Rights Reserved.
新卒入社エンジニアが2年間 fluentd を運用して学んだ事いろいろ
グリー株式会社 開発本部山田 龍寛
@ Developers Summit 2015 Autum
Copyright © GREE, Inc. All Rights Reserved.
自己紹介
• 山田 龍寛• グリー株式会社 開発本部• 週末は野球か自転車か秋葉原
• 2013 年新卒入社• プロダクトが分析するためのログ
を回収したり• 集計の手伝いをしたり• BI ツールをつくったり
• 気づいたら fluentd とは 2年の付き合い
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.
Copyright © GREE, Inc. All Rights Reserved.
fluentd の運用でこうした方がよいと思うこと
Copyright © GREE, Inc. All Rights Reserved.
web サーバの fluentd の設定変更が少ないかたちに
Copyright © GREE, Inc. All Rights Reserved.
web サーバの設定変更が少ないかたちに
• サーバ台数が多く再起動のコストが高い• プロダクト側がログを追加しやすく• データの保存先は tag を利用して決定
• アグリゲータで制御可能
web サーバ アグリゲーター
容易にログを増やせるような設定にする 集計や tag の書き換えなど複雑なことはこっちで
Copyright © GREE, Inc. All Rights Reserved.
ログを追加しやすい設定例
• ログは基本的に JSON で• カラムの追加が容易
• アプリケーション側で tag をつけるようにする
<source> type unix</source>
例1<source> type tail format json path /path/to/log.json tag log</source><match log> type rewrite_tag_filter rewriterule1 _tag ^(.+)$ db.$1</match>
例2
tag と recordを
自由に渡せる
レコード内でテーブルに相当する tag を指定する
Copyright © GREE, Inc. All Rights Reserved.
プラグインを fork して改造しない
Copyright © GREE, Inc. All Rights Reserved.
プラグインを fork して改造しない
• fluentd のバージョンアップに追従しづらくなる
• 例 1: 拡張 out_webhdfs• 問題点
• fluentd のバージョンアップ時にデータが壊れてしまった• 本家のアップデートをマージするのが大変だった
• 対応• 一部のメソッドに変更点をまとめることができた• WebHDFSOutput を継承するようにした
Copyright © GREE, Inc. All Rights Reserved.
プラグインを fork して改造しない
• fluentd のバージョンアップに追従しづらくなる
• 例 2: 拡張 in_tail• 昔の fluentd の時から使ってる ( fluentd-0.10.35 以前 )• 問題点
• 公式の tail に追加された機能を取り入れるのが難しい• 内製のパーサが動かなくなった
• 対応• どうしようもなかった• 割りきって使っている• 運用でカバー• テストをたくさん追加した
Copyright © GREE, Inc. All Rights Reserved.
プラグインで何でもできるからといってやり過ぎてしまうと後々つらい ...
Copyright © GREE, Inc. All Rights Reserved.
公開されているプラグインを使う機能追加は本家にコントリビュート
シンプルな構成に留める
Copyright © GREE, Inc. All Rights Reserved.
ドキュメントを書く ( 自戒 )
Copyright © GREE, Inc. All Rights Reserved.
まとめ
• fluentd の運用でこうした方が良いと思うこと• web サーバの fluentd の設定変更が少ない形にする• プラグインを fork して改造しない• ドキュメントを書く ( 自戒 )
• なるべく公開されているプラグインを使う• 追加機能は本家にコントリビュート• シンプルに使う
• 困ったら #fluentd をつけて twitter でつぶやくと吉 : )