用Mac OS X操作系统尝试使用Fluentd将日志输出到MongoDB

上一篇文章

尝试在 Mac OS X 上安装Fluentd,并从Ruby中输出日志

基础条件

请安装MongoDB。这里我们将使用通过Homebrew安装的版本。

安装MongoDB插件

使用 gem 安装 fluent-plugin-mongo 插件。

$ gem install fluent-plugin-mongo

以其当前状态启动Fluentd的话,

**Notice: C extension not loaded. This is required for optimum MongoDB Ruby driver performance.
  You can install the extension as follows:
  gem install bson_ext

If you continue to receive this message after installing, make sure that the bson_ext gem is in your load path and that the bson_ext and mongo gems are of the same version.

因为被告知,所以我也安装了与mongo版本相同的bson_ext。

$ gem install bson_ext

Fluentd 的配置

我把默认设置中debug.**的部分改成以下方式,尝试将日志同时发送到标准输出和MongoDB。

<match debug.**>
  type copy
  <store>
    type stdout
  </store>
  <store>
    type mongo
    host localhost
    database fluent
    collection debug
  </store>
</match>

尝试将日志输出到MongoDB

使用上述配置启动Fluentd。

$ fluentd -c ./fluent/fluent.conf
2012-11-28 14:53:10 +0900: starting fluentd-0.10.29
2012-11-28 14:53:10 +0900: reading config file path="./fluent/fluent.conf"
2012-11-28 14:53:10 +0900: adding source type="forward"
2012-11-28 14:53:10 +0900: adding source type="http"
2012-11-28 14:53:10 +0900: adding source type="debug_agent"
2012-11-28 14:53:10 +0900: adding match pattern="debug.**" type="copy"
2012-11-28 14:53:10 +0900: listening fluent socket on 0.0.0.0:24224
2012-11-28 14:53:10 +0900: listening dRuby uri="druby://0.0.0.0:24230" object="Engine"

然后,在本地 MongoDB 中自动创建了fluent数据库和debug集合。

そして、

$ echo '{"hoge":"fuga"}' | fluent-cat debug.test

当输出类似于”など”,会在标准输出中显示。

2012-11-28 14:58:12 +0900 debug.test: {"hoge":"fuga"}

并显示,MongoDB的一方也有

$ mongo fluent
MongoDB shell version: 2.2.1
connecting to: fluent
> db.debug.find()
{ "_id" : ObjectId("50b5a7f7e0395a29bd000001"), "hoge" : "fuga", "time" : ISODate("2012-11-28T05:58:12Z") }

以这种形式被存储。

广告
将在 10 秒后关闭
bannerAds