1. 程式人生 > >實時日誌分析系統的架構、實現以及思考

實時日誌分析系統的架構、實現以及思考

1 序

對ETL系統中資料轉換和儲存操作的相關日誌進行記錄以及實時分析有助於我們更好的觀察和監控ETL系統的相關指標(如單位時間某些操作的處理時間),發現系統中出現的缺陷和效能瓶頸。

由於需要對日誌進行實時分析,所以Storm是我們想到的首個框架。Storm是一個分散式實時計算系統,它可以很好的處理流式資料。利用storm我們幾乎可以直接實現一個日誌分析系統,但是將日誌分析系統進行模組化設計可以收到更好的效果。模組化的設計至少有兩方面的優點:

  1. 模組化設計可以使功能更加清晰。整個日誌分析系統可以分為“資料採集-資料緩衝-資料處理-資料儲存”四個步驟。Apache專案下的flumeng框架可以很好的從多源目標收集資料,所以我們用它來從ETL系統中收集日誌資訊;由於採集資料與處理資料的速度可能會出現不一致,所以我們需要一個訊息中介軟體來作為緩衝,kafka是一個極好的選擇;然後對流式資料的處理,我們將選擇大名鼎鼎的storm了,同時為了更好的對資料進行處理,我們把drools與storm進行了整合,分離出了資料處理規則,這樣更有利於管理規則;最後,我們選擇redis作為我們處理資料的儲存工具,redis是一個記憶體資料庫,可以基於健值進行快速的存取。
  2. 模組化設計之後,storm和前兩個步驟之間就獲得了很好的解耦,storm叢集如果出現問題,資料採集以及資料緩衝的操作還可以繼續執行,資料不會丟失。

2 相關框架的介紹和安裝

2.1 flumeng

2.1.1 原理介紹

Flume是一個高可用、高可靠、分散式的海量日誌採集、聚合和傳輸系統。Flume支援在日誌系統中定製日誌傳送方,用於收集資料;同時,Flume提供對資料進行簡單處理,並寫到各種資料接收方的能力。它擁有一個簡單的、可擴充套件的流式資料流架構,如下圖所示:

flume

日誌收集系統就是由一個或者多個agent(代理)組成,每個agent由source、channel、sink三部分組成,source是資料的來源,channel是資料進行傳輸的通道,sink用於將資料傳輸到指定的地方。我們可以把agent看做一段水管,source是水管的入口,sink是水管的出口,資料流就是水流。 Agent本質上是一個jvm程序,agent各個元件之間是通過event來進行觸發和協調的。

2.1.2 flumeng的安裝

  1. 從官方網站下載apache-flume-1.4.0-bin.tar.gz壓縮包
  2. 解壓縮,並在conf目錄下面新建一個檔案flume-conf.properties,內容如下:

    01234567891011121314151617181920212223a1.sources=r1a1.sinks=k1a1.channels=c1#source配置資訊#r1的type為avro表示該source接收的資料協議為avro,且接收資料由avro客戶端事件驅動#(也就是說resource要通過avro-cliet向其傳送資料)a1.sources
    .r1.type=avroa1.sources.r1.bind=localhosta1.sources.r1.port=44444#sink配置資訊# type為logger意將資料輸出至日誌中(也就是列印在螢幕上)a1.sinks.k1.type=logger#channel配置資訊#type為memory意將資料儲存至記憶體中a1.channels.c1.type=memorya1.channels.c1.capacity=1000a1.channels.c1.transactionCapacity=100#將source和sink繫結至該channel上a1.sources.r1.channels=c1a1.sinks.k1.channel=c1該配置檔案,配置了一個sourceavro的伺服器端用於日誌的收集。具體的情況將在後面ETL系統與flume整合中介紹。
  3. 啟動代理。flume-ng agent –n a1 –f flume-conf.properties

2.2 kafka

2.2.1 原理介紹

Kafka是linkedin用於日誌處理的分散式訊息佇列。Kafka的架構如下圖所示:

kafka架構

Kafka的儲存策略有一下幾點:

  1. kafka以topic來進行訊息管理,每個topic包括多個partition,每個partition包括一個邏輯log,由多個segment組成。
  2. 每個segment中儲存多條訊息,訊息id由其邏輯位置決定,即從訊息id可直接定位到訊息的儲存位置,避免id到位置的額外對映。
  3. 每個partition在記憶體中對應一個index,記錄每個segment中的第一條訊息的偏移。
  4. 釋出者發到某個topic的訊息會被均勻的分佈到多個partition上(隨機或根據使用者指定的回撥函式進行分佈),broker收到釋出訊息往對應partition的最後一個segment上新增該訊息,當某個segment上的訊息條數達到配置值或訊息釋出時間超過閾值時,segment上的訊息會被flush到磁碟,只有flush到磁碟上的訊息訂閱者才能訂閱到,segment達到一定的大小後將不會再往該segment寫資料,broker會建立新的segment。

2.2.2 kafka叢集的搭建

Kafka叢集的搭建需要依賴zookeeper來進行負載均衡,所以我們需要在安裝kafka之前搭建zookeeper叢集。

  1. 分別下載kafka_2.9.2-0.8.1的安裝包到兩臺機器,並解壓該安裝包。
  2. 開啟conf/server.properties檔案,修改配置項broker.id、zookeeper.connect、partitions以及host.name為相應的值。
  3. 分別啟動kafka即完成了叢集的搭建。

2.3 storm

相關推薦

實時日誌分析系統架構實現以及思考

1 序 對ETL系統中資料轉換和儲存操作的相關日誌進行記錄以及實時分析有助於我們更好的觀察和監控ETL系統的相關指標(如單位時間某些操作的處理時間),發現系統中出現的缺陷和效能瓶頸。 由於需要對日誌進行實時分析,所以Storm是我們想到的首個框架。Stor

基於Kafka和ElasticSearch,LinkedIn如何構建實時日誌分析系統

今天,和跟大家分享我們在用ElasticSearch和Kafka做日誌分析的時候遇到的問題,系統怎麼樣一步一步演變成現在這個版本。你如果想拿ElasticSearch和Kafka來做日誌分析的話,會有一些啟發。全文主要包括以下幾個Topic:   日誌分析系統的基本需求; Li

docker搭建海量實時日誌分析系統

主要技術 架構圖 詳細搭建 伺服器目錄情況 建立docker網路 搭建啟動es 啟動kibana 啟動zookeper 啟動kafka 啟動logstash

基於 Kafka 和 ElasticSearch,LinkedIn是如何構建實時日誌分析系統的?

https://blog.csdn.net/qq_36421826/article/details/81562297 今天,和跟大家分享我們在用ElasticSearch和Kafka做日誌分析的時候遇到的問題,系統怎麼樣一步一步演變成現在這個版本。你如果想拿ElasticSearch和Kafka來做日誌分析

分布式實時日誌分析解決方案ELK部署架構

hub redis lrn 選擇 spec 配置文件 模塊 date 應用 一、概述 ELK 已經成為目前最流行的集中式日誌解決方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等組件組成,來共同完成實時日誌的收集,存儲,展示等一

Windows搭建Log4Net+FileBeat+ELK日誌分析系統過程以及問題總結

程序 列表 dia could 重新 font 無法 elk 遇到 安裝流程: 稍後補充 參考內容:http://udn.yyuap.com/thread-54591-1-1.html ; https://www.cnblogs.com/ya

千億級數量下日誌分析系統的技術架構選型

優劣勢 大數據應用 aci 是我 根據 上下文 建議 strong 自動 ?? 隨著數據已經逐步成為一個公司寶貴的財富,大數據團隊在公司往往會承擔更加重要的角色。大數據團隊往往要承擔數據平臺維護、數據產品開發、從數據產品中挖掘業務價值等重要的職責。所以對於很多大數據工程師

分布式實時日誌分析解決方案 ELK 部署架構

大數 tput 創建 localhost 註意 read 統計 支持 gate 一、前言 ELK 已經成為目前最流行的集中式日誌解決方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等組件組成,來共同完成實時日誌的收集,存儲,展示等一站式

使用Node.js + MongoDB實現一個簡單的日誌分析系統

        在最近的專案中,為了便於分析把專案的日誌都存成了JSON格式。之前日誌直接存在了檔案中,而MongoDB適時闖入了我的視線,於是就把log存進了MongoDB中。log只存起來是沒有意義的,最關鍵的是要從日誌中發現業務的趨勢、系統的效能漏洞等。之前有一個用Ja

ELK實時日誌分析平臺部署搭建詳細實現過程

原文地址:http://www.linuxidc.com/Linux/2016-09/135137.htm 1、ELK平臺介紹 在搜尋ELK資料的時候,發現這篇文章比較好,於是摘抄一小段: 日誌主要包括系統日誌、應用程式日誌和安全日誌。系統運維和開發人員可以通過日

Android呼叫系統相簿拍照以及裁剪最簡單的實現(相容7.0)

/** * 相片工具類 */ public class PhotoUtils { private static final String TAG = "PhotoUtils"; /** * @param activity * 當前activity *

分散式實時日誌分析解決方案ELK部署架構

日誌是分析線上問題的重要手段,通常我們會把日誌輸出到控制檯或者本地檔案中,排查問題時通過根據關鍵字搜尋本地日誌,但越來越多的公司,專案開發中採用分散式的架構,日誌會記錄到多個伺服器或者檔案中,分析問題時可能需要檢視多個日誌檔案才能定位問題,如果相關專案不是一個團隊維護時溝通成本更是直線上升。把各個系統的

elk實時日誌分析平臺部署搭建詳細實現過程:加上個人實踐意見,及如何避坑

/* * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you m

Linux日誌檔案系統(EXT4XFSJFS)及效能分析

注:檢視自己系統的檔案格式 df -T 自上一篇《Ext2 v.s. Ext3 v.s. Ext4 效能比拼》 釋出以來,社會各界紛紛來電來函,給出了“Ext4 我看行”,“Ext4 牛牛牛”,“用了 Ext4,嘿,還真對得起這塊盤”,“Ext4,碎片去無蹤,效能更

《ElasticSearch6.x實戰教程》之實戰ELK日誌分析系統多資料來源同步

第十章-實戰:ELK日誌分析系統 ElasticSearch、Logstash、Kibana簡稱ELK系統,主要用於日誌的收集與分析。 一個完整的大型分散式系統,會有很多與業務不相關的系統,其中日誌系統是不可或缺的一個,集中式日誌系統需要收集來自不同服務的日誌,對它進行集中管理儲存以及分析。ELK就是這樣一個

ELK日誌分析系統 介紹 安裝配置

elkELK日誌分析系統一、ELK介紹 ELK顧名思義:是由Elasticsearch,Logstash 和 Kibana三部分組成的。 其中Elasticsearch 是一個實時的分布式搜索和分析引擎,它可以用於全文搜索,結構化搜索以及分析。它是一個建立在全文搜索引擎 Apache Lucene

開源日誌分析系統ELK平臺搭建部署

logstash 日誌分析系統 elk 開源日誌分析系統ELK平臺搭建部署 一、前言日誌主要包括系統日誌、應用程序日誌和安全日誌。系統運維和開發人員可以通過日誌了解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以了解服務器的負荷,性能安全性,從而及時采取措施糾正錯誤。通常

ELK服務搭建(開源實時日誌分析ELK平臺部署)(低版本—簡單部署)

搜索引擎 應用程序 官方網站 服務器 安全性 elk 開源實時日誌分析ELK平臺部署日誌主要包括系統日誌、應用程序日誌和安全日誌。系統運維和開發人員可以通過日誌了解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以了解服務器的負荷,性能安全性,從而及時采取措施糾正

ELK日誌分析系統搭建配置

elk我們主要用ELK日誌分析系統來分析Nginx訪問日誌,mysql慢查詢日誌,tomcat運行日誌以及系統日誌等。介紹:ELK:ElasticSearch+LogStash+Kibana=ElkStackElasticSearch:存儲、收索、分析(可以用solr替代)LogStash:收集器,輸入,處理

開源實時日誌分析ELK平臺部署

jruby 最新版 tput home 賬號 stdin $2 sum 頁面 ELK架構圖: 1. JDK環境-------------------1.1 下載最新JDK,解壓到/usr/local/java目錄。1.2 設置環境變量打開/etc/profile,添加下面