《SelectDB 王磊-如何基于 Apache Doris 構建更高性價比的日志存儲與分析平臺.pdf》由會員分享,可在線閱讀,更多相關《SelectDB 王磊-如何基于 Apache Doris 構建更高性價比的日志存儲與分析平臺.pdf(67頁珍藏版)》請在三個皮匠報告上搜索。
1、基于基于Apache DorisApache Doris構建日志存儲與分析平臺構建日志存儲與分析平臺王磊王磊|SelectDB|SelectDB 資深大數據研發專家資深大數據研發專家個人簡介個人簡介王磊王磊 阿里云阿里云 MVPMVP,目前就職于目前就職于 SelectDBSelectDB,負責負責 Apache Doris Apache Doris 以以及企業級產品及企業級產品 SelectDB SelectDB 的數據生態建設工作,具有超的數據生態建設工作,具有超 10 10 年年大數據領域工作經驗,對數據治理、數據湖和實時數倉有深入大數據領域工作經驗,對數據治理、數據湖和實時數倉有深入理
2、解和實踐,理解和實踐,人氣技術暢銷書人氣技術暢銷書圖解圖解 Spark Spark 大數據快速分析大數據快速分析實戰實戰、offer offer 來了:來了:Java Java 面試核心知識點精講(原理篇面試核心知識點精講(原理篇&架構篇)架構篇)作者作者目錄目錄0101日志分析的需求和挑戰日志分析的需求和挑戰02020303040405050606傳統日志分析解決方案傳統日志分析解決方案Apache DorisApache Doris日志解決方案日志解決方案Apache DorisApache Doris日志解決方案核心技術解析日志解決方案核心技術解析Apache DorisApache D
3、oris日志方案入門實戰日志方案入門實戰Apache DorisApache Doris日志解決方案應用案例日志解決方案應用案例0101日志分析的需求和挑戰日志分析的需求和挑戰什么是日志分析?什么是日志分析?日志分析是一種通過收集、整理和分析計算機系統或網絡設備產生的日志數據的過程。它可以幫助日志分析是一種通過收集、整理和分析計算機系統或網絡設備產生的日志數據的過程。它可以幫助管理員識別系統或應用程序中的問題,并提供有關系統性能、安全性和用戶行為的洞察。管理員識別系統或應用程序中的問題,并提供有關系統性能、安全性和用戶行為的洞察。1 1:識別程序系統問題:識別程序系統問題2 2:量化系統性能:
4、量化系統性能3 3:提高系統安全性:提高系統安全性4 4:識別用戶行為:識別用戶行為為什么需要日志分析?為什么需要日志分析?基于國家網絡安全法規的需求基于國家網絡安全法規的需求0101中華人民共和國網絡安全法(中華人民共和國主席令第五十三號)第二十一條三點規定:采取監測、記錄網絡運行狀態、網絡安全事件的技術措施,并按照規定留存相關的網絡日志不少于六個月審計和運維審計和運維0202 審計需求:審計需求:運維團隊要保障日志的可審計性,以便出現問題進行審計 運維需求:運維需求:上千臺服務器,日志獨立分散,故障不易發現提高產品和研發效率提高產品和研發效率0303 快速定位問題:快速定位問題:統一的日志
5、平臺有助于研發人員快速分析和處理問題 更科學的產品設計:更科學的產品設計:產品經理通過日志分析用戶的行為,為產品的設計審計提供數據上的支持提高產品穩定性提高產品穩定性0404 潛在消除問題:潛在消除問題:發現潛在的問題,在故障未出現時將可能的故障“消滅在萌芽狀態”日志報警服務:日志報警服務:通過日志報警服務,可以提醒運維人員技術處理系統故障 提高系統可觀測值:提高系統可觀測值:日志監控能夠幫助產研人員了解目前系統的運行狀態日志分析主要的應用場景日志分析主要的應用場景輿情分析輿情分析網絡設備日志網絡設備日志CDNCDN日志日志服務器日志服務器日志應用程序日志應用程序日志傳感器設備日志傳感器設備日
6、志埋點日志埋點日志網絡安全分析網絡安全分析流量分析流量分析監控告警監控告警行為分析行為分析用戶畫像用戶畫像服務器監控服務器監控服務器告警服務器告警應用程序監控應用程序監控業務監控業務監控業務告警業務告警設備狀態設備狀態設備運營設備運營日志分析特點日志分析特點T1T1T2T2T3T3T4T4T5T5TNTN1 1:寫入寫吞吐大、數據實時可見:寫入寫吞吐大、數據實時可見2 2 存儲存儲周期長、數據量大、存儲成本高存儲存儲周期長、數據量大、存儲成本高3 3:查詢快速檢索、時間序列性強:查詢快速檢索、時間序列性強日志分析整體架構日志分析整體架構基礎設施日志來源日志采集、解析、存儲、分析應用場景容器Do
7、cker、K8S操作系統Linux、MacOSWindows Events網絡設施NAT網關、防火墻、交換機、路由器、CDN應用程序Web服務Tomcat、Nginx消息隊列Kafka、Pulsar數據庫MySQL、PostgreSQL、MongoDB審計日志Logfiles、System Calls用戶程序Java、GO、Python日志日志解析解析日志日志采集采集結構化半結構化字段識別類型識別數據分詞索引創建日志日志存儲存儲原始數據倒排索引統計指標日志日志分析分析高效點查字符匹配統計分析應用場景應用場景業務指標業務指標APMAPM服務質量監控服務質量監控DevOpsDevOps監控監控服務
8、器資源監控服務器資源監控網絡安全分析網絡安全分析挑戰挑戰0404010102020303多源異構日志如何采集?多源異構日志如何采集?數據多源:數據多源:網絡設備、操作系統、數據庫、WEB服務器、應用程序結構多樣:結構多樣:結構化、半結構化、無結構化日志存儲如何降本增效?日志存儲如何降本增效?降本:降本:服務器成本、故障率增效:增效:高效分析、定位問題、行為分析和需求設計日志如何統一存儲?日志如何統一存儲?ApacheApache DorisDorisElasticSearchElasticSearchHDFSHDFS存儲、存儲、HiveHive分析分析FTPFTP備份備份對象存儲對象存儲日志如
9、何進行一站式分析?日志如何進行一站式分析?實時日志分析:實時日志分析:網絡設備攻擊分析,應用程序高危安全事件分析,系統違規操作(登錄、變配、數據刪除)分析統計分析:統計分析:登錄失敗排行榜,活躍病毒排行榜,網絡設備故障原因排行榜,用戶訪問排行榜關聯分析:關聯分析:通過組合判斷事件的行為和故障影響程度日志查詢:日志查詢:關鍵字查詢,分析故障原因告警分析:告警分析:告警規則分析和統計日志分析的挑戰日志分析的挑戰0202傳統日志分析解決方案傳統日志分析解決方案ELKELK解決方案解決方案成本問題成本問題CPU消耗高 分詞和構建索引過程會占用大量CPU資源寫入性能低 寫索引慢,一般單核性能=89519
10、0400 AND timestamp=893980800 AND timestamp=897436800 ORDER BY timestamp DESC開放:多數據源寫入開放:多數據源寫入KafkaHDFSRoutine LoadBroker LoadSpark Doris ConnectorStream loadFlink Doris ConnectorBeats容器操作系統網絡設施Web服務消息隊列數據庫審計日志用戶程序其其他他日日志志采采集集工工具具HTTP協議(Stream load)開放:開放:Stream loadStream load方式方式數據源寫入數據源寫入curl-loca
11、tion-trusted-u root:-H format:json-H read_json_by_line:true-T logfile.json http:/127.0.0.1:8030/api/testdb/httplogs/_stream_load0101 建表建表0202 測試文件測試文件0303 StreamStream LoadLoad數據導入數據導入0404 數據查詢數據查詢logfile.jsonlogfile.json 日志日志StreamStream LoadLoad開放:開放:Routine Load Routine Load方式方式數據源寫入數據源寫入0101 建表建
12、表0202 測試消息測試消息0303 RoutineRoutine LoadLoad數據導入數據導入0404 數據查詢數據查詢日志日志RoutineRoutine LoadLoadKafka開放:開放:Flink Flink DorisDoris ConnectorConnector方式方式數據源寫入數據源寫入0101 建表建表0202 測試消息測試消息0303 FlinkSQLFlinkSQL數據導入數據導入0404 數據查詢數據查詢日志日志Kafka開放:開放:Logstash Logstash方式方式數據源寫入數據源寫入0101 建表建表0202 測試文件測試文件0404 數據查詢數據查
13、詢日志日志Beats0303 Logstash Doris Output PluginLogstash Doris Output Plugin數據導入數據導入開放:開放:beats beats方式方式數據源寫入數據源寫入0101 建表建表0202 測試文件測試文件0404 數據查詢數據查詢日志日志Beats0303 Beats Doris Output PluginBeats Doris Output Plugin數據導入數據導入開放:多源數據展示方式開放:多源數據展示方式容器操作系統網絡設施Web服務消息隊列數據庫審計日志用戶程序日日志志采采集集工工具具日日志志采采集集工工具具MySQLMy
14、SQL ClientClient ToolsTools開放:多源數據展示方式開放:多源數據展示方式GrafanaGrafana明細查詢與報表分析明細查詢與報表分析開放:多源數據展示方式開放:多源數據展示方式 Grafana Grafana明細查詢與報表分析明細查詢與報表分析寫入高效:幾十寫入高效:幾十GB/sGB/s寫入寫入T1T1T2T2T3T31 1:客戶端實時微批寫入:客戶端實時微批寫入T1-T3T1-T3采用采用C+C+更高效的實現方式更高效的實現方式高效分詞算法高效分詞算法優化倒排索引結構優化倒排索引結構向量化索引向量化索引列式存儲高性能磁盤寫入列式存儲高性能磁盤寫入時序時序Comp
15、actionCompaction 幾十幾十GB/sGB/s寫入寫入秒級別秒級別FlushFlush可見可見服務端贊批服務端贊批Compaction查詢高效:百億日志秒級檢索查詢高效:百億日志秒級檢索分區分桶分區分桶倒排索引倒排索引基于動態剪枝的基于動態剪枝的TopNTopN算法算法列式存儲列式存儲向量化計算向量化計算MPPMPP查詢查詢PiplinePipline執行執行智能優化器智能優化器霧化視圖霧化視圖前綴索引前綴索引T1T1T2T2T3T3T1-T3T1-T3百億日志百億日志秒級檢索秒級檢索統一:統一:DorisDoris內核內核 +半結構化索引構建一站式方案半結構化索引構建一站式方案M
16、PPMPP架構架構向量化執行向量化執行列式存儲列式存儲倒排索引倒排索引動態表動態表快速快速檢索檢索執行優化器執行優化器標準標準SQLSQL高效點查高效點查內核引擎內核引擎半結構半結構化增強化增強冷熱分離冷熱分離復雜復雜分析分析高性高性價比價比業務價值業務價值性能提升性能提升2 2倍倍以上以上資源成本節省資源成本節省60%+60%+融合融合ESES能力在統一數倉能力在統一數倉,簡化系統架構、減少維護成本,簡化系統架構、減少維護成本Doris2.0Doris2.0MySQLMySQL JDBCJDBC產品接口產品接口場景化分析場景化分析湖倉一體湖倉一體生命周期管理生命周期管理統一:統一:Doris
17、Doris內核內核 +半結構化索引構建一站式方案半結構化索引構建一站式方案強大的通用強大的通用SQLSQL分析能力分析能力擴展擴展SQLSQL支持倒排索引支持倒排索引增加了字符串類型的全文檢索增加了字符串類型的全文檢索支持字符串全文檢索,包括同時匹配多個關鍵字MATCH_ALL、匹配任意一個關鍵字MATCH_ANY支持字符串數組類型的全文檢索支持英文、中文分詞加速普通等值、范圍查詢,覆蓋加速普通等值、范圍查詢,覆蓋bitmapbitmap索引的功能索引的功能支持字符串、數值、日期時間類型的=,!=,=,=,=2023-06-01 AND ts select*from httplogs2 whe
18、re response.data.pv=202;+-+-+-+-+-+-+-+-+-+-+|timestamp|clientip|request|uuid|response.status|response.msg|response.data.apraise|response.data.favorite|ments|response.data.pv|+-+-+-+-+-+-+-+-+-+-+|1676012713|192.168.1.1|test|2|0|0|0|2|202|+-+-+-+-+-+-+-+-+-+-+1 row in set(0.02 sec)mysql 多級嵌套子多級嵌套子JS
19、ONJSON訪問使用點號(訪問使用點號(.)隔開,字段上需要加)隔開,字段上需要加 Schema ChangeSchema ChangeLightLight SchemaSchema ChangeChange極速:Light Scheme ChangeIndex ChangeSchema Change自動:dynamic Scheme Change靈活:增量創建索引低成本:支持冷熱分離,極大節約成本低成本:支持冷熱分離,極大節約成本存儲成本最大降低至原來存儲成本最大降低至原來1/151/15存儲成本存儲空間單位成本1/51/51/31/3原始數據衍存 =列式存儲復雜倒排索引 =專為日志簡化素引
20、普通壓縮算法 =日志高壓縮比壓縮冷熱數據全本地盤 =冷熱分離,冷數據在對象存儲 T1T1T2T2T3T3列式存儲列式存儲專為日志簡化素引專為日志簡化素引高壓縮比高壓縮比(ZSTD)(ZSTD)對象存儲(對象存儲(S3S3、OSSOSS、COSCOS、OBSOBS)ALTER STORAGE POLICY test_policyPROPERTIES(cooldown_ttl=3dcooldown_ttl=3d);1/151/15T1T1T2T2T3T3SSDHDD熱溫冷0505Apache DorisApache Doris日志方案入門實戰日志方案入門實戰相關語法相關語法CREATE TABLE
21、 table_name(columns_difinition,INDEX idx_name1(column_name1)USING INVERTED PROPERTIES(parser=english|chinese)INDEX idx_name2(column_name2)USING INVERTED)創建倒排索引創建倒排索引支持中文分詞和英文分析,不指定支持中文分詞和英文分析,不指定parserparser不不分詞(字段始終只有一個分詞)分詞(字段始終只有一個分詞)添加倒排索引添加倒排索引語法1CREATE INDEX idx_name ON table_name(column_name)
22、USING INVERTED PROPERTIES(parser=english|chinese);語法2ALTER TABLE table_name ADD INDEX idx_name(column_name)USING INVERTED PROPERTIES(parser=english|chinese);刪除倒排索引刪除倒排索引語法1DROP INDEX idx_name ON table_name;語法2ALTER TABLE table_name DROP INDEX idx_name;相關語法相關語法1.全文檢索關鍵詞匹配,通過MATCH_ANY MATCH_ALL完成SELEC
23、T*FROM table_name WHERE column_name MATCH_ANY|MATCH_ALL keyword1.;1.1 logmsg中包含keyword1的行SELECT*FROM table_name WHERE logmsg MATCH_ANY keyword1;1.2 logmsg中包含keyword1或者keyword2的行,后面還可以添加多個keywordSELECT*FROM table_name WHERE logmsg MATCH_ANY keyword2 keyword2;1.3 logmsg中同時包含keyword1和keyword2的行,后面還可以添加
24、多個keywordSELECT*FROM table_name WHERE logmsg MATCH_ALL keyword2 keyword2;2.普通等值、范圍、IN、NOT IN,正常的SQL語句即可,例如SELECT*FROM table_name WHERE id=123;SELECT*FROM table_name WHERE ts 2023-01-01 00:00:00;SELECT*FROM table_name WHERE op_type IN(add,delete);倒排索引加速查詢倒排索引加速查詢場景場景1 1(單個關鍵詞匹配):(單個關鍵詞匹配):加速加速9 9倍倍場景
25、場景2 2(多個關鍵詞同時匹配):(多個關鍵詞同時匹配):1313倍加速倍加速場景場景3 3(任意多個關鍵詞匹配):(任意多個關鍵詞匹配):1212倍加速倍加速180180130130120120202010101010場景1場景2場景3傳統傳統LikeLike vsvs 倒排索引倒排索引like倒排索引單位:ms高性能日志寫入與分析相關配置項高性能日志寫入與分析相關配置項fe.conffe.conf:max_running_txn_num_per_db=10000000min_version_count_indicate_replica_compaction_too_slow=50000ta
26、blet_rebalancer_type=partitionpartition_rebalance_move_expire_after_access=864000partition_rebalance_max_moves_num_per_selection=30schedule_slot_num_per_path=20balance_slot_num_per_path=10be.confbe.confenable_simdjson_reader=trueinverted_index_compaction_enable=truewrite_buffer_size=1073741824vertic
27、al_compaction_max_segment_size=2073741824#set to num cpus/2max_cumu_compaction_threads=16compaction_min_size_mbytes=1024compaction_promotion_min_size_mbytes=1024base_compaction_dup_key_max_file_size_mbytes=64cumulative_compaction_min_deltas=1500cumulative_compaction_max_deltas=3000pick_rowset_to_com
28、pact_interval=3600000max_tablet_version_num=50000max_runnings_transactions_per_txn_map=10000txn_commit_rpc_timeout_ms=100000enable_write_index_searcher_cache=falsedisable_storage_page_cache=truefile_cache_alive_time_sec=86400file_cache_max_size_per_disk=107374182400file_cache_type=sub_file_cache0606
29、Apache DorisApache Doris日志解決方案應用案例日志解決方案應用案例 解決方案:解決方案:DorisDoris冷熱分離構建高性價比的日志存儲分析平臺冷熱分離構建高性價比的日志存儲分析平臺服務器日志服務器日志應用程序日志應用程序日志其他日志其他日志beatsbeatsKafkaKafkalogstashlogstashRoutineRoutine LoadLoad數據采集與寫入數據采集與寫入數據源數據源數據存儲數據存儲數據應用數據應用數據流-11 1ElasticSearchGrafanaGrafanaKibanaKibana應用程序應用程序歷史數據遷移(Spark Load
30、)應用程序應用程序報表遷移2 2KibanaKibanalogstashlogstash實時數據寫入數據流-2查詢遷移3 34 4冷熱編號編號項目項目ESESDorisDoris用時(人用時(人/天)天)結論結論1 1整體方案測試整體方案測試ELKELKSelectDB+GrafanaSelectDB+Grafana5 5DorisDoris方案符合要求方案符合要求2 2寫入性能測試寫入性能測試130MB/S130MB/S551MB/S551MB/S2 2DorisDoris寫入性能為寫入性能為ESES的的5.25.2倍倍3 3磁盤占用測試磁盤占用測試5T5T1.2TB1.2TB1 1Dori
31、sDoris節省節省76%76%磁盤磁盤4 4查詢性能測試查詢性能測試P90P90為為600ms600msP90P90為為350ms350ms2 2DorisDoris查詢速度為查詢速度為ESES的的1.71.7倍倍解決方案:基于解決方案:基于Apache DorisApache Doris構建統一融合的數據分析平臺構建統一融合的數據分析平臺日志分析設備點查設備分析ClickHouseESHBase數據源數據源數據存儲數據存儲數據應用數據應用設備日志日志分析點查服務即席查詢多維分析之前的分析架構之前的分析架構日志分析設備點查設備分析數據源數據源數據存儲數據存儲數據應用數據應用設備日志日志分析點
32、查服務即席查詢基于基于Apache DorisApache Doris構建統一融合的數據分析平臺構建統一融合的數據分析平臺多維分析1.每天新增明細數據10億,300GB單副本。2.舊的架構日志分析使用ES,點查服務使用Hbase,即席分析使用ClickHouse,數據倉庫使用Hive3.將日志日志分析分析和點查服務點查服務和即席查詢即席查詢場景用 DorisDoris 統一統一,大大降低架構的復雜性,性價比提升3 3倍倍。Hive數據倉庫Hive數據倉庫Multi Cataloghttp stream load行業案例行業案例 游戲日志游戲日志Doris全文檢索能滿足日志檢索分析的需求,日志存
33、儲空間下降6倍,系統成本大幅降低routine loadKafka行業案例行業案例 安全日志安全日志Doris只用原來1/5的服務器,承載了30萬每秒的寫入流量,安全分析查詢響應速度更快訂閱開發者郵件組訂閱開發者郵件組訂閱社區開發者郵件組 devdoris.apache.org 并參與討論 個人微信個人微信如想進入社區用戶社群請備注 加群加群加入社區加入社區了解更多技術實踐案例了解更多技術實踐案例麥思博(msup)有限公司是一家面向技術型企業的培訓咨詢機構,攜手2000余位中外客座導師,服務于技術團隊的能力提升、軟件工程效能和產品創新迭代,超過3000余家企業續約學習,是科技領域占有率第1的客座導師品牌,msup以整合全球領先經驗實踐為己任,為中國產業快速發展提供智庫。高可用架構主要關注互聯網架構及高可用、可擴展及高性能領域的知識傳播。訂閱用戶覆蓋主流互聯網及軟件領域系統架構技術從業人員。高可用架構系列社群是一個社區組織,其精神是“分享+交流”,提倡社區的人人參與,同時從社區獲得高質量的內容。