博客 / 詳情

返回

金融場景 PB 級大規模日誌平台:中信銀行信用卡中心從 Elasticsearch 到 Apache Doris 的先進實踐

導讀:中信銀行信用卡中心每日新增日誌數據 140 億條(80TB),全量歸檔日誌量超 40PB,早期基於 Elasticsearch 構建的日誌雲平台,面臨存儲成本高、實時寫入性能差、文本檢索慢以及日誌分析能力不足等問題。因此使用 Apache Doris 替換 Elasticsearch,實現資源投入降低 50%、查詢速度提升 2~4 倍,同時顯著提高了運維效率。

本文轉錄自陳地長(中信信用卡中心信息技術部 高級工程師)在 Doris Summit Asia 2024 上的演講,經編輯整理。

中信銀行信用卡中心(以下簡稱“卡中心”)隸屬於中信銀行,致力於為廣大消費者提供涵蓋支付結算、消費信貸、中收增值和特色權益的“金融+生活”全方位服務。卡中心構建了高端、商旅、年輕、商超、車主及零售六大主流產品體系,形成了產品、渠道、經營、合規風控和服務五大經營體系,綜合實力在股份制銀行中名列前茅。

為確保業務系統的穩定運行、提升運維效率和用户體驗,卡中心建立了大規模的日誌雲分析平台。該平台不僅需支持實時監控和故障排查,還需滿足金融監管對日誌審計的嚴格要求。目前,平台每日新增日誌數據突破 140 億條、80TB,全量歸檔日誌量超 40PB。

早期基於 Elasticsearch 構建的日誌雲平台面臨存儲成本高、實時寫入性能差、文本檢索慢以及日誌分析能力不足等問題。因此,卡中心決定引入 Apache Doris 替換 Elasticsearch,實現資源投入降低 50%、查詢速度提升 2~4 倍,同時顯著提高了運維效率。

日誌數據分析運維需求背景

在當前日益複雜的業務需求下,催生出了各種複雜的應用系統,這些應用系統分佈在 Linux、Windows 等多種操作系統之上,同時依賴於各種網絡設備、安全設備、中間件和數據庫等服務,這些軟硬件運行時每天可產生的日誌量能達到 TB 級別。一旦系統運行出現異常,就需要通過分析日誌進行問題排查。

日誌的存在原本是通過其所記錄多樣化的數據、關鍵信息來幫助我們更好了解系統的運行狀態。然而,面對卡中心每日新增 TB 級別日誌數據,當系統異常時,日誌格式的多樣性同樣也給數據分析帶來極大的困難,主要挑戰如下:

  • 格式難以統一:日誌數據以自由文本形式呈現,儘管相較於結構化數據信息更豐富,但其半結構化特性在數據分析和監控方面帶來較大挑戰。
  • 日誌分析需求難以滿足:日誌種類繁多、分析需求各異。對不同業務、數據庫和中間件全面分析與監控時,面臨諸多挑戰。
  • 運維效率低:出現問題時,運維工程師需要逐台登錄服務器查看日誌,效率低下,人為排障可能引發額外風險。
  • 缺乏可視化展示:常規日誌分析方法無法以可視化展示,難以滿足統計分析和業務指標趨勢監控等更高水平的管理需求。
  • 難以評估影響範圍:難以通過事件及其相關的軟硬件日誌瞭解對業務的影響,也無法對大量運行歷史數據關聯分析。

基於 Elasticsearch 的日誌雲平台

為確保業務系統的穩定運行,提升運維效率和用户體驗,卡中心早期基於 Elasticsearch 構建日誌雲平台。整體採用 ELK 技術棧,支持應用日誌、基礎組件、中間件、數據庫日誌的存儲與分析。架構圖如下:

基於 Elasticsearch 的日誌雲平台.png

日誌數據通過 Filebeat 採集到 Kafka ,經過 Logstash 處理後存儲到 Elasticsearch 中。通過 Kibana UI 和自研 UI ,為開發和運維人員提供日誌搜索以及全鏈路日誌查詢等服務。

存在的問題:

  • 存儲成本高:在降本增效大背景下,業務對降低存儲成本的需求日益迫切。然而,由於 Elasticsearch 會對正排、倒排、列存等多份數據存儲,給降本提效帶來一定的挑戰。
  • 高吞吐實時寫入性能差:面對每天大量的新增數據,要求日誌雲平台具備 GB/s、百萬條/s 的高吞吐寫入能力,並保證數據秒級寫入延遲,確保數據的實時性和可用性,但隨着數據量的增長 Elasticsearch 很難滿足。
  • 日誌數據分析能力不足:Elasticsearch 分析能力較弱,只支持簡單的單表分析,而不支持多表 Join、子查詢、視圖等複雜分析,難以滿足愈發複雜的日誌分析需求。

Doris VS Elasticsearch 性能評測

通過調研業界日誌存儲領域的新進展,發現 Apache Doris 有明顯的優勢:

  • 高吞吐、低延遲日誌寫入:支持每天百 TB 級、GB/s 級日誌數據持續穩定寫入,同時保持延遲 1s 以內,確保數據的實時性和高效性。
  • 海量日誌數據低成本存儲:支持 PB 級海量數據的存儲,相較於 Elasticsearch 的存儲成本可節省 60% 到 80%,並支持將冷數據存儲到 S3/HDFS 等低成本存儲介質,存儲成本可再降 50%。
  • 高性能日誌全文檢索:支持倒排索引和全文檢索,對於日誌場景中常見的查詢(如關鍵詞檢索明細,趨勢分析等)能夠實現秒級響應,為用户提供極致的查詢體驗。
  • 強大的日誌分析能力:支持檢索、聚合、多表 JOIN、子查詢、UDF、邏輯視圖、物化視圖等多種數據分析能力,滿足複雜的數據處理分析需求。
  • 開放、易用的上下游生態:上游通過 HTTP API 對接常見的日誌數據源,下游通過標準 MySQL 協議和語法對接可視化分析頁面,為用户打造全方位的日誌存儲和分析生態。
  • 易維護、高可用集羣管理:支持完善的分佈式集羣管理,支持在線擴縮容等操作,無需停止服務即可進行集羣升級。

為更進一步驗證其性能,卡中心基於 httplogs 數據集和實際日誌數據對 Doris 和 Elasticsearch 進行了性能測試,測試結果顯示:

在相同日誌量下,Doris 相較於 Elasticsearch 表現優異:磁盤佔用空間下降了58%,日誌寫入峯值提升 32%,查詢耗時縮短了 38%。此外,Elasticsearch 使用了 9 台 16 核 32G 的服務器,Doris 只用了 4 台 8 核 32G 服務器,CPU 資源僅是 Elasticsearch 的 1/4。

Doris VS Elasticsearch 性能評測.png

基於 Apache Doris 的全新日誌雲平台

綜合上述對比及測試結果,卡中心決定引入 Apache Doris 進行升級,替換早期架構中的 Elasticsearch。基於 Doris 提供日誌的統一採集、清洗、計算、存儲、檢索、監控和分析等多項服務,實現一站式日誌管理與分析。同時,Kibana UI 被替換為 SelectDB UI,基於 Doris 自研 UI 更貼合卡中心業務的需求。

基於 Apache Doris 的全新日誌雲平台.png

01 統一日誌雲查詢入口

當前日誌雲集羣規模約為 19 套,如果每套集羣都有不同的查詢入口,查詢過程將顯得尤為繁瑣。因此,卡中心基於 Doris 建立了統一的日誌雲查詢入口,用户可以在同一 UI 下查詢不同機房和系統的日誌。

01 統一日誌雲查詢入口.png

02 基於日誌的鏈路分析

卡中心整合了全鏈路監控體系的三大要素:指標、鏈路和日誌,並基於 Doris 實現了日誌鏈路分析及透傳功能。可將全鏈路監控中的鏈路追蹤 ID(Trace ID)傳遞到日誌雲查詢 UI,使雙向串聯成為可能。

具體來説,每筆請求鏈路可自動與日誌明細關聯綁定,用户可查看每筆流量日誌的整體上下游信息,並在每個階段的對象上獲取相關日誌,實現從鏈路到日誌、日誌到鏈路的穿透式查詢。此外,當發現錯誤鏈路或耗時鏈路時,可對關聯日誌明細進行分析,打通排障最後一公里。

02 基於日誌的鏈路分析.png

03 日誌模式異常

為更好處理日誌模式異常的問題,卡中心進一步開發了日誌識別模版系統,可自動找出非預期的日誌模式問題。

在日常運維排查中,注意到系統上線後,可能因潛在變更引發突發性問題,這些問題通常通過錯誤日誌來體現。值得説明的是,這些錯誤日誌的模式可能因變更而不同,例如,某些錯誤在變更前的系統中未曾出現,而在變更後卻頻繁出現,且其增長趨勢與以往截然不同。

因此,利用該模板系統能夠精準識別異常日誌,並通過實時的告警推送機制,及時通知相關人員。這一功能不僅能夠幫助我們提前發現系統中潛在的問題,還能夠顯著提升問題響應速度,確保系統的穩定運行。

03 日誌模式異常.png

04 優化實踐

在日誌雲場景中,使用 Apache Doris 構建新一代日誌雲存儲分析平台,經過長時間的測試和驗證,總結出以下一些優化經驗。

表結構優化:

  • 基於時間字段的分區設計,開啓動態分區,提升數據管理和查詢能力。
  • 設置基於冷熱分離數據保留策略。
  • 設置基於磁盤屬性的熱數據寫策略,SSD 盤用於熱數據寫,提高寫入能力。
  • 使用 ZSTD 數據壓縮算法,有效降低數據存儲空間。
  • 合理設計字段索引,對於高基數字段使用 BloomFilter 索引,需要全文檢索的字段使用倒排索引。

配置項優化:

  • Compaction 優化,加大 Compaction 線程數:max_cumu_compaction_threads
  • 增大寫入端刷新前緩衝區大小: write_buffer_size
  • 開啓 tablet 均衡策略:enable_round_robin_create_tablet
  • 增大單個 tablet 版本數,提高寫入能力: max_tablet_version_num

數據寫入優化:

  • 開啓單副本導入,先寫入一個副本,其他副本數據從第一個副本拉取,導入性能提升 200%
  • 開啓單 tablet 導入,減少多個 tablet 寫入時帶來的文件讀寫開銷。
  • 提高單次導入的數據量,一次寫入 100MB 左右。

使用收益

以一個機房集羣投產為例,基於 Doris 的日誌存儲與分析平台上線後,相較於原有的 Elasticsearch 架構,成功減少了日誌冗餘存儲,提高了日誌數據存儲效率,同時提供了強大且高效的日誌檢索與分析服務。以下是以東壩機房為例的具體收益:

  • 資源投入節省 50%: CPU 使用率使用率約為 50%,整體資源使用率僅為之前的 1/2。原先同樣數據規模,寫入 Elasticsearch 需要 10TB 空間,採用 ZSTD 壓縮技術,寫入 Doris 規模僅需要 4TB 。
  • 查詢提速 2~4 倍: 新架構以更低的 CPU 資源消耗帶來了 2~4 倍的查詢效率提升。
  • 增強日誌可觀測能力: 通過穿透鏈路、指標、告警等平台,提升了日誌模式識別、分類聚合、日誌收斂與異常分析等可觀測能力。
  • 提高運維效率: 新平台提供極易安裝和部署的程序,以及易於操作的管理工具,簡化了服務、配置、監控和告警等操作,顯著提高了集羣的擴縮容靈活性。

未來展望

未來卡中心將持續迭代日誌系統, 並重點從以下幾方面發力:

  • 廣泛推廣 Doris:持續推進剩餘機房 Elasticsearch 替換成 Doris,推進剩餘的日誌雲 Elasticsearch 集羣替換成 Doris。
  • 豐富日誌導入預處理能力:增加日誌採樣和結構化等預處理功能,進一步提升數據的易用性和存儲性價比。
  • 增強 Tracing 能力:打通監控、告警、Tracing 和日誌等數據的可觀測性系統,以提供全方位的運維洞察。
  • 基於大模型的 AIOps:持續探索智能運維的最佳實踐,包括日誌異常監測、故障預測和故障診斷等。
  • 擴大 Doris 使用範圍:除了日誌場景,Doris 將逐步引入數據分析和大數據處理場景,增強湖倉一體的能力建設。
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.