用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") }
以这种形式被存储。