溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Fluentd+MongoDB采集Apache日志

發(fā)布時(shí)間:2021-09-29 10:54:03 來(lái)源:億速云 閱讀:135 作者:柒染 欄目:大數(shù)據(jù)

這篇文章給大家介紹如何使用Fluentd+MongoDB采集Apache日志,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

我們今天介紹一個(gè)組合:Fluentd+MongoDB,用以實(shí)時(shí)收集半結(jié)構(gòu)化數(shù)據(jù)。

  1. 背景知識(shí)
  2. 日志接入Fluentd后,會(huì)以json的格式在Fluentd內(nèi)部進(jìn)行路由。這就決定了Fluentd處理日志的方式是非常靈活的,它將日志視為半結(jié)構(gòu)化數(shù)據(jù),可以方便地修改其結(jié)構(gòu)。
    相應(yīng)地,日志的最終存儲(chǔ)數(shù)據(jù)庫(kù)也應(yīng)該擅長(zhǎng)處理這樣的半結(jié)構(gòu)或者非結(jié)構(gòu)化數(shù)據(jù)。這樣整個(gè)系統(tǒng)搭配起來(lái)才更協(xié)調(diào)和高效。  
     
    而MongoDB恰好也是以類json的方式來(lái)處理內(nèi)部數(shù)據(jù)的,非常適合作為Fluentd的目標(biāo)存儲(chǔ)。  
        
     
  3. 實(shí)現(xiàn)機(jī)制
    我們通常以下列架構(gòu)來(lái)組合Fluentd+MongoDB這對(duì)CP。
    如何使用Fluentd+MongoDB采集Apache日志  
    在這個(gè)組合中,F(xiàn)luentd的職責(zé)為:
    1. 持續(xù)“tail”Apache訪問(wèn)日志
    2. 將Apache日志文本解析為有意義的字段(如ip、path等),并緩存之
    3. 定期將緩存的日志寫入MongoDB

  4. 安裝部署
    1. 安裝Apache、MongoDB
    2. 安裝Fluentd
    3. 在Fluentd中安裝MongoDB插件(最新版Fluentd已內(nèi)置)
      fluent-gem install fluent-plugin-mongo

    接下來(lái)就是配置的事了。



  5. 配置說(shuō)明
    1. 首先配置輸入端
      <source>  @type tail  path /var/log/apache2/access_log  pos_file /var/log/td-agent/apache2.access_log.pos  <parse>    @type apache2  </parse>  tag mongo.apache.access</source>
      使用tail來(lái)追蹤Apache的日志文件access_log,使用Fluentd內(nèi)置的Apache日志解析器apache2來(lái)解析日志。日志事件tag為mongo.apache.access。    









    2. 再配置輸出端
      <match mongo.**>  # plugin type  @type mongo
       # mongodb db + collection  database apache  collection access
       # mongodb host + port  host localhost  port 27017
       # interval  <buffer>    flush_interval 10s  </buffer>
       # make sure to include the time key  <inject>    time_key time  </inject></match>
      <match>匹配所有mongo開頭的tag,使用out_mongo作為輸出插件。依次配置日志存儲(chǔ)在MongoDB中的數(shù)據(jù)庫(kù)和集合、MongoDB地址和端口。設(shè)置flush間隔為10秒,每10秒將緩存的日志寫入MongoDB。    
             
  6. 測(cè)試驗(yàn)證
    確保各服務(wù)正常運(yùn)行。
    我們通過(guò)ping Apache來(lái)制造一些測(cè)試數(shù)據(jù)。
    $ ab -n 100 -c 10 http://localhost/
     

然后,在MongoDB中就可以看到這些日志了。
$ mongo> use apache> db["access"].findOne();{ "_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") }

關(guān)于如何使用Fluentd+MongoDB采集Apache日志就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI