Fluentd是一個日志收集系統,它的特點在于其各部分均是可定制化的,你可以通過簡單的配置,將日志收集到不同的地方。
本文要介紹的是在Fluentd的最新版中已經內置的MongoDB支持。主要通過一個收集Apache/nginx日志的例子來說明其使用方法:
機制圖解
安裝Fluentd
設置yum源
vi /etc/yum.repos.d/td.repo
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/x86_64/
gpgcheck=1
gpgkey=http://packages.treasure-data.com/redhat/RPM-GPG-KEY-td-agent
yum clean all
yum makecache
yum -y install td-agent
在Fluentd的最新安裝包中已經包含了MongoDB插件,所以不需要安裝mongo插件
配置
如果你是使用上面的deb/rpm包安裝的Fluentd,那么配置文件位置在:/etc/td-agent/td-agent.conf,否則其位置應該在:/etc/fluentd/fluentd.conf
首先我們編輯配置文件中的source來設置日志來源
<source>
type tail
format apache
pos_file /var/log/td-agent/nginx-access.log.pos
path /usr/local/nginx/logs/www.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標簽后面可以跟正則表達式以匹配我們指定的tag,只有匹配成功的tag對應的日志才會運用里面的配置。配置中的其它項都比
<match mongo.**>
# plugin type
type mongo
# mongodb db + collection
database apache
collection access
# mongodb host + port
host 192.168.30.113
port 3306
# interval
flush_interval 10s
</match>
較好理解,看注釋就可以了,其中flush_interval是用來控制多長時間將日志寫入MongoDB一次。
注意:如果是收集的是nginx日志的話,日志格式要保持默認的。
啟動td-agent
service td-agent start
然后我們在MongoDB中就能看到收集到的日志了
/usr/local/mongodb/bin/mongo 192.168.30.113:3306
MongoDB shell version: 2.0.4
connecting to: 192.168.30.113:3306/test
> use apache
switched to db apache
> db.access.find()
{ "_id" : ObjectId("530fee3753357d2437000001"), "host" : "192.168.30.1", "user" : "-", "method" : "GET", "path" : "/api?callback=jQuery172014558692439459264_1393552941396&do=show_workspace&MEMBER_ID=80&os=w&webtoken=1b43342c1f&_=1393552941501", "code" : "301", "size" : "178", "referer" : "http://www.weiduoa.com/", "agent" : "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36", "time" : ISODate("2014-02-28T02:02:29Z") }
{ "_id" : ObjectId("530fee3753357d2437000002"), "host" : "192.168.30.1", "user" : "-", "method" : "GET", "path" : "/api?callback=jQuery172014558692439459264_1393552941397&do=inboxmemberlist&MEMBER_ID=80&os=w&webtoken=1b43342c1f&_=1393552941505", "code" : "301", "size" : "178", "referer" : "http://www.weiduoa.com/", "agent" : "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36", "time" : ISODate("2014-02-28T02:02:29Z") }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。