前言
在數(shù)字化轉(zhuǎn)型時(shí)代,現(xiàn)代的大規(guī)模應(yīng)用程序每天可以生成數(shù)以億計(jì)的日志數(shù)據(jù)。它是企業(yè)運(yùn)營和管理中的寶貴資產(chǎn),記錄了系統(tǒng)、應(yīng)用和設(shè)備的各種活動(dòng)和事件。通過分析日志數(shù)據(jù),企業(yè)可以深入了解業(yè)務(wù)運(yùn)行情況、識(shí)別潛在問題和優(yōu)化機(jī)會(huì),提升系統(tǒng)穩(wěn)定性、安全性和性能表現(xiàn)。因此,企業(yè)構(gòu)建“統(tǒng)一日志中心”的必要性是顯而易見的,它可以集中管理和分析各類日志數(shù)據(jù),實(shí)現(xiàn)全面監(jiān)控、快速響應(yīng)和深度分析,幫助企業(yè)實(shí)現(xiàn)故障排除、安全審計(jì)、性能優(yōu)化等目標(biāo),提高運(yùn)營效率、降低風(fēng)險(xiǎn),并為業(yè)務(wù)發(fā)展提供有力支持。
觀測云秉承“統(tǒng)一采集、統(tǒng)一處理、統(tǒng)一分析”的理念,構(gòu)建了一套高效的觀測數(shù)據(jù)分析平臺(tái)。本文從日志采集、處理、存儲(chǔ)、分析的各個(gè)過程,分別觀測云如何幫助企業(yè)又快又好地建設(shè)統(tǒng)一日志中心。
觀測云日志采集能力
在采集方面,觀測云的統(tǒng)一數(shù)據(jù)采集器DataKit擁有豐富的采集模板和強(qiáng)大的集成擴(kuò)展能力,能夠使用采集磁盤文件、容器stdout、接收遠(yuǎn)程推送日志、sidecar方式采集日志等多種方式,以適應(yīng)企業(yè)異構(gòu)的IT環(huán)境和多元的日志采集需求。
觀測云對不同日志的處理方式
DataKit內(nèi)置了操作系統(tǒng)日志、容器日志、MySQL & Nginx等常用數(shù)據(jù)庫和中間件的采集器,能同時(shí)采集監(jiān)控對象屬性、指標(biāo)數(shù)據(jù)(Metric)、日志數(shù)據(jù)(Log),用統(tǒng)一采集的理念最大程度上減少部署在監(jiān)控對象上的agent數(shù)量。
DataKit采集器的運(yùn)行管理十分方便,在K8S環(huán)境中,DataKit會(huì)以DaemonSet方式運(yùn)行,確保在每個(gè)節(jié)點(diǎn)上都會(huì)運(yùn)行一個(gè)日志采集器 Pod,從而實(shí)現(xiàn)對整個(gè)集群的日志數(shù)據(jù)全面覆蓋。無論集群中有多少個(gè)節(jié)點(diǎn),都能保證每個(gè)節(jié)點(diǎn)的日志都被實(shí)時(shí)采集。觀測云還提供了DCA(DataKit Client Agent),它是一個(gè)用于批量管理DataKit的工具。通過DCA,用戶可以更加方便地對DataKit狀態(tài)、日志解析模板、黑名單等配置進(jìn)行批量操作和維護(hù),從而提高數(shù)據(jù)采集的效率和準(zhǔn)確性。
對于已經(jīng)使用開源agent采集日志的企業(yè)來說,通常傾向于將原有agent采集的日志轉(zhuǎn)發(fā)給新建設(shè)的統(tǒng)一日志中心。觀測云可使用Fluentd、Logstash、Kafka、API等方式來接收已采集的日志,充分保留企業(yè)過往的技術(shù)投入并減少替換成本。
觀測云日志處理能力
在日志處理過程中,觀測云內(nèi)置了十余種常用數(shù)據(jù)庫&中間件的官方日志解析模板,包括Kafka、Elasticsearch、MySQL、Nginx、Redis、Tomcat、MongoDB等,方便用戶直接使用。另外還提供了數(shù)十個(gè)腳本函數(shù),讓用戶可以按照不同的日志處理場景進(jìn)行快速引用,實(shí)時(shí)進(jìn)行調(diào)試。
例如,很多企業(yè)希望在日志采集時(shí)對日志中的敏感信息進(jìn)行脫敏,則可以使用觀測云Pipeline中的脫敏函數(shù)對指定字段范圍做數(shù)據(jù)脫敏,即可在采集側(cè)完成脫敏處理,避免了敏感信息在互聯(lián)網(wǎng)傳輸帶來的合規(guī)性問題。
再如,很多企業(yè)也提到了希望能配置采集端黑名單,以減少寶貴的帶寬資源,降低中心化處理的性能開銷。在觀測云上,您可以通過drop函數(shù)(丟棄整條日志或某個(gè)字段)、sample函數(shù)(對日志進(jìn)行采樣),或者是配置日志黑名單來達(dá)到上述目的。
對于模板不能適配的日志格式,觀測云也提供了多種方式讓用戶能輕松完成日志解析。首先是在Pipeline解析過程中提供了“一鍵獲取樣本”并實(shí)時(shí)調(diào)試的能力,讓用戶可以實(shí)時(shí)查看Pipeline對日志的處理是否滿足需求。同時(shí)為了降低編寫Pipeline的難度,觀測云還提供了交互式的命令行工具,幫助用戶快速選擇適合某個(gè)字段的函數(shù)。
交互式命令行工具,降低日志解析難度
此外,Pipeline還支持通過openAPI進(jìn)行導(dǎo)出、導(dǎo)入,以便在集團(tuán)性組織在創(chuàng)建工作空間時(shí)直接引用,快速將已經(jīng)調(diào)整好的Pipeline分發(fā)給不同業(yè)務(wù)系統(tǒng),提升業(yè)務(wù)團(tuán)隊(duì)的使用體驗(yàn)。
值得一提的是,對于在日志采集中經(jīng)常遇到的多行日志采集問題,觀測云提供了自動(dòng)多行模式、自定義多行模式的方式。自動(dòng)多行模式會(huì)根據(jù)特定的起始標(biāo)記、結(jié)束標(biāo)記、正則表達(dá)式等來進(jìn)行多行日志的識(shí)別,降低用戶的使用負(fù)擔(dān)。
觀測云日志存儲(chǔ)能力
觀測云在面向全球用戶提供SaaS服務(wù)的過程中,需要實(shí)施處理并存儲(chǔ)海量的日志,如何在成本與用戶體驗(yàn)間保持平衡,觀測云付出巨大努力。在過去使用elasticsearch/opensearch方案時(shí),我們發(fā)現(xiàn)該方案存在寫入占用資源多、對無模式表支持較差、聚合查詢性能差等問題。因此觀測云在經(jīng)過嚴(yán)謹(jǐn)?shù)恼{(diào)研、開發(fā)、測試之后推出了全新架構(gòu)的GuanceDB。
GuanceDB滿足了觀測云對 Schema Free 的要求,解決了數(shù)據(jù) Schema 頻繁變化痛點(diǎn);提高了數(shù)據(jù)寫入的性能,保證了數(shù)據(jù)寫入的時(shí)效性和查詢的實(shí)時(shí)性;提升了全文檢索的性能并降低查詢的資源開銷...... 總而言之,觀測云最終實(shí)現(xiàn):僅使用 Elasticsearch 的 1/3 成本、獲得 2~4 倍的性能提升,整體性價(jià)比提升了近 10 倍!
為了滿足企業(yè)對日志的長期保存需求(通常出于日志審計(jì)的考慮),同時(shí)又要兼顧存儲(chǔ)成本,觀測云提供了“數(shù)據(jù)轉(zhuǎn)發(fā)”功能,便于觀測云提供日志等數(shù)據(jù)保存到觀測云的對象存儲(chǔ)及轉(zhuǎn)發(fā)到外部存儲(chǔ)的功能,您可以自由選擇存儲(chǔ)對象,靈活管理數(shù)據(jù)轉(zhuǎn)發(fā)數(shù)據(jù)。在數(shù)據(jù)轉(zhuǎn)發(fā)頁面,您可以通過設(shè)置查詢時(shí)間和數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則快速查詢存儲(chǔ)數(shù)據(jù)(包含觀測云備份日志、AWS S3、華為云 OBS、阿里云 OSS 和 Kafka 消息隊(duì)列),還可以在無需額外處理的情況下,直接在觀測云上查看歷史備份日志和 SLS Query Logstore 數(shù)據(jù)。
觀測云日志分析能力
DQL(Debug Query Language)是觀測云開發(fā)的數(shù)據(jù)查詢語言。DQL支持在觀測云工作空間或者終端設(shè)備進(jìn)行數(shù)據(jù)查詢,允許用戶檢索和分析存儲(chǔ)在觀測云中的各種數(shù)據(jù),包括日志、指標(biāo)、鏈路追蹤等。
得益于DQL統(tǒng)一查詢語言和統(tǒng)一風(fēng)格的“查看器”,用戶在觀測云上無論是分析日志、鏈路、RUM(用戶體驗(yàn)數(shù)據(jù))時(shí)都有一致性的體驗(yàn),同樣的簡單易用、同樣的秒級(jí)查詢體驗(yàn)。
常用搜索歷史模板、快捷篩選、字段補(bǔ)全等功能,在觀測云上都一應(yīng)俱全??紤]到團(tuán)隊(duì)在排查故障、分析異常過程中經(jīng)常會(huì)有數(shù)據(jù)共享的需求,觀測云設(shè)計(jì)了貼心的“快照分享”,團(tuán)隊(duì)成員可以創(chuàng)建自定義時(shí)間段即時(shí)拷貝的數(shù)據(jù)副本,并生成指定查看權(quán)限的快捷訪問鏈接。團(tuán)隊(duì)可以通過一個(gè)瀏覽器鏈接分享日志數(shù)據(jù),并且可以保留分享者在日志上做過的時(shí)間篩選、條件篩選,該快照也并非是單一的靜態(tài)數(shù)據(jù),而是可以交互的日志分析界面,大大降低了團(tuán)隊(duì)間使用截圖、發(fā)送原始日志的溝通成本。出于對數(shù)據(jù)安全性的考慮,分享者可以對快照設(shè)置字段脫敏、添加水印、設(shè)置有效時(shí)間、鏈接加密、訪問IP白名單等多種特性,在信息高效傳遞的同時(shí)充分保證數(shù)據(jù)的安全性,便于團(tuán)隊(duì)間、外部企業(yè)進(jìn)行協(xié)作。
對于很多企業(yè)來說,特別擔(dān)心采集的日志中存在敏感數(shù)據(jù),但在日志的采集、存儲(chǔ)、分析過程中極其難以發(fā)現(xiàn)。為了解決這個(gè)問題,觀測云開發(fā)了“敏感數(shù)據(jù)掃描”功能,內(nèi)置了近百個(gè)敏感數(shù)據(jù)規(guī)則庫,并允許用戶自定義新建敏感數(shù)據(jù)規(guī)則,通過引用這些規(guī)則來對存儲(chǔ)在觀測云中的日志數(shù)據(jù)進(jìn)行主動(dòng)掃描,一旦發(fā)現(xiàn)敏感字段即可進(jìn)行加密,確保數(shù)據(jù)合規(guī)性。
此外,觀測云還支持通過“數(shù)據(jù)訪問”功能為不同角色配置對應(yīng)的日志數(shù)據(jù)訪問查詢范圍,以實(shí)現(xiàn)數(shù)據(jù)查詢范圍的精細(xì)化管理。例如負(fù)責(zé)不同業(yè)務(wù)系統(tǒng)的團(tuán)隊(duì)、同一團(tuán)隊(duì)中根據(jù)角色區(qū)分不同的日志權(quán)限,都可以靈活進(jìn)行配置。
在“日志智能檢測”功能中,觀測云運(yùn)用智能檢測算法,監(jiān)控工作空間內(nèi)采集器產(chǎn)生的日志數(shù)據(jù)。智能識(shí)別日志數(shù)量的突增 / 突降、錯(cuò)誤日志的突增的異常數(shù)據(jù),及時(shí)發(fā)現(xiàn)不符合預(yù)期的異常狀態(tài),及時(shí)提醒團(tuán)隊(duì)關(guān)注業(yè)務(wù)是否有異常表現(xiàn)。
日志突增的智能檢測
總結(jié)
當(dāng)企業(yè)考慮構(gòu)建統(tǒng)一日志中心時(shí),通常需要考慮功能需求、可擴(kuò)展性、安全性、兼容性、性能和效率、成本效益與用戶體驗(yàn)。相信經(jīng)過上面的介紹,您對觀測云的日志分析能力擁有了比較全面的認(rèn)識(shí)。觀測云一直致力于為用戶提供更好、更優(yōu)的可觀測能力,相信是企業(yè)構(gòu)建統(tǒng)一日志中心、統(tǒng)一可觀測平臺(tái)的理想選擇。