SlideShare a Scribd company logo
既存システムへの新技術活用法
  ~fluntd/MongoDB~


  株式会社シーエー・アドバンス
    技術推進グループ
      仲里 淳矢


     Copyright © CA ADvance .inc 2012
自己紹介

•株式会社シーエー・アドバンスの仲里です。(エンジニア歴4年目)
•技術推進グループに所属してます。
•沖縄高専卒です。
•開発環境は主にvim使ってます。
•主な業務内容
  • PHPによる社内管理画面開発(SEM系、GoogleAdwords等)

  • 社内のインフラ整備
     •CentOS6上で動く、ApacheとかMySQLの保守

  • NoSQL推進
     •MongoDB導入
        •社内の既存システムのNoSQL対応(パフォーマンスUpのため)
     •KyotoCabinet導入

  • Fluentdの導入
                                  2
                 Copyright © CA ADvance .inc 2012
アジェンダ

 ①はじめに

 ②fluentd

 ③fluentd導入事例

 ④MongoDB




                             3
            Copyright © CA ADvance .inc 2012
①はじめに




                 4
Copyright © CA ADvance .inc 2012
背景

•なぜ、我々は社内にfluentdを導入したのか

 •ファイルに書き込んだログの目視確認をどうに
  かしたい(不具合発生時) #tail,grepはもう嫌だ>_<

 •ログ解析の簡易化を図りたい

 •そもそも、レガシーなログ取込をどうにかしたい

 •DBに残すようにすればいいのでは、どうする?
                             5
            Copyright © CA ADvance .inc 2012
背景




そうだ、fluentd をいれよう!



                       6
      Copyright © CA ADvance .inc 2012
①fluentd




                 7
Copyright © CA ADvance .inc 2012
fluentdとは

•一言で言うと、ログ取込デーモン
•JSON形式で、いろんなシステムに保存できる!




                             8
            Copyright © CA ADvance .inc 2012
fluentdの特徴
•JSON形式で構造化された状態で保存される
•プラグインを利用して、いろんなシステムから、
 好きなデータ格納先に保存できる(※下図参照)
•安定性が高い

 プラグイン導入で対応                                      これもプラグインで
                                  buffer




{ } { }
   •PHP               •File
   •Ruby              •MySQL
   •Apache            •MongoDB
    [input]   図)ログ取込例 [output]
                               9
              Copyright © CA ADvance .inc 2012
fluentdインストール

※rubyをインストール環境を容易

・fluentdのインストール
# gem install fluentd


・confの生成
# fluentd –-setup /etc/fluetd


                               10
               Copyright © CA ADvance .inc 2012
fluentdインストール




・confの設定
# vim /etc/fluentd/log_server.conf


・起動
# fluentd -c /etc/fluentd/log_server.conf


                               11
               Copyright © CA ADvance .inc 2012
fluentd設定ファイル例




                           12
           Copyright © CA ADvance .inc 2012
③fluentd導入事例




                  13
  Copyright © CA ADvance .inc 2012
fluentd導入事例

•複数のWebサーバーから上がってくる、AP側のログ
データを、ログファイル吐き出しから、fluentd経由で
のMongoDB吐き出しに変えました。

結果、
 ログが一箇所にまとまることができた。
  ⇨不具合発生時に効果を発揮!

 ログ表示画面を作成
  ⇨データ確認や、ユーザーの追跡が容易に!
                              14
              Copyright © CA ADvance .inc 2012
fluentd構成イメージ
•社内インフラの構成
        web01


  PHP           fluentd



                                                             MongoDB


        web02


  PHP           fluentd



                                          15
                          Copyright © CA ADvance .inc 2012
fluentdまとめ

•複数のログデータを一元管理
 •ログの出先を変えたくなったら、設定ファイルを
  変えるだけで対応可能


•言語が違っても向け先を統一できる
 •IN{PHP, Ruby, Apache, etc}
 •OUT{MySQL, MongoDB, Cassandra, Growl, tail, etc}




                                    16
                    Copyright © CA ADvance .inc 2012
fluentdまとめ

•fluentdがバッファを貯めこむ仕組みを保持してい
るため、出力先が落ちてても、ログを貯めこむことが
可能。なので、


         安定性が高い!



                             17
             Copyright © CA ADvance .inc 2012
というわけでみんな
          を入れてみよう!


                  18
  Copyright © CA ADvance .inc 2012
④MongoDB




                19
Copyright © CA ADvance .inc 2012
はじめに(背景)

•社内システムへのfulentd導入にあたり、ログデータ
の出力先をMongoDBにしました。


•今回、MongoDBを取り入れた理由として、(小規模
な)MongoDBの運用を行い、フローを確立した上で、
開発陣のナレッジとして、知識共有し、戦力にできる
か見極めるためです。



                           20
           Copyright © CA ADvance .inc 2012
はじめに(背景)




•その、MongoDBの導入にあたり、自分が調査した
内容について、スライドにまとめてみました。




                           21
           Copyright © CA ADvance .inc 2012
MonoDB とは

• MongoDB は、高パフォーマンス、スキーマレス、オープン
  ソースのドキュメント指向データベースである。


• MongoDB は、BSONというJSONのバイナリ版のような
  形式でドキュメントを表現し、そのコレクションを管理す
  る。この形式は、複雑な階層を持たせることができ、な
  おかつクエリやインデックスが容易である。


MongoDB – Wikipedia
http://ja.wikipedia.org/wiki/MongoDB
                                       22
                       Copyright © CA ADvance .inc 2012
MonoDB の特徴


•   高可用性
    • スレーブが死んでも自動で切り離しできる

•   レプリカ機能
    • 新しいノード接続時、自動でデータの同期もしてくれる!

•   スキーマレス
    • あとでカラムが自由に増やせる。つまり、柔軟に対応可!
      ※バグ出ても気づきにくい



                             23
             Copyright © CA ADvance .inc 2012
MonoDB の特徴


• インデックスのサポート (複数インデックス可)

• オート・シャーディング(スケールアウト)

• Map Reduce(集計処理)

• GridFS(ファイル格納システム)




                             24
             Copyright © CA ADvance .inc 2012
データ構造
•   データ格納例
    DataBase→Collection→Key→Row→Value
    ※MySQLとほぼ一緒




                                  25
                  Copyright © CA ADvance .inc 2012
データ構造
•   MySQLで例えると、
      Collection ≒ Table




                                   26
                   Copyright © CA ADvance .inc 2012
使い方(CLI)


#データ検索
 > db.users.find({}, {a:1,b:1})


#データ登録
 > db.users.insert({a:1,b:1})


#データ削除
 > db.things.remove({_id: myobject._id});

                                27
                Copyright © CA ADvance .inc 2012
SQL と MongoDB の比較
SQL                                           Mongo クエリ言語



CREATE TABLE USERS (a Number, b Number)       暗黙的に行われます



INSERT INTO USERS VALUES(1,1)                 db.users.insert({a:1,b:1})


                                              db.users.find({}, {a:1,b:1})
SELECT a,b FROM users



SELECT * FROM users                           db.users.find()



SELECT * FROM users WHERE age=18              db.users.find({age:18})



SELECT * FROM users WHERE age=18 ORDER BY
                                              db.users.find({age:18}).sort({name:1})
name

SELECT * FROM users WHERE age>18              db.users.find({'age':{$gt:18}})})




                                                   28
                                   Copyright © CA ADvance .inc 2012
クエリ発行


•インデックスの作成や、コレクションのtruncateもできます!
 db.users.ensureIndex({user_id:1});
 db.users.remove();


•Upsertと機能があって、これが地味に便利そう
  •データがあれば、アップデート、なければインサートしてく
   れるみたい



                            29
            Copyright © CA ADvance .inc 2012
MapReduce


• バッチでのデータ処理や集計処理で利用します。

• 基本、入力値として、コレクションを投入し、
  出力値として、コレクションへデータを流します。

• 使いドコロとしては、細かいデータをデイリー・マンスリー
  でまとめたい時、効力を発揮するかも!

• Javascriptで組んでMongoDB に流しこむイメージです。


                            30
            Copyright © CA ADvance .inc 2012
サンプルプログラム 1/2




                          31
          Copyright © CA ADvance .inc 2012
サンプルプログラム 2/2




                          32
          Copyright © CA ADvance .inc 2012
サンプルプログラム(出力結果)




                        33
        Copyright © CA ADvance .inc 2012
まとめ


• 耐障害性が高く、自動でレプリカへの同期も
  やってくれるので、スケールアウトが容易

• スキーマレスでメンテも楽!

• 集計したい時は、MapReduceを使おう

• MongoDBDateハマりやすい


                          34
          Copyright © CA ADvance .inc 2012
ご清聴ありがとうございました。




                    35
    Copyright © CA ADvance .inc 2012

More Related Content

PDF
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
PDF
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
PDF
PHP開発者のためのNoSQL入門
PDF
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
PDF
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
PDF
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
PDF
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
PDF
MySQL Cluster 新機能解説 7.5 and beyond
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
PHP開発者のためのNoSQL入門
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
MySQL Cluster 新機能解説 7.5 and beyond

What's hot (20)

PDF
Data Scientists Love SQL Server
PDF
今さら聞けない!Active Directoryドメインサービス入門
PDF
Windows Server 2016 Active Directoryドメインサービス入門
PDF
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
PDF
MongoDBご紹介:事例紹介もあり
PDF
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
PDF
Managed Instance チートシート
PPTX
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
PDF
これからLDAPを始めるなら 「389-ds」を使ってみよう
PDF
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
PDF
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
PDF
今さら聞けない! Windows Server 2012 R2 Active Directory入門【グローバルナレッジ無料セミナー資料】
PDF
Cloud Foundry: Open Platform as a Service
PDF
About NoSQL
PDF
Windows File Service 総復習-Windows Server 2012 R2編 第1版
PPTX
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
PDF
今さら聞けない! Windows Server 2016 Active Directoryドメインサービス入門
PDF
20160929 inno db_fts_jp
PDF
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
PPTX
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
Data Scientists Love SQL Server
今さら聞けない!Active Directoryドメインサービス入門
Windows Server 2016 Active Directoryドメインサービス入門
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
MongoDBご紹介:事例紹介もあり
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Managed Instance チートシート
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
これからLDAPを始めるなら 「389-ds」を使ってみよう
[db tech showcase Tokyo 2014] C34:[楽天] 詳説 楽天のデータベースアーキテクチャ史 -シングルノードから仮想化フラッシ...
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
今さら聞けない! Windows Server 2012 R2 Active Directory入門【グローバルナレッジ無料セミナー資料】
Cloud Foundry: Open Platform as a Service
About NoSQL
Windows File Service 総復習-Windows Server 2012 R2編 第1版
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
今さら聞けない! Windows Server 2016 Active Directoryドメインサービス入門
20160929 inno db_fts_jp
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
Ad

Viewers also liked (6)

PPT
セキュアなサーバを構築しよう(CentOS 5.xまで対応)
PDF
Fluentd v0.12 master guide
PPTX
Fluentd+elasticsearch+kibana(fluentd編)
PPTX
それFluentdで! #fluentd
PDF
「コトナス」:出会わなくても良いアプリ『Match★Contact』
PDF
fluentd を利用した大規模ウェブサービスのロギング
セキュアなサーバを構築しよう(CentOS 5.xまで対応)
Fluentd v0.12 master guide
Fluentd+elasticsearch+kibana(fluentd編)
それFluentdで! #fluentd
「コトナス」:出会わなくても良いアプリ『Match★Contact』
fluentd を利用した大規模ウェブサービスのロギング
Ad

Similar to 既存システムへの新技術活用法 ~fluntd/MongoDB~ (20)

PDF
Fluentd casual
PDF
Guide to Cassandra for Production Deployments
PDF
OSSで支えられるライブドアの巨大ログ集計 #nhntech
PDF
社内向けTech Talk資料~Fluentdの基本紹介~
PDF
BPStudy20121221
PDF
MongoDB2.2の新機能
PPTX
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
PDF
Fluentとmongoで作るサービス
PDF
TokyoWebminig カジュアルなHadoop
PDF
社会ネットワーク分析第7回
KEY
Webサーバ勉強会 LT資料
PDF
Mongodb 紹介
PDF
Fluentd in #tkrk10
PDF
Elasticsearch入門 pyfes 201207
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
PPTX
Fluentd+MongoDB+Groovy
PDF
Hadoopによるリクルートでの技術調査とその活用
PDF
Big Data入門に見せかけたFluentd入門
PDF
Facebookのリアルタイム Big Data 処理
KEY
ソーシャルゲームログ解析基盤のMongoDB活用事例
Fluentd casual
Guide to Cassandra for Production Deployments
OSSで支えられるライブドアの巨大ログ集計 #nhntech
社内向けTech Talk資料~Fluentdの基本紹介~
BPStudy20121221
MongoDB2.2の新機能
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
Fluentとmongoで作るサービス
TokyoWebminig カジュアルなHadoop
社会ネットワーク分析第7回
Webサーバ勉強会 LT資料
Mongodb 紹介
Fluentd in #tkrk10
Elasticsearch入門 pyfes 201207
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Fluentd+MongoDB+Groovy
Hadoopによるリクルートでの技術調査とその活用
Big Data入門に見せかけたFluentd入門
Facebookのリアルタイム Big Data 処理
ソーシャルゲームログ解析基盤のMongoDB活用事例

既存システムへの新技術活用法 ~fluntd/MongoDB~