Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ

[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ

「新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ」
グリー株式会社 開発統括本部所属 データエンジニア 
山田 龍寛

※Developers Summit 2015 Autumnでの発表資料です
http://event.shoeisha.jp/devsumi/20151014/timetable

gree_tech

October 15, 2015
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. Copyright © GREE, Inc. All Rights Reserved. ⾃⼰紹介 • ⼭⽥

    ⿓寛 • グリー株式会社 開発本部 • 週末は野球か⾃転⾞か秋葉原 • 2013年新卒⼊社 • プロダクトが分析するためのログ を回収したり • 集計の⼿伝いをしたり • BIツールをつくったり • 気づいたらfluentdとは2年 の付き合い
  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.
  3. Copyright © GREE, Inc. All Rights Reserved. webサーバの設定変更が少ないかたちに • サーバ台数が多く再起動のコストが⾼い

    • プロダクト側がログを追加しやすく • データの保存先はtagを利⽤して決定 • アグリゲータで制御可能 webサーバ アグリゲーター 容易にログを増やせる ような設定にする 集計やtagの書き換えなど 複雑なことはこっちで
  4. 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を指定する
  5. Copyright © GREE, Inc. All Rights Reserved. プラグインをforkして改造しない • fluentdのバージョンアップに追従しづらくなる

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

    • 例2: 拡張 in_tail • 昔のfluentdの時から使ってる( fluentd-0.10.35 以前 ) • 問題点 • 公式のtailに追加された機能を取り⼊れるのが難しい • 内製のパーサが動かなくなった • 対応 • どうしようもなかった • 割りきって使っている • 運⽤でカバー • テストをたくさん追加した
  7. Copyright © GREE, Inc. All Rights Reserved. まとめ • fluentdの運⽤でこうした⽅が良いと思うこと

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