文章目錄
關於日誌收集
關於服務器日誌
- 服務器日誌是大數據系統中最主要的數據來源之一
- 服務器日誌可能包含的信息:
- 訪問信息
- 系統信息
- 其他業務信息
- 基於服務器日誌的應用:
- 業務儀表盤:PV,UV等
- 線上查錯:錯誤日誌查詢
- 系統監控:調用鏈,接口訪問統計等
- 其他數據應用
- 服務器日誌的特點:
- 不間斷,流式產生
- 數據量大,信息量大
- 源頭分散
日誌採集系統的一般架構
日誌採集系統的設計要求
- 系統可用性:採集系統自身的健壯性
- 可擴展性:可以隨着應用系統的規模及數據量的增加而線性擴展
- 可靠性:不會丟失數據
- 靈活性:支持多種數據源;支持多種處理方式;支持多種採集目
的地;支持對數據的預處理
Flume
是什麼?
一個高可用的、高可靠的、分佈式的海量日誌採集、聚合和傳輸的系統
#Cloudera公司出品#
角色
版本
- Flume OG(original generation, 2009年7月):分佈式日誌收集系統,
有Master概念,依賴於Zookeeper,分爲agent,collector,
storage三種角色 - Flume NG(next generation, 2011年10月):代碼重構,功能精簡,
去掉master,collector角色,專注數據的收集與傳遞
Flume 工作原理解析
組成
Flume Flow:
- Flow:數據採集流程
- Event:消息處理的最小單位,帶有一個可選的消息頭(head存儲不同web消息的元數據ip:interceptor)
- Agent:一個獨立的Flume進程,包含組件Source、Channel、Sink
- Source:以event爲單位接收信息,並確保信息被推送(push)到channel
- Channel:緩存信息,確保信息在被sink處理前不會丟失
- Sink:從channel中拉取(pull)並處理信息
- Interceptor:event攔截器,可以修改或丟棄event
處理流程:
source以event爲單位從數據源接收信息,然後保存到一個或多個channel中
(可以經過一個或多個interceptor的預處理),sink從channel中拉取並處理
信息(保存,丟棄或傳遞到下一個agent),然後通知channel刪除信息
安裝
依賴:
- jdk1.8
步驟:
- 下載安裝包
- 解壓
- 配置flume-env.sh:設置 JAVA_HOME
- 配置 agent:conf/flume-conf.properties
- 啓動: $FLUME_HOME/bin/flume-ng agent -n a1 -c conf -f xxx.properties
配置模板
Flow類型-順序流
Flow類型-多對一聚合
Flow類型-一對多路由(分類發送到每個channel)
Flow類型-負載均衡
相關配置練習
https://blog.csdn.net/bingdianone/article/details/84863824#t4
工作流程
Source
Channel
Sink
常見應用場景
場景一:離線日誌收集
場景描述:收集服務器的用戶訪問日誌,保存到Hadoop集羣中,用於離線
的計算與分析
Flume方案:在服務器端配置flume agent,其中:
- Source採用Spooling Directory Source
- Channel採用Memory Channel
- Sink採用HDFS Sink
場景二:實時日誌收集
場景描述:收集服務器的系統日誌,發送給實時計算引擎進行實時
處理
Flume方案:在服務器端配置flume agent,其中:
- Source採用Spooling Directory Source或 Exec Source(tail –f xxx)
- Channel採用Memory Channel
- Sink採用Kafka Sink
場景三:系統日誌收集
場景描述:收集服務器的系統日誌,保存到搜索引擎中,用於線上日
志查詢
Flume方案:在服務器端配置flume agent,其中:
- Source採用Spooling Directory Source
- Channel採用File Channel
- Sink採用ElasticSearch Sink
部署架構圖
中間層可以用sink group來進行多臺部署
git.gupaoedu.com/big-data/gp-bd/issues/10
其他方案
•Logstash(ELK)•Scribe •Chukwa
- flume是一個即插即用的數據收集組件,只需添加一些配置即可使用;更易使用
- kafka是一個高性能的分佈式消息隊列,需要自己編寫生產端和消費端代碼,擴展性和穩定性更好
經驗分享
- 配置相關:
- Agent的配置中使用統一的命名規則
- 在啓動命令中添加“no-reload-conf”參數爲true來取消自動加載配置文件功能
- 基於配置中心讀取統一的配置文件
- 調大HdfsSink的batchSize,增加吞吐量,減少hdfs的flush次數
- 適當調大HdfsSink的callTimeout,避免不必要的超時錯誤
- 架構相關:
- 將志採集系統系統分成三層:採集、彙總和存儲,採集只管將數據發送
到彙總層,處理邏輯由彙總層統一處理。好處是簡化採集點的管理 - 採集點(source)不要直接接入應用系統中,以免由於日誌收集系統問題影響應用系統
- 將志採集系統系統分成三層:採集、彙總和存儲,採集只管將數據發送