攜程ELK日誌分析平台深耕之路

2021-09-22 12:34:08 字數 3203 閱讀 8063

源起

日誌,看似簡單簡單的文字,在**運維人員眼裡卻似一座蘊含豐富的寶藏。通常以下運維任務都或多或少需要運維人員和日誌打交道:

技能熟練的linux sa們能夠很快的組合諸如grep, awk這樣的命令,奇幻般的從日誌中挖掘出有用的資訊;亦或是研發人員往往會基於mysql,mongodb,hbase開發自己的日誌儲存和分析工具。

然而網際網路大規模、分布式的特性決定了日誌的源頭越來越分散,產生的速度越來越快,傳統的手段和工具顯得日益力不從心。市場對新工具的需求已然催生出splunk這樣近百億美元市值的專業日誌分析解決方案**商。

從2023年攜程**運營中心成立伊始,集中化的運維日誌分析平台就被提上議事日程。作為中國最大的ota**,攜程基礎設施每日產生的各類日誌有好幾十種,量級在數個tb級別,如果採用splunk這樣的商業軟體,每年的授權費用就要近千萬。昂貴的授權費用驅使我們深入研究這個領域,尋求商業軟體以外的替代方案。

小試牛刀

一線運維部門對於日誌分析工具有如下幾個重要的期盼點:

日誌要支援多種資料來源

日誌解析方式靈活但簡單

能夠按照時間窗對特定欄位做數值統計,並且時間窗最好可以隨意縮放,比如計算某個時間段的平均響應時間,或者出現某種錯誤型別最多的url等等。

當時公司已有基於mysql和hbase的日誌分析工具,然而功能與使用者期望相差甚遠。我們對這些工具的感覺是:可以很好的存,卻無法很好的用。具體說就是日誌寫到資料庫問題不大,但一旦要用的時候,只能做類似tail的翻看,或者簡單的過濾;一旦有複雜的查詢和統計會非常非常慢,或者根本無法支援,使用者體驗比較差。

腦子裡不停翻滾著使用者需求,持續探尋了幾天後,elk進入了我們的視野。elk是三個開源工具elasticsearch,logstash,kibana組合而成的軟體棧,其中的核心是開源的分布式搜尋引擎elasticsearch,輔以logstash靈活多樣的日誌收集,過濾,傳送功能以及kibana炫酷的前端展示面板,組合成一套可以媲美商業應用的解決方案。

下面是個典型的elk架構方案;

看起來很簡單,logstash像一把瑞士軍刀,可以通過plugin的方式從多種渠道輸入日誌、內部深加工(filter),再輸出到多種型別的目的地,這裡我們送到elasticsearch做索引和儲存。 中間的redis用作訊息佇列,使得架構的容錯性更高,當es故障或者下線維護的時候,日誌可以快取一段時間而不至於丟失。

如下是乙個openstack日誌的分析示例面板:

持續學習、實踐與優化

開源軟體並非沒有成本,如果無法理解其核心原理,無法將其駕馭往往會導致專案的失敗。隨著接入的日誌量級增加,集群規模擴大,我們開始遇到各種詭異的穩定性和效能問題。乙個系統再好,不穩定、慢,使用者就會慢慢喪失信心和興趣。這促使我們投入大量的精力,深入去研究elk並持續的優化生產集群:

1. 為提高系統穩定性和容量管理能力,我們加強了監控,在ganglia上開發了es監控外掛程式:

2. 為加強系統安全性,我們開發了開源的認證閘道器esproxy(使得kibana可以接入公司的sso(單點登入系統),並在索引級別提供黑白名單的訪問控制;

3. 為提高cpu利用率,節省硬體資源,我們開發了開源工具hangout( 替代logstash,吞吐量提公升了5倍之多;

4. 基於開源的logstash forwarder開發的agent,解決了windows平台原有log agent的資源消耗高、不穩定的問題;

5. 為提高kibana易用性,我們開發了導航panel、資料同比排名panel、時間偏移對比等等特性。

6. 為應對更大規模的日誌流,我們研究kafka並替換了redis,使得運輸管道更易於水平擴充套件,穩定性和容錯性更高。

7. 為提公升大範圍資料聚合速度和防止記憶體溢位,我們很早發現了es1.x版本對doc values特性的支援,率先採用後使得生產集群的聚合速度和穩定性大幅提高。

8. 為提公升資料資料寫入實時性,我們對集群做了冷熱資料分離和自動遷移,保障資料寫入實時性不會受到大範圍查詢的影響。

9. 為提高es集群穩定性,我們還做了客戶端節點和資料結點分離等架構上的優化。

以下架構是攜程生產集群逐步演變成過程:

成果與未來展望

經過1年多的不懈努力,我們的es集群擴充套件到40個資料結點,收集50多種型別的日誌,日處理日誌160億條,大小近5tb。 執行穩定,響應快速,監控完備。目前已經成為攜程**運維核心應用之一,使用者涵蓋運維,系統研發,資訊保安,應用研發。

elasticsearch成名於elk,但絕非只擅長於做日誌分析,作為分布式搜尋引擎,很多公司將其用於全站搜尋,相關性推薦等功能。elk在攜程的成功應用也吸引了部分業務研發部門的架構師對elasticsearch這項技術的關注。部分應用的搜尋功能正在引入elasticsearch進行重構,以期提高搜尋的準確性、速度和系統可靠性。

我們下乙個基於elasticsearch的應用將是正在研發中的新一代分布式監控平台hickwall。相較於主流監控平台採用的時間序列儲存方案,例如rrdtool、mysql、opentsdb、influxdb等,我們認為elasticsearch可以提供更好的水平擴充套件性,更靈活快速的數值聚合計算功能。目前專案正在緊鑼密鼓的開發過程中,有望在明年下半年在生產上部署,並助力攜程**流量10x的增長。

搭建ELK日誌分析平台

上 elk介紹及搭建 elasticsearch 分布式集群 下 搭建kibana和logstash伺服器 elk 日誌相關 logstash輸出到elasticsearch多索引 elasticsearch索引自動清理 logstash處理json格式日誌檔案的三種方法 logstash的filt...

ELK(開源日誌分析平台)介紹

elk是三個開源軟體的縮寫,分別表示 elasticsearch logstash,kibana 它們都是開源軟體。新增了乙個filebeat,它是乙個輕量級的日誌收集處理工具 agent filebeat占用資源少,適合於在各個伺服器上蒐集日誌後傳輸給logstash,官方也推薦此工具。elast...

ELK日誌分析平台 1 搭建

2017 12 28 admin 一 簡介 1 核心組成 elk由elasticsearch logstash和kibana三部分元件組成 elasticsearch是個開源分布式搜尋引擎,它的特點有 分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋...