需求:
通過開源軟體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><</code><code>source</code><code>></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><</code><code>/source</code><code>></code>
<code>#Log Forwarding to node1 server</code>
<code><match apache.access></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><server></code>
<code> </code><code>host node1</code>
<code> </code><code>port 24224</code>
<code> </code><code><</code><code>/server</code><code>></code>
<code> </code><code>flush_interval 1s</code>
<code><</code><code>/match</code><code>></code>
node1伺服器配置,這個伺服器上配置了hadoop的namenode,以及作為fluentd的轉發角色,具體配置檔案如下:
<match apache.access>
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
</match>
配置好以後,重新開機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