天天看點

開源日志收集軟體fluentd 轉發(forward)架構配置

需求:

通過開源軟體fluentd收集各個裝置的apache通路日志到fluentd的轉發伺服器中,然後通過webHDFS接口,寫入到hdfs檔案系統中。

軟體版本說明:

hadoop版本:1.1.2

fluentd版本:1.1.21

測試環境說明:

node29伺服器上安裝了apache,以及fluentd,作為fluentd的用戶端;

node1伺服器,為hadoop伺服器的namenode;

node29伺服器上fluentd配置檔案:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<code>&lt;</code><code>source</code><code>&gt;</code>

<code>  </code><code>type</code> <code>tail</code>

<code>  </code><code>format</code> <code>apache2</code>

<code>  </code><code>path </code><code>/var/log/httpd/access_log</code>

<code>  </code><code>pos_file </code><code>/var/log/td-agent/access_log</code><code>.pos</code>

<code>  </code><code>time_format %Y-%m-%d %H:%M:%S</code>

<code>  </code><code>localtime</code>

<code>  </code><code>tag apache.access</code>

<code> </code> 

<code>&lt;</code><code>/source</code><code>&gt;</code>

<code>#Log Forwarding to node1 server</code>

<code>&lt;match apache.access&gt;</code>

<code>  </code><code>type</code> <code>forward</code>

<code>#  time_slice_format %Y%m%d</code>

<code>#  time_slice_wait 10m</code>

<code>#  localtime</code>

<code>#定義日志入庫日志的時間;</code>

<code>#localtime非常重要,不設定日志時間和系統時間相差8小時;  </code>

<code>#定義入庫日志的時間;</code>

<code>  </code><code>&lt;server&gt;</code>

<code>  </code><code>host node1</code>

<code>  </code><code>port 24224</code>

<code>  </code><code>&lt;</code><code>/server</code><code>&gt;</code>

<code>  </code><code>flush_interval 1s</code>

<code>&lt;</code><code>/match</code><code>&gt;</code>

node1伺服器配置,這個伺服器上配置了hadoop的namenode,以及作為fluentd的轉發角色,具體配置檔案如下:

&lt;match apache.access&gt;

  type webhdfs

  host node1.test.com

  port 50070

  path /apache/%Y%m%d_%H/access.log.${hostname}

  time_slice_format %Y%m%d

  time_slice_wait 10m

#定義日志入庫日志的時間;

  time_format %Y-%m-%d %H:%M:%S

  localtime

  flush_interval 1s

&lt;/match&gt;

配置好以後,重新開機fluentd服務;

開始測試,在node29用ab指令開始通路apache,生成通路日志;

<a href="http://s3.51cto.com/wyfs02/M02/58/2E/wKioL1Srm8vR_ovaAAPZIkcRXtw457.jpg" target="_blank"></a>

然後,到node1伺服器上去檢視HDFS檔案系統中,是否生成了相關檔案及目錄:

檢視生成的目錄:

<a href="http://s3.51cto.com/wyfs02/M00/58/2E/wKioL1SrnD2T4tjMAANsBMDhnlw258.jpg" target="_blank"></a>

檢視檔案裡面具體日志:

hadoop fs -cat /apache/20150106_16/access.log.node1.test.com

<a href="http://s3.51cto.com/wyfs02/M01/58/32/wKiom1Srm-KBfz8qAAYjJTfE3zY387.jpg" target="_blank"></a>

如上圖所示,fluentd已經通過轉發模式,把node29伺服器上apache日志收集到hdfs檔案系統中了,友善下一步用hadoop進行離線分析。

本文轉自 shine_forever 51CTO部落格,原文連結:http://blog.51cto.com/shineforever/1599771