SlideShare a Scribd company logo
ソーシャルゲームログ解析の
   MongoDB活用事例

∼gumiさん、MongoDB始めました∼




          1
アジェンダ

1. 自己紹介

2. ログ解析に至った経緯

3. 現在のMongoDB活用状況

4. MongoDBを使ってみて




                   2
自己紹介
名前:本間 知教(ほんま とものり)
Twitter:@CkReal
gumi歴1ヶ月半
  前職は国内某ITコンサルティング会社


入社前の想定                    現実
             MySQL             fluentd
             Python            MongoDB
             Django            Hadoop




                      3
ログ解析に至った経緯




    4
これまでのgumi
   ユーザの行動詳細が見えない
     ユーザがどの段階で、ゲームをやめたのか?

     何故、あのイベントが好まれたのか?



          ゲーム            開発



ゲームユーザー                       ゲーム開発者



                   ?5
これまでのgumi
ゲームごとの各サーバに蓄積されているログ
  アクセスログとアクションログが、各サーバに散在

  サーバ障害発生時、各ログはロストorz


APサーバ          APサーバ    NFSサーバ
アクセスログ   ・・・   アクセスログ   アクションログ




          各サーバごとに調査
                                  ゲーム開発者

                   6
ログ解析システムの対象者
  社内のあらゆる視点で必要な指標を提供する

 カスタマーサポート     ゲーム開発者        経営陣

  ユーザごとの     ユーザが各イベントで   どのゲームに経営資源を
詳細な行動結果の把握   楽しめているかを把握   投入すべきかの判断材料




ミクロ                             マクロ
                 7
ログ解析システムの構想
  解析用途を分け、2経路からログの解析を行う。
                ログ解析システム          リアルタイム転送

                                  バッチ転送(第2回)

           収集              解析
          fluentd

                   選別




          ユーザに必要なアプローチを行う

ゲームユーザー                         ゲーム関係者

                   8
現在のMongoDB活用状況




      9
MongoDB採用の経緯
解析に必要なログを突っ込めるストレージDB
 挿入・検索速度>信頼性

 データ設計が柔軟に行えるDB

豊富な日本語資料
 国内でも増えつつある構築事例

 MongoDB JPの方々に感謝(次回は11月15日開催)

  最近、@doryokujinさんのアイコンを見ると、拝みたくなります。




                10
現在のシステム構成
        まずはアクセスログのリアルタイム転送を構築
           1ゲームのアクセスログだけで、約1,000万件/日
     APAP
       AP
     APサーバ         ログ収集サーバ          ログ解析DBサーバ
    サーバ
    サーバ
d    サーバ fluentd     fluentd mongos       mongod(PRIMARY)

      アクセスログ
                                    ログ解析DBサーバ
      アクションログ
                            config
                                      mongod(SECONDARY)
                   ログ収集サーバ
                                    ログ解析DBサーバ
                    fluentd mongos
                                      mongod(SECONDARY)

                            config   ReplicaSets & Sharding
    NFSサーバ
     アクション集約ログ
                                        新規構築フロー
                                        既存フロー
                              11
現在のサーバスペック
 AWS上に、以下の構成で構築
           サーバ                                       OS              SW
   APサーバ(c1.xlarge)×19台                        CentOS 5.6        fluentd 0.10.1

                                                                 fluentd 0.10.1
 ログ収集サーバ(c1.xlarge)×2台                         CentOS 6.0
                                                                 MongoDB 2.0


ログ解析DBサーバ(m1.xlarge)×3台                        CentOS 6.0        MongoDB 2.0

         ハイ CPU エクストララージ インスタンス          エクストララージ インスタンス

          7 GB メモリ                        15 GB メモリ
          20 ECU(2.5 ECU × 8仮想コア)         8 ECU(2 ECU × 4仮想コア)
          1690 GB インスタンスストレージ             1,690 GB インスタンスストレージ
          64ビット プラットフォーム                  64ビット プラットフォーム
          I/O 性能: 高速                      I/O 性能: 高速
          API 名: c1.xlarge                API 名: m1.xlarge



                                    12
現在のSharding構成
  Sharding設計
    ログ種別(データベース)単位でShardingを行なっている

         ログ形式が定まっていないため、コレクション単位のShardingは未定



Shard1                      Shard2
アクセスログ(データベース)              アクションログ(データベース)
 −アプリA                       −日付:YYYY-MM-DD
 −アプリB




                       13
現在の取得ログ
アクセスログ
とりあえず、fluentd経由で突っ込んではみたけど…




アクションログ
共通フォーマット:時間、ユーザID、アプリ名、サーバ名

アプリごとのフォーマット:ここを中心に解析したい

            14
MongoDBを使ってみて




      15
MongoDBを構築してみて
インストールが簡単
 yum installで一発。Oracleェ…

ReplicaSetの追加・削除が簡単
 Sharding環境でも、mongosが自動で更新してくれる。

Shardingは、構築しないとわからない。
 db.runCommand( { enablesharding : "【データベース名】" } )を忘れないように…




                           16
MongoDBを運用し始めてみて
対話シェルのUIが運用者に優しい
 どこで作業しているかがわかりやすい。

 例)mongos>db.printShardingStatus()

   PRIMARY>rs.status()

MongoDBのクエリが豊富
 豊富すぎて、使いこなせてない><

運用トラブルの不安
 mongosが落ちる?Shardingが止まらない?監視方法は?

                         17
.......でも、MongoDB JPがあるから、
     きっと大丈夫(*´ω`*)




            18
ご清聴ありがとうございました。




      19

More Related Content

ソーシャルゲームログ解析基盤のMongoDB活用事例

Editor's Notes