用Fluentd實現收集日誌到HDFS(上)
版權宣告:本文來自行者(http://blog.csdn.net/liuyuan185442111),轉載請註明出處。 https://blog.csdn.net/liuyuan185442111/article/details/47057571
Fluentd是一個實時日誌收集系統,它把日誌作為JSON stream,可以同時從多臺server上收集大量日誌,也可以構建具有層次的日誌收集系統。 Fluentd易於安裝,有靈活的外掛機制和緩衝,支援日誌轉發。它的特點在於各部分均是可定製化的,可以通過簡單的配置,將日誌收集到不同的地方。 Fluentd通過hadoop中的webHDFS與HDFS進行通訊,所以在配置Fluentd時,一定要保證webHDFS能正常通訊。
系統環境:CentOS 6.5 叢集環境:Hadoop 2.2.0 參考Fluentd官網。
安裝
td-agent是Fluentd的一個穩定版本。 CentOS下可以直接執行以下命令安裝:
curl -L https://td-toolbelt.herokuapp.com/sh/install-redhat-td-agent2.sh | sh
啟動
管理指令碼是:/etc/init.d/td-agent
可通過/etc/init.d/td-agent start
或service td-agent start
來啟動
配置檔案:/etc/td-agent/td-agent.conf
重新載入配置檔案:service td-agent reload
/var/log/td-agent/
配置
Fluentd自帶多個輸入外掛和輸出外掛,這裡先實現收集本地日誌到本地檔案。
## File input <source> type tail path /var/log/mytemp.log pos_file /var/log/td-agent/mytemp.log.pos format none tag td.temp </source> #其中: #1.type tail: tail方式是Fluentd內建的輸入方式,其原理是不停地從原始檔中獲取新的日誌,相當於tail –f命令。 #2.path: 指定日誌檔案位置。 #3.pos_file:儲存path中日誌檔案狀態的檔案。 #4.format none: 指定使用何種日誌解析器。 #5.tag: tag被用來對不同的日誌進行match。 ## File output <match td.temp> type file path /var/log/td-agent/access </match> --------------------- 本文來自 liuyuan185442111 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/liuyuan185442111/article/details/47057571?utm_source=copy
當mytemp.log有更新時,更新內容會新增到access檔案中。
輸出到HDFS
然後我嘗試將收集的日誌存放到HDFS上。 Fluentd通過webhdfs與HDFS通訊,所以需要開啟webhdfs。 設定Hadoop,修改配置檔案hdfs-site.xml,加入:
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.support.broken.append</name>
<value>true</value>
</property>
---------------------
本文來自 liuyuan185442111 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/liuyuan185442111/article/details/47057571?utm_source=copy
重啟Hadoop,新建一個目錄用來存放日誌:
hadoop fs -mkdir /log/
hadoop fs -chmod 777 /log/
td-agent配置檔案中source部分不變,修改match部分:
<match td.temp>
type webhdfs
host namenodehost
port 50070
path /log/a.log
flush_interval 5s
</match>
# flush_interval標識資料寫入HDFS的間隔
---------------------
本文來自 liuyuan185442111 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/liuyuan185442111/article/details/47057571?utm_source=copy
當td-agent與namenode在一臺物理機上時可以正常執行,當不在一臺物理機上時,報“Connection refused”錯誤。
參考文獻
接下來: td-agent與namenode是否必須在一臺物理機上? 現在採用了append的方式,對於HDFS來說效率較低,可以設定一箇中間節點,收集了其他節點的日誌之後,彙總成大檔案,然後上傳到HDFS。 td-agent的配置檔案格式。 File Input和WebHDFS Output的具體細節。