实时文章采集(测试用ab对Apache进行访问日志收集(组图)!)
优采云 发布时间: 2021-10-27 22:15实时文章采集(测试用ab对Apache进行访问日志收集(组图)!)
Fluentd 是一个日志采集系统。它的特点是它的零件是可定制的。您可以通过简单的配置将日志采集到不同的地方。
目前开源社区贡献了以下存储插件:MongoDB、Redis、CouchDB、Amazon S3、Amazon SQS、Scribe、0MQ、AMQP、Delayed、Growl等。
本文将介绍最新版本的 Fluentd 中内置的 MongoDB 支持。主要通过一个采集Apache日志的例子来说明它的使用:
机构图
安装
为了完成相关测试,需要安装以下组件:
Fluentd的最新安装包已经收录了MongoDB插件,也可以使用命令
gem install fluent-plugin-mongo
安装
配置
如果使用上述deb/rpm包安装Fluentd,则配置文件位置为:/etc/td-agent/td-agent.conf,否则其位置应为:/etc/fluentd/fluentd.conf
首先我们在配置文件中编辑source来设置日志源
type tail
format apache
path /var/log/apache2/access_log
tag mongo.apache
在:
type tail:tail方法是Fluentd内置的输入法,其原理是不断从源文件中获取新的日志。format apache:指定使用 Fluentd 的内置 Apache 日志解析器。path /var/log/apache2/access_log:指定日志文件的位置。tag mongo.apache:指定tag,tag用于对不同的日志进行分类
让我们再次编辑输出配置,配置日志采集并将其存储在 MongoDB 中
# plugin type
type mongo
# mongodb db + collection
database apache
collection access
# mongodb host + port
host localhost
port 27017
# interval
flush_interval 10s
match标签后面可以跟一个正则表达式来匹配我们指定的标签,只有匹配成功的标签对应的日志才会使用里面的配置。配置中的其他项比较容易理解,看注释就行了,其中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", "path" : "/", "code" : "200", "size" : "44", "time" : ISODate("2011-11-27T07:56:34Z") }
来源:
翻译: