導讀:中信銀行信用卡中心每日新增日志數據 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 技術棧,支持應用日志、基礎組件、中間件、數據庫日志的存儲與分析。架構圖如下:
日志數據通過 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。
基于 Apache Doris 的全新日志云平臺
綜合上述對比及測試結果,卡中心決定引入 Apache Doris 進行升級,替換早期架構中的 Elasticsearch。基于 Doris 提供日志的統一采集、清洗、計算、存儲、檢索、監控和分析等多項服務,實現一站式日志管理與分析。同時,Kibana UI 被替換為 SelectDB UI,基于 Doris 自研 UI 更貼合卡中心業務的需求。
01 統一日志云查詢入口
當前日志云集群規模約為 19 套,如果每套集群都有不同的查詢入口,查詢過程將顯得尤為繁瑣。因此,卡中心基于 Doris 建立了統一的日志云查詢入口,用戶可以在同一 UI 下查詢不同機房和系統的日志。
02 基于日志的鏈路分析
卡中心整合了全鏈路監控體系的三大要素:指標、鏈路和日志,并基于 Doris 實現了日志鏈路分析及透傳功能。可將全鏈路監控中的鏈路追蹤 ID(Trace ID)傳遞到日志云查詢 UI,使雙向串聯成為可能。
具體來說,每筆請求鏈路可自動與日志明細關聯綁定,用戶可查看每筆流量日志的整體上下游信息,并在每個階段的對象上獲取相關日志,實現從鏈路到日志、日志到鏈路的穿透式查詢。此外,當發現錯誤鏈路或耗時鏈路時,可對關聯日志明細進行分析,打通排障最后一公里。
03 日志模式異常
為更好處理日志模式異常的問題,卡中心進一步開發了日志識別模版系統,可自動找出非預期的日志模式問題。
在日常運維排查中,注意到系統上線后,可能因潛在變更引發突發性問題,這些問題通常通過錯誤日志來體現。值得說明的是,這些錯誤日志的模式可能因變更而不同,例如,某些錯誤在變更前的系統中未曾出現,而在變更后卻頻繁出現,且其增長趨勢與以往截然不同。
因此,利用該模板系統能夠精準識別異常日志,并通過實時的告警推送機制,及時通知相關人員。這一功能不僅能夠幫助我們提前發現系統中潛在的問題,還能夠顯著提升問題響應速度,確保系統的穩定運行。
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 將逐步引入數據分析和大數據處理場景,增強湖倉一體的能力建設。