使用Fluentd + MongoDB构建实时日志收集系统

日期: 2011-12-06 作者:nosqlfan 来源:TechTarget中国 英文

  Fluentd是一个日志收集系统,它的特点在于其各部分均是可定制化的,你可以通过简单的配置,将日志收集到不同的地方。

  目前开源社区已经贡献了下面一些存储插件:MongoDB, Redis, CouchDB,Amazon S3, Amazon SQS, Scribe, 0MQ, AMQP, Delayed, Growl 等等。

  本文要介绍的是在Fluentd的最新版中已经内置的MongoDB支持。主要通过一个收集Apache日志的例子来说明其使用方法:

  机制图解

  

  安装

  为了完成相关的测试,需要安装下面一些组件:

  Fluentd with MongoDB Plugin

  MongoDB

  Apache (with the Combined Log Format)

  在Fluentd的最新安装包中已经包含了MongoDB插件,你也可以用命令

  gem install fluent-plugin-mongo

  来进行安装

  Debian Package

  RPM Package

  MongoDB Downloads

  配置

  如果你是使用上面的deb/rpm包安装的Fluentd,那么配置文件位置在:/etc/td-agent/td-agent.conf,否则其位置应该在:/etc/fluentd/fluentd.conf

  首先我们编辑配置文件中的source来设置日志来源

<source>
  type tail
  format apache
  path /var/log/apache2/access_log
  tag mongo.apache
</source>

  其中:

  type tail: tail方式是 Fluentd 内置的输入方式,其原理是不停地从源文件中获取新的日志。

  format apache: 指定使用 Fluentd 内置的 Apache 日志解析器。

  path /var/log/apache2/access_log: 指定日志文件位置。

  tag mongo.apache: 指定tag,tag被用来对不同的日志进行分类

  下面再来编辑输出配置,配置日志收集后存储到MongoDB中

<match mongo.**>
  # plugin type
  type mongo

  # mongodb db + collection
  database apache
  collection access

  # mongodb host + port
  host localhost
  port 27017

  # interval
  flush_interval 10s
</match>

  match标签后面可以跟正则表达式以匹配我们指定的tag,只有匹配成功的tag对应的日志才会运用里面的配置。配置中的其它项都比较好理解,看注释就可以了,其中flush_interval是用来控制多长时间将日志写入MongoDB一次。

  测试

  用ab工具对Apache进行访问,以产生相应的访问日志以供收集

  $ ab -n 100 -c 10 http://localhost/

  然后我们在MongoDB中就能看到收集到的日志了

  $ mongo
  > use apache
  > db.access.find()
  { “_id” : ObjectId(“4ed1ed3a340765ce73000001”), “host” : “127.0.0.1”, “user” : “-“, “method” : “GET”, “path” : “/”, “code” : “200”, “size” : “44”, “time” : ISODate(“2011-11-27T07:56:27Z”) }
  { “_id” : ObjectId(“4ed1ed3a340765ce73000002”), “host” : “127.0.0.1”, “user” : “-“, “method” : “GET”, “path” : “/”, “code” : “200”, “size” : “44”, “time” : ISODate(“2011-11-27T07:56:34Z”) }
  { “_id” : ObjectId(“4ed1ed3a340765ce73000003”), “host” : “127.0.0.1”, “user” : “-“, “method” : “GET”,

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

nosqlfan
nosqlfan

相关推荐