使用Fluentd和MongoDB構建日誌收集系統

2021-09-21 09:32:04 字數 1588 閱讀 2648

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來設定日誌**

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標籤後面可以跟正規表示式以匹配我們指定的tag,只有匹配成功的tag對應的日誌才會運用裡面的配置。配置中的其它項都比較好理解,看注釋就可以了,其中flush_interval是用來控制多長時間將日誌寫入mongodb一次。

測試用ab工具對apache進行訪問,以產生相應的訪問日誌以供收集

然後我們在mongodb中就能看到收集到的日誌了

$ mongo

> use apache

> db.access.find()

fluentd學習 安裝使用

fluentd是非常強大的logging工具,幾句話簡單認識下。1.提供日誌的蒐集,過濾,路由功能 2.使用ruby c開發 3.支援多種資料來源的輸入,比如apache的access log,syslogd,業務log 4.支援多種輸出,file,amazon s3,mongodb,mysql,h...

使用Fluentd讀寫OSS

fluentd是乙個實時開源的資料收集器,基於cruby實現,td agent是其商業化版本,由treasure data公司維護。本文將介紹如何使fluentd能夠讀寫oss。root apache rpm ivh td agent 3.3.0 1.el7.x86 64.rpm然後,需要安裝flu...

使用Fluentd讀寫OSS

fluentd是乙個實時開源的資料收集器,基於cruby實現,td agent是其商業化版本,由treasure data公司維護。本文將介紹如何使fluentd能夠讀寫oss。root apache rpm ivh td agent 3.3.0 1.el7.x86 64.rpm然後,需要安裝flu...