いまさら fluentd をはじめてみたMongoDB なにそれ美味しいの？、その３

# いまさら fluentd はじめてみる３
 [MongoDB](http://www.mongodb.org/) これも前から気になっていたので調べてみた。[EPEL](https://fedoraproject.org/wiki/EPEL) パッケージでインストールするんでそこら辺は判ってると思うけどよろしく。あと「[それ美味しいの？](https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=%E3%81%AA%E3%81%AB%E3%81%9D%E3%82%8C%E7%BE%8E%E5%91%B3%E3%81%97%E3%81%84%E3%81%AE%EF%BC%9F)」って素では言わないのでそこんとこもよろしくｗ（会社の同僚が言うけどイラっとくるよねｗ）。

ようやっとこの構成を作れるｗ
![fluentd_2.png](https://qiita-image-store.s3.amazonaws.com/0/44540/b8aaa3d4-3dba-ae89-f3e2-7f018575f8a4.png)

# MongoDB って
いわゆる noSQL に分類される物です。特にこの MonogoDB は、ドキュメント指向型データベースでして特筆すべき点として「JSONのオブジェクトそのままDBに」っていうこと。これすごいことす。あと名前の由来が、”humongous”（ばかでかい）って始めて知りました。そりゃビックデータって語句で沢山引っ掛かるわ。

> [MongoDBの薄い本(The Little MongoDB Book)](http://www.cuspy.org/diary/2012-04-17)
> [はじめてのmongoDB 入門編 構築・設定・ツールまとめ](http://blog.bot.vc/2012/12/mongodb/)
> [初心者向けMongoDBのキホン！ - SlideShare](http://www.slideshare.net/tetsutarowatanabe/mongo-db-32210761)

# MongoDB いんすとーる
/etc/yum.repos.d/mongodb.repo を作成し、MongoDB をインストールします。

```lang:/etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
```

```lang:command
$ sudo yum -y install mongo-10gen mongo-10gen-server
```

## 起動と自動起動の設定
お約束のコマンド。2014/06/21現在のバージョンは MongoDB shell version: 2.6.3　らしいい。
あと MongoDB のLISTENポートは 27017（```netstat -a | grep mongo``` でわかるよ）。

```lang:command
$ sudo /etc/init.d/mongod start
$ sudo chkconfig mongod on
```

> MongoDBツール : http://robomongo.org/ 

# fluentd の設定
LTSV, MongoDB も設定してるのであとは fluentd の設定だけ。

## 送信側（エージェント側）
Apache のログ(LTSV)を監視し fluentd サーバに転送する設定。fluentd の再起動が必要です。

```lang:/etc/td-agent/td-agent.conf
<source>
  type tail
  path /var/log/httpd/access_log
  format ltsv
  time_key time
  time_format %d/%b/%Y:%H:%M:%S %z
  tag td.apache.access
  pos_file /var/log/td-agent/apache_access.pos
  tag mongo.apache
</source>

<match mongo.**>
  type forward
  buffer_chunk_limit 256m
  buffer_queue_limit 128
  flush_interval 5s
  <server>
    host 192.168.11.106
    port 24224
  </server>
</match>
```

## 受信側（コレクター側）
転送された情報を MongoDB に追加＆ファイルに書き出す設定。fluentd の再起動が必要です。

```lang:/etc/td-agent/td-agent.conf
<match mongo.**>
  type copy

  <store>
    type file
    time_slice_format %Y%m%d_%H%M
    time_slice_wait 1m
    path /var/log/td_log/td_access_test
    time_format %Y%m%dT%H%M%S%z
  </store>

  <store>
    type mongo
    database apache
    collection access
    host localhost
    port 27017
    flush_interval 10s
  </store>
</match>
```

# MongoDB の内容を確認してみる
きっとここまでくればGood、もーまんたい。MongoDB にデータが格納されているはず。そんな訳で確認してみよう。
192.168.11.104(Apach) ⇒ 192.168.11.106(MongoDB) にデータがはいってます！！

```lang:command
$ mongo
MongoDB shell version: 2.6.3
connecting to: test
> show dbs
admin   (empty)
apache  0.078GB
local   0.078GB
> use apache
switched to db apache
> show collections
access
system.indexes
> db.access.find();
{ "_id" : ObjectId("53a6bdcb297b502c2a000001"), "domain" : "192.168.11.104", "host" 
```

# 次は
[GrowthForecast を使った方法を勉強してみる（その４）の予定](http://qiita.com/murachi1208/items/9d23a78c316208dbe85d)ですｗ

## 参考サイト
> [さくらサーバーのVPS環境にfluentdとMongoDBをインストール](http://netdiever.com/archives/12241)
> [リッスンするipを指定する](http://openbook4.me/sections/156)