流利說(shuō)統(tǒng)一可觀察性平臺(tái)實(shí)踐
時(shí)間:2021-08-19 16:27:59
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]在線教育行業(yè)現(xiàn)狀隨著90年代互聯(lián)網(wǎng)的引入,在線教育產(chǎn)品也依托于互聯(lián)網(wǎng)誕生。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,在線教育產(chǎn)品也開(kāi)始了出現(xiàn)新的模式。在線教育從最初單純的文字形式,開(kāi)始往圖片、音頻方面開(kāi)始發(fā)展。教育在線化也進(jìn)一步促進(jìn)了數(shù)據(jù)化的發(fā)展,內(nèi)容作為教育企業(yè)的核心資產(chǎn),無(wú)論是數(shù)據(jù)化程度還是數(shù)據(jù)...
在線教育行業(yè)現(xiàn)狀
隨著 90 年代互聯(lián)網(wǎng)的引入,在線教育產(chǎn)品也依托于互聯(lián)網(wǎng)誕生。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,在線教育產(chǎn)品也開(kāi) 始了出現(xiàn)新的模式。在線教育從最初單純的文字形式,開(kāi)始往圖片、音頻方面開(kāi)始發(fā)展。教育在線化也進(jìn)一步促進(jìn)了數(shù)據(jù)化的發(fā)展,內(nèi)容作為教育企業(yè)的核心資產(chǎn),無(wú)論是數(shù)據(jù)化程度還是數(shù)據(jù)化規(guī)模都在不斷提升。同時(shí)用戶(hù)使用時(shí)長(zhǎng)的提升,又為教育 AI 提供了大量源數(shù)據(jù)。據(jù)統(tǒng)計(jì)今年 3 月份在線教育用戶(hù)日均在線 時(shí)長(zhǎng),超過(guò) 200 萬(wàn)天。如此海量的數(shù)據(jù)為行業(yè)的智能化發(fā)展提供了良好的土壤,推動(dòng)了教學(xué)內(nèi)容、課程營(yíng)銷(xiāo)、師資 管理、質(zhì)量評(píng)估等智能分析的發(fā)展。流利說(shuō)公司介紹
流利說(shuō)是世界領(lǐng)先的科技驅(qū)動(dòng)的教育公司,作為智能教育的倡行者,流利說(shuō)擁有一支業(yè)內(nèi)領(lǐng)先的人工智能團(tuán)隊(duì),經(jīng)過(guò)多年積累,流利說(shuō)已擁有巨型的“中國(guó)人英語(yǔ)語(yǔ)音數(shù)據(jù)庫(kù)”,累積實(shí)現(xiàn)記錄大約 37 億分鐘的對(duì)話和 504 億句錄音。
2013年流利說(shuō)推出了第一款產(chǎn)品“英語(yǔ)流利說(shuō)”,集成了語(yǔ)音識(shí)別、打分和自適應(yīng)學(xué)習(xí)等多種核心技術(shù)。具有上下文情景對(duì)話、發(fā)音指導(dǎo)課程等豐富內(nèi)容,并提供人工智能英語(yǔ)老師和游戲化的學(xué)習(xí)體驗(yàn),為用戶(hù)在英語(yǔ)學(xué)習(xí)中獲得更多樂(lè)趣。這款有趣又有效的產(chǎn)品很快就占領(lǐng)了當(dāng)時(shí)的市場(chǎng)并獲得了用戶(hù)的高度認(rèn)可。
但業(yè)務(wù)快速發(fā)展,用戶(hù)數(shù)大幅度增長(zhǎng),平臺(tái)的用戶(hù)數(shù)量已從當(dāng)初的百萬(wàn)級(jí),增長(zhǎng)至過(guò)億,因此業(yè)務(wù)的高低峰期數(shù)據(jù)流量變化、業(yè)務(wù)復(fù)雜度和分析難度都給給 IT 架構(gòu)帶來(lái)了巨大的挑戰(zhàn)。流利說(shuō)統(tǒng)一監(jiān)控平臺(tái)的相關(guān)挑戰(zhàn)
作為一個(gè)沒(méi)有單獨(dú)運(yùn)維部門(mén)的公司,基礎(chǔ)平臺(tái)的統(tǒng)一監(jiān)控平臺(tái)主要由cloud-infra團(tuán)隊(duì)的研發(fā)來(lái)完成,而團(tuán)隊(duì)的核心訴求也不僅僅是SLA、性能的監(jiān)控、告警和提供問(wèn)題定位的相關(guān)數(shù)據(jù),還包括cloud-infra的技術(shù)價(jià)值運(yùn)營(yíng),例如利用率、成本節(jié)約、業(yè)務(wù)關(guān)系網(wǎng)絡(luò)等。在這些核心訴求下,對(duì)于統(tǒng)一監(jiān)控平臺(tái)會(huì)具高的要求:
1.采集、監(jiān)控各種異構(gòu)數(shù)據(jù)源,包括K8s、ECS上的機(jī)器指標(biāo)、利用率、Istio相關(guān)的調(diào)用日志、自建中間件相關(guān)指標(biāo)、云服務(wù)提供的指標(biāo)、業(yè)務(wù)的Trace數(shù)據(jù)等,此外還要包括各類(lèi)成本數(shù)據(jù)的實(shí)時(shí)采集。
2.各類(lèi)資源的動(dòng)態(tài)發(fā)現(xiàn)與動(dòng)態(tài)采集,包括組織關(guān)系等部門(mén)相關(guān)的數(shù)據(jù)也需要實(shí)時(shí)更新,以便能夠?qū)崟r(shí)反饋出最準(zhǔn)確的相關(guān)指標(biāo)和歸屬關(guān)系。
3.大規(guī)模的數(shù)據(jù)存儲(chǔ)與分析,由于流利說(shuō)的業(yè)務(wù)規(guī)模大,使用的各類(lèi)云資源以及業(yè)務(wù)產(chǎn)生的數(shù)據(jù)量非常巨大,每天在數(shù)十TB,方案需要滿足在此規(guī)模上的實(shí)時(shí)分析和展現(xiàn)的能力。
4.監(jiān)控平臺(tái)負(fù)責(zé)的是穩(wěn)定性問(wèn)題,本身的穩(wěn)定性也需要做好,因此需要消除各個(gè)部分的單點(diǎn)問(wèn)題,并且具備異??焖倩謴?fù)的能力。技術(shù)選型
統(tǒng)一監(jiān)控平臺(tái)不僅僅是時(shí)序相關(guān)的數(shù)據(jù),其中非常核心的業(yè)務(wù)可用性數(shù)據(jù)需要通過(guò)各類(lèi)日志進(jìn)行計(jì)算和分析,因此整體上需要選擇Logs和Metrics兩種數(shù)據(jù)方案。對(duì)于這兩類(lèi)數(shù)據(jù)都分別有不同的社區(qū)方案或商業(yè)方案,例如ES、Loki、SLS、Prometheus、OpenTSDB、InfluxDB等。最終日志方案選擇了阿里云SLS,時(shí)序方案選擇了Prometheus SLS,主要的原因如下:
1.SLS具備各類(lèi)數(shù)據(jù)統(tǒng)一存儲(chǔ)、分析的能力,能夠在SLS上去關(guān)聯(lián)到Metrics、Logs數(shù)據(jù),這是其他平臺(tái)所不具備的
2.SLS平臺(tái)能夠適應(yīng)非常大的數(shù)據(jù)規(guī)模,相比ES來(lái)說(shuō)性能要好很多,也是免運(yùn)維的服務(wù),省去了自己維護(hù)ES高可靠的問(wèn)題
3.時(shí)序方案以Prometheus為主,Prometheus的生態(tài)非常完善,而且PromQL使用起來(lái)也簡(jiǎn)介。SLS的時(shí)序庫(kù)可以作為Prometheus的遠(yuǎn)端高可靠存儲(chǔ),能夠解決Prometheus的可靠性問(wèn)題
4.SLS的方案中有數(shù)據(jù)加工的功能,可以和外部的數(shù)據(jù)源去做Join分析和加工,能夠更好的來(lái)處理各種復(fù)雜的日志,把日志加上catalog相關(guān)的信息整體架構(gòu)

當(dāng)前流利說(shuō)統(tǒng)一監(jiān)控平臺(tái)的架構(gòu)如上圖所示:1.為了能夠?qū)崿F(xiàn)自動(dòng)化,我們開(kāi)發(fā)了一套適用于云上場(chǎng)景的IaaS、PaaS資源動(dòng)態(tài)發(fā)現(xiàn)的機(jī)制,能夠?qū)崟r(shí)將新購(gòu)買(mǎi)、創(chuàng)建的資源加入到監(jiān)控、采集中,避免大部分的人工操作2.日志相關(guān):
?不同業(yè)務(wù)的日志直接通過(guò)SLS的Logtail采集到不同的日志庫(kù)中
?并不是所有的日志都需要長(zhǎng)時(shí)間存儲(chǔ)和索引,因此我們對(duì)于日志進(jìn)行歸類(lèi),對(duì)于其中需要有審計(jì)需求的,會(huì)投遞到OSS上做長(zhǎng)期存儲(chǔ);業(yè)務(wù)排查問(wèn)題的日志只保存2周,并開(kāi)啟全文索引;AccessLog只開(kāi)啟部分字段的索引,可以節(jié)省很多的索引費(fèi)用。
?對(duì)于需要計(jì)算SLA、PXX指標(biāo)的NGINX訪問(wèn)日志,會(huì)使用數(shù)據(jù)加工,配合已經(jīng)在RDS中存儲(chǔ)的一些映射規(guī)則、部門(mén)、應(yīng)用等Catalog信息,將NGINX訪問(wèn)日志中的URL映射成對(duì)應(yīng)的部門(mén)、應(yīng)用、方法等。3.監(jiān)控相關(guān)
?監(jiān)控方案選擇了Prometheus,針對(duì)于流利說(shuō)的場(chǎng)景,我們開(kāi)發(fā)了一些Exporter用于從各類(lèi)云上產(chǎn)品、自建組件中獲取Metrics
?同時(shí)為了更好的使用Prometheus,和內(nèi)部的CICD系統(tǒng)集成,我們?cè)赑rometheus上增加了一個(gè)Sidecar,監(jiān)聽(tīng)Git倉(cāng)庫(kù)的變更,并根據(jù)變更動(dòng)態(tài)的Reload Prometheus配置
?Prometheus上為了提高查詢(xún)速度,配置了各類(lèi)Recording Rule,這些都統(tǒng)一使用Git管理
?AlertManager的告警直接對(duì)接內(nèi)部的告警中心,可以做排版、升級(jí)等高級(jí)功能
?為了解決Prometheus單點(diǎn)的問(wèn)題以及后面和Catalog進(jìn)行關(guān)聯(lián)分析的問(wèn)題,我們使用SLS的時(shí)序庫(kù),直接讓Prometheus Remote Write到SLS的時(shí)序庫(kù)中4.指標(biāo)計(jì)算
?核心指標(biāo)的計(jì)算一部分來(lái)源于NGINX的AccessLog,從入口就可以拿到各個(gè)業(yè)務(wù)的QPS、錯(cuò)誤率、Latency(平均、PXX等),對(duì)于業(yè)務(wù)沒(méi)有任何的侵入性
?資源利用率、中間件、基礎(chǔ)設(shè)施等指標(biāo)來(lái)源于Prometheus寫(xiě)入的時(shí)序庫(kù),基于Catalog可以聚合計(jì)算出每個(gè)部門(mén)、業(yè)務(wù)的相關(guān)指標(biāo)
?計(jì)算完成后的指標(biāo)信息,由于數(shù)據(jù)量非常小,可以很容易的存儲(chǔ)在MySQL、ES中,并且投遞一份到OSS上備份相關(guān)成果
目前這套監(jiān)控平臺(tái)幾乎承載了公司所有的核心監(jiān)控,在上線后一直穩(wěn)定運(yùn)行,并且在各類(lèi)活動(dòng)期間也能夠非常輕松的應(yīng)對(duì)數(shù)據(jù)量的突增。整體的業(yè)務(wù)價(jià)值主要體現(xiàn)在:
1.監(jiān)控:監(jiān)控的第一價(jià)值是做各類(lèi)的監(jiān)控和告警,尤其是SLA相關(guān),由于將數(shù)據(jù)已經(jīng)關(guān)聯(lián)到了具體的部門(mén)和業(yè)務(wù)應(yīng)用,可以很容易的得到每個(gè)部門(mén)、應(yīng)用的SLA,并進(jìn)行公司范圍內(nèi)統(tǒng)一的推進(jìn)和改進(jìn)
2.問(wèn)題排查與故障隔離:基于Istio的訪問(wèn)日志,配合Catalog信息,可以計(jì)算出每個(gè)應(yīng)用的調(diào)用關(guān)系,因此可以實(shí)時(shí)的生成業(yè)務(wù)關(guān)系網(wǎng)格,并能夠知道每個(gè)關(guān)系(邊)的質(zhì)量情況。了解到業(yè)務(wù)的關(guān)系后,在出現(xiàn)問(wèn)題的時(shí)候也可以快速的定位根源和故障隔離
3.FinOps:在Cloud Infra部門(mén),被挑戰(zhàn)最多的就是開(kāi)銷(xiāo)問(wèn)題。因此成本優(yōu)化也是我們的一個(gè)核心工作,主要的做法是:計(jì)算每個(gè)部門(mén)、團(tuán)隊(duì)的資源利用率,包括平均利用率以及各類(lèi)PXX的利用率(如下表格所示),以此能夠判斷每個(gè)部門(mén)的資源使用情況,推進(jìn)各部門(mén)優(yōu)化成本。

流利說(shuō)統(tǒng)一監(jiān)控背后的技術(shù)
流利說(shuō)統(tǒng)一監(jiān)控基于阿里云SLS進(jìn)行構(gòu)建,SLS定位為云原生觀測(cè)分析平臺(tái),為L(zhǎng)og/Metric/Trace等數(shù)據(jù)提供大規(guī)模、低成本、實(shí)時(shí)平臺(tái)化服務(wù)。一站式提供數(shù)據(jù)采集、加工、分析、告警可視化與投遞功能,全面提升研發(fā)、運(yùn)維、運(yùn)營(yíng)和安全等場(chǎng)景數(shù)字化能力。其中統(tǒng)一監(jiān)控使用到了多種SLS的核心功能,主要包括:全方位日志采集
SLS支持Log/Metric/Trace統(tǒng)一采集,支持服務(wù)器/Kubernetes/應(yīng)用/移動(dòng)設(shè)備/網(wǎng)頁(yè)/IoT等數(shù)據(jù)源接入,支持阿里云產(chǎn)品/開(kāi)源系統(tǒng)/云間/云下日志數(shù)據(jù)接入,核心特點(diǎn)有:

SLS時(shí)序存儲(chǔ)從設(shè)計(jì)之初就是為了解決阿里內(nèi)部與眾多頭部企業(yè)客戶(hù)的時(shí)序存儲(chǔ)需求,并借助于阿里內(nèi)部多年的技術(shù)積累,使之可以適應(yīng)絕大部分企業(yè)級(jí)時(shí)序監(jiān)控/分析訴求。SLS時(shí)序存儲(chǔ)的特點(diǎn)主要有:
1.豐富上下游:數(shù)據(jù)接入上SLS支持眾多采集方式,包括各類(lèi)開(kāi)源Agent以及阿里云內(nèi)部的監(jiān)控?cái)?shù)據(jù)通道;同時(shí)存儲(chǔ)的時(shí)序數(shù)據(jù)支持對(duì)接各類(lèi)的流計(jì)算、離線計(jì)算引擎,數(shù)據(jù)完全開(kāi)放
2.高性能:SLS存儲(chǔ)計(jì)算分離架構(gòu)充分發(fā)揮集群能力,尤其在大量數(shù)據(jù)下端對(duì)端的速度提升顯著
3.免運(yùn)維:SLS的時(shí)序存儲(chǔ)完全是服務(wù)化,無(wú)需用戶(hù)自己去運(yùn)維實(shí)例,而且所有數(shù)據(jù)都是3副本高可靠存儲(chǔ),不用擔(dān)心數(shù)據(jù)的可靠性問(wèn)題
4.開(kāi)源友好:SLS的時(shí)序存儲(chǔ)原生支持Prometheus的寫(xiě)入和查詢(xún),并支持SQL92的分析方法,可以原生對(duì)接Grafana等可視化方案
5.智能:SLS提供了各種AIOps算法,例如多周期估算、預(yù)測(cè)、異常檢測(cè)、時(shí)序分類(lèi)等各類(lèi)時(shí)序算法,可以基于這些算法快速構(gòu)建適應(yīng)于公司業(yè)務(wù)的智能報(bào)警、診斷平臺(tái)實(shí)時(shí)數(shù)據(jù)分析

查詢(xún)分析提供關(guān)鍵詞、SQL92、AIOps函數(shù)等多種方式,支持面向文本 結(jié)構(gòu)化數(shù)據(jù)實(shí)時(shí)查詢(xún)分析,異常巡檢與智能分析。主要特點(diǎn)如下:
1.高性能:秒級(jí)分析十億級(jí)數(shù)據(jù),且完整支持SQL、PromQL等分析接口,HTTP、Kafka、JDBC、Prometheus等協(xié)議
2.穩(wěn)定可靠:企業(yè)級(jí)設(shè)計(jì),多租戶(hù)隔離,PB級(jí)容量設(shè)計(jì),數(shù)萬(wàn)企業(yè)用戶(hù)選擇
3.智能:經(jīng)過(guò)阿里經(jīng)濟(jì)體實(shí)踐的AIOps能力,支持智能異常巡檢與根因分析數(shù)據(jù)加工

數(shù)據(jù)加工通過(guò)靈活語(yǔ)法,在不編寫(xiě)代碼情況下支持各種復(fù)雜數(shù)據(jù)提取、解析、富化、分發(fā)等需求,支持結(jié)構(gòu)化分析。數(shù)據(jù)加工的主要特點(diǎn)如下:
1.靈活:提供豐富算子、開(kāi)箱即用的場(chǎng)景化UDF(Syslog、非標(biāo)準(zhǔn)json、AccessLog UA/URI/IP解析等)。可擴(kuò)展語(yǔ)法應(yīng)對(duì)各種復(fù)雜格式
2.免運(yùn)維:全托管云上服務(wù),無(wú)須投入額外運(yùn)維資源。支持自動(dòng)根據(jù)流量彈性伸縮
3.可擴(kuò)展:支持多層嵌套、分流等邏輯,支持復(fù)雜的數(shù)據(jù)分派與編排需求在云原生時(shí)代,數(shù)字化正在各行業(yè)推動(dòng)業(yè)務(wù)創(chuàng)新。只有提升用戶(hù)體驗(yàn)、加速創(chuàng)新、更新基礎(chǔ)設(shè)施與架構(gòu)、利用好多樣化的數(shù)據(jù),才能在整體大環(huán)境中脫穎而出。阿里云推出的智能運(yùn)維平臺(tái),不僅僅是要幫助工程師減少工作量,更多的是希望讓運(yùn)維工程師們從各種機(jī)械化的工作中解脫。我們將會(huì)包攬所有的“臟活累活”,讓故障的時(shí)間大幅縮小,讓運(yùn)維人將更多創(chuàng)造力,放在數(shù)字創(chuàng)新以及企業(yè)業(yè)務(wù)創(chuàng)新上,為企業(yè)提供提供更優(yōu)的競(jìng)爭(zhēng)力。
隨著 90 年代互聯(lián)網(wǎng)的引入,在線教育產(chǎn)品也依托于互聯(lián)網(wǎng)誕生。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,在線教育產(chǎn)品也開(kāi) 始了出現(xiàn)新的模式。在線教育從最初單純的文字形式,開(kāi)始往圖片、音頻方面開(kāi)始發(fā)展。教育在線化也進(jìn)一步促進(jìn)了數(shù)據(jù)化的發(fā)展,內(nèi)容作為教育企業(yè)的核心資產(chǎn),無(wú)論是數(shù)據(jù)化程度還是數(shù)據(jù)化規(guī)模都在不斷提升。同時(shí)用戶(hù)使用時(shí)長(zhǎng)的提升,又為教育 AI 提供了大量源數(shù)據(jù)。據(jù)統(tǒng)計(jì)今年 3 月份在線教育用戶(hù)日均在線 時(shí)長(zhǎng),超過(guò) 200 萬(wàn)天。如此海量的數(shù)據(jù)為行業(yè)的智能化發(fā)展提供了良好的土壤,推動(dòng)了教學(xué)內(nèi)容、課程營(yíng)銷(xiāo)、師資 管理、質(zhì)量評(píng)估等智能分析的發(fā)展。流利說(shuō)公司介紹
流利說(shuō)是世界領(lǐng)先的科技驅(qū)動(dòng)的教育公司,作為智能教育的倡行者,流利說(shuō)擁有一支業(yè)內(nèi)領(lǐng)先的人工智能團(tuán)隊(duì),經(jīng)過(guò)多年積累,流利說(shuō)已擁有巨型的“中國(guó)人英語(yǔ)語(yǔ)音數(shù)據(jù)庫(kù)”,累積實(shí)現(xiàn)記錄大約 37 億分鐘的對(duì)話和 504 億句錄音。
2013年流利說(shuō)推出了第一款產(chǎn)品“英語(yǔ)流利說(shuō)”,集成了語(yǔ)音識(shí)別、打分和自適應(yīng)學(xué)習(xí)等多種核心技術(shù)。具有上下文情景對(duì)話、發(fā)音指導(dǎo)課程等豐富內(nèi)容,并提供人工智能英語(yǔ)老師和游戲化的學(xué)習(xí)體驗(yàn),為用戶(hù)在英語(yǔ)學(xué)習(xí)中獲得更多樂(lè)趣。這款有趣又有效的產(chǎn)品很快就占領(lǐng)了當(dāng)時(shí)的市場(chǎng)并獲得了用戶(hù)的高度認(rèn)可。
但業(yè)務(wù)快速發(fā)展,用戶(hù)數(shù)大幅度增長(zhǎng),平臺(tái)的用戶(hù)數(shù)量已從當(dāng)初的百萬(wàn)級(jí),增長(zhǎng)至過(guò)億,因此業(yè)務(wù)的高低峰期數(shù)據(jù)流量變化、業(yè)務(wù)復(fù)雜度和分析難度都給給 IT 架構(gòu)帶來(lái)了巨大的挑戰(zhàn)。流利說(shuō)統(tǒng)一監(jiān)控平臺(tái)的相關(guān)挑戰(zhàn)
作為一個(gè)沒(méi)有單獨(dú)運(yùn)維部門(mén)的公司,基礎(chǔ)平臺(tái)的統(tǒng)一監(jiān)控平臺(tái)主要由cloud-infra團(tuán)隊(duì)的研發(fā)來(lái)完成,而團(tuán)隊(duì)的核心訴求也不僅僅是SLA、性能的監(jiān)控、告警和提供問(wèn)題定位的相關(guān)數(shù)據(jù),還包括cloud-infra的技術(shù)價(jià)值運(yùn)營(yíng),例如利用率、成本節(jié)約、業(yè)務(wù)關(guān)系網(wǎng)絡(luò)等。在這些核心訴求下,對(duì)于統(tǒng)一監(jiān)控平臺(tái)會(huì)具高的要求:
1.采集、監(jiān)控各種異構(gòu)數(shù)據(jù)源,包括K8s、ECS上的機(jī)器指標(biāo)、利用率、Istio相關(guān)的調(diào)用日志、自建中間件相關(guān)指標(biāo)、云服務(wù)提供的指標(biāo)、業(yè)務(wù)的Trace數(shù)據(jù)等,此外還要包括各類(lèi)成本數(shù)據(jù)的實(shí)時(shí)采集。
2.各類(lèi)資源的動(dòng)態(tài)發(fā)現(xiàn)與動(dòng)態(tài)采集,包括組織關(guān)系等部門(mén)相關(guān)的數(shù)據(jù)也需要實(shí)時(shí)更新,以便能夠?qū)崟r(shí)反饋出最準(zhǔn)確的相關(guān)指標(biāo)和歸屬關(guān)系。
3.大規(guī)模的數(shù)據(jù)存儲(chǔ)與分析,由于流利說(shuō)的業(yè)務(wù)規(guī)模大,使用的各類(lèi)云資源以及業(yè)務(wù)產(chǎn)生的數(shù)據(jù)量非常巨大,每天在數(shù)十TB,方案需要滿足在此規(guī)模上的實(shí)時(shí)分析和展現(xiàn)的能力。
4.監(jiān)控平臺(tái)負(fù)責(zé)的是穩(wěn)定性問(wèn)題,本身的穩(wěn)定性也需要做好,因此需要消除各個(gè)部分的單點(diǎn)問(wèn)題,并且具備異??焖倩謴?fù)的能力。技術(shù)選型
統(tǒng)一監(jiān)控平臺(tái)不僅僅是時(shí)序相關(guān)的數(shù)據(jù),其中非常核心的業(yè)務(wù)可用性數(shù)據(jù)需要通過(guò)各類(lèi)日志進(jìn)行計(jì)算和分析,因此整體上需要選擇Logs和Metrics兩種數(shù)據(jù)方案。對(duì)于這兩類(lèi)數(shù)據(jù)都分別有不同的社區(qū)方案或商業(yè)方案,例如ES、Loki、SLS、Prometheus、OpenTSDB、InfluxDB等。最終日志方案選擇了阿里云SLS,時(shí)序方案選擇了Prometheus SLS,主要的原因如下:
1.SLS具備各類(lèi)數(shù)據(jù)統(tǒng)一存儲(chǔ)、分析的能力,能夠在SLS上去關(guān)聯(lián)到Metrics、Logs數(shù)據(jù),這是其他平臺(tái)所不具備的
2.SLS平臺(tái)能夠適應(yīng)非常大的數(shù)據(jù)規(guī)模,相比ES來(lái)說(shuō)性能要好很多,也是免運(yùn)維的服務(wù),省去了自己維護(hù)ES高可靠的問(wèn)題
3.時(shí)序方案以Prometheus為主,Prometheus的生態(tài)非常完善,而且PromQL使用起來(lái)也簡(jiǎn)介。SLS的時(shí)序庫(kù)可以作為Prometheus的遠(yuǎn)端高可靠存儲(chǔ),能夠解決Prometheus的可靠性問(wèn)題
4.SLS的方案中有數(shù)據(jù)加工的功能,可以和外部的數(shù)據(jù)源去做Join分析和加工,能夠更好的來(lái)處理各種復(fù)雜的日志,把日志加上catalog相關(guān)的信息整體架構(gòu)

當(dāng)前流利說(shuō)統(tǒng)一監(jiān)控平臺(tái)的架構(gòu)如上圖所示:1.為了能夠?qū)崿F(xiàn)自動(dòng)化,我們開(kāi)發(fā)了一套適用于云上場(chǎng)景的IaaS、PaaS資源動(dòng)態(tài)發(fā)現(xiàn)的機(jī)制,能夠?qū)崟r(shí)將新購(gòu)買(mǎi)、創(chuàng)建的資源加入到監(jiān)控、采集中,避免大部分的人工操作2.日志相關(guān):
?不同業(yè)務(wù)的日志直接通過(guò)SLS的Logtail采集到不同的日志庫(kù)中
?并不是所有的日志都需要長(zhǎng)時(shí)間存儲(chǔ)和索引,因此我們對(duì)于日志進(jìn)行歸類(lèi),對(duì)于其中需要有審計(jì)需求的,會(huì)投遞到OSS上做長(zhǎng)期存儲(chǔ);業(yè)務(wù)排查問(wèn)題的日志只保存2周,并開(kāi)啟全文索引;AccessLog只開(kāi)啟部分字段的索引,可以節(jié)省很多的索引費(fèi)用。
?對(duì)于需要計(jì)算SLA、PXX指標(biāo)的NGINX訪問(wèn)日志,會(huì)使用數(shù)據(jù)加工,配合已經(jīng)在RDS中存儲(chǔ)的一些映射規(guī)則、部門(mén)、應(yīng)用等Catalog信息,將NGINX訪問(wèn)日志中的URL映射成對(duì)應(yīng)的部門(mén)、應(yīng)用、方法等。3.監(jiān)控相關(guān)
?監(jiān)控方案選擇了Prometheus,針對(duì)于流利說(shuō)的場(chǎng)景,我們開(kāi)發(fā)了一些Exporter用于從各類(lèi)云上產(chǎn)品、自建組件中獲取Metrics
?同時(shí)為了更好的使用Prometheus,和內(nèi)部的CICD系統(tǒng)集成,我們?cè)赑rometheus上增加了一個(gè)Sidecar,監(jiān)聽(tīng)Git倉(cāng)庫(kù)的變更,并根據(jù)變更動(dòng)態(tài)的Reload Prometheus配置
?Prometheus上為了提高查詢(xún)速度,配置了各類(lèi)Recording Rule,這些都統(tǒng)一使用Git管理
?AlertManager的告警直接對(duì)接內(nèi)部的告警中心,可以做排版、升級(jí)等高級(jí)功能
?為了解決Prometheus單點(diǎn)的問(wèn)題以及后面和Catalog進(jìn)行關(guān)聯(lián)分析的問(wèn)題,我們使用SLS的時(shí)序庫(kù),直接讓Prometheus Remote Write到SLS的時(shí)序庫(kù)中4.指標(biāo)計(jì)算
?核心指標(biāo)的計(jì)算一部分來(lái)源于NGINX的AccessLog,從入口就可以拿到各個(gè)業(yè)務(wù)的QPS、錯(cuò)誤率、Latency(平均、PXX等),對(duì)于業(yè)務(wù)沒(méi)有任何的侵入性
?資源利用率、中間件、基礎(chǔ)設(shè)施等指標(biāo)來(lái)源于Prometheus寫(xiě)入的時(shí)序庫(kù),基于Catalog可以聚合計(jì)算出每個(gè)部門(mén)、業(yè)務(wù)的相關(guān)指標(biāo)
?計(jì)算完成后的指標(biāo)信息,由于數(shù)據(jù)量非常小,可以很容易的存儲(chǔ)在MySQL、ES中,并且投遞一份到OSS上備份相關(guān)成果
目前這套監(jiān)控平臺(tái)幾乎承載了公司所有的核心監(jiān)控,在上線后一直穩(wěn)定運(yùn)行,并且在各類(lèi)活動(dòng)期間也能夠非常輕松的應(yīng)對(duì)數(shù)據(jù)量的突增。整體的業(yè)務(wù)價(jià)值主要體現(xiàn)在:
1.監(jiān)控:監(jiān)控的第一價(jià)值是做各類(lèi)的監(jiān)控和告警,尤其是SLA相關(guān),由于將數(shù)據(jù)已經(jīng)關(guān)聯(lián)到了具體的部門(mén)和業(yè)務(wù)應(yīng)用,可以很容易的得到每個(gè)部門(mén)、應(yīng)用的SLA,并進(jìn)行公司范圍內(nèi)統(tǒng)一的推進(jìn)和改進(jìn)
2.問(wèn)題排查與故障隔離:基于Istio的訪問(wèn)日志,配合Catalog信息,可以計(jì)算出每個(gè)應(yīng)用的調(diào)用關(guān)系,因此可以實(shí)時(shí)的生成業(yè)務(wù)關(guān)系網(wǎng)格,并能夠知道每個(gè)關(guān)系(邊)的質(zhì)量情況。了解到業(yè)務(wù)的關(guān)系后,在出現(xiàn)問(wèn)題的時(shí)候也可以快速的定位根源和故障隔離
3.FinOps:在Cloud Infra部門(mén),被挑戰(zhàn)最多的就是開(kāi)銷(xiāo)問(wèn)題。因此成本優(yōu)化也是我們的一個(gè)核心工作,主要的做法是:計(jì)算每個(gè)部門(mén)、團(tuán)隊(duì)的資源利用率,包括平均利用率以及各類(lèi)PXX的利用率(如下表格所示),以此能夠判斷每個(gè)部門(mén)的資源使用情況,推進(jìn)各部門(mén)優(yōu)化成本。

流利說(shuō)統(tǒng)一監(jiān)控背后的技術(shù)
流利說(shuō)統(tǒng)一監(jiān)控基于阿里云SLS進(jìn)行構(gòu)建,SLS定位為云原生觀測(cè)分析平臺(tái),為L(zhǎng)og/Metric/Trace等數(shù)據(jù)提供大規(guī)模、低成本、實(shí)時(shí)平臺(tái)化服務(wù)。一站式提供數(shù)據(jù)采集、加工、分析、告警可視化與投遞功能,全面提升研發(fā)、運(yùn)維、運(yùn)營(yíng)和安全等場(chǎng)景數(shù)字化能力。其中統(tǒng)一監(jiān)控使用到了多種SLS的核心功能,主要包括:全方位日志采集
SLS支持Log/Metric/Trace統(tǒng)一采集,支持服務(wù)器/Kubernetes/應(yīng)用/移動(dòng)設(shè)備/網(wǎng)頁(yè)/IoT等數(shù)據(jù)源接入,支持阿里云產(chǎn)品/開(kāi)源系統(tǒng)/云間/云下日志數(shù)據(jù)接入,核心特點(diǎn)有:- 便捷:40 成熟接入方案,多客戶(hù)端統(tǒng)一采集,支持內(nèi)網(wǎng)、公網(wǎng)、全球加速傳輸?shù)榷喾N傳輸方式
- 可靠:阿里經(jīng)濟(jì)體自用基礎(chǔ)設(shè)施,歷經(jīng)多次雙十一,春晚活動(dòng)考驗(yàn)。支持?jǐn)帱c(diǎn)續(xù)傳,可根據(jù)業(yè)務(wù)流量實(shí)現(xiàn)彈性伸縮
- 開(kāi)放:多協(xié)議(HTTP/Syslog/Prometheus/OpenTelemetry)無(wú)縫接入,完整對(duì)接開(kāi)源生態(tài)

SLS時(shí)序存儲(chǔ)從設(shè)計(jì)之初就是為了解決阿里內(nèi)部與眾多頭部企業(yè)客戶(hù)的時(shí)序存儲(chǔ)需求,并借助于阿里內(nèi)部多年的技術(shù)積累,使之可以適應(yīng)絕大部分企業(yè)級(jí)時(shí)序監(jiān)控/分析訴求。SLS時(shí)序存儲(chǔ)的特點(diǎn)主要有:
1.豐富上下游:數(shù)據(jù)接入上SLS支持眾多采集方式,包括各類(lèi)開(kāi)源Agent以及阿里云內(nèi)部的監(jiān)控?cái)?shù)據(jù)通道;同時(shí)存儲(chǔ)的時(shí)序數(shù)據(jù)支持對(duì)接各類(lèi)的流計(jì)算、離線計(jì)算引擎,數(shù)據(jù)完全開(kāi)放
2.高性能:SLS存儲(chǔ)計(jì)算分離架構(gòu)充分發(fā)揮集群能力,尤其在大量數(shù)據(jù)下端對(duì)端的速度提升顯著
3.免運(yùn)維:SLS的時(shí)序存儲(chǔ)完全是服務(wù)化,無(wú)需用戶(hù)自己去運(yùn)維實(shí)例,而且所有數(shù)據(jù)都是3副本高可靠存儲(chǔ),不用擔(dān)心數(shù)據(jù)的可靠性問(wèn)題
4.開(kāi)源友好:SLS的時(shí)序存儲(chǔ)原生支持Prometheus的寫(xiě)入和查詢(xún),并支持SQL92的分析方法,可以原生對(duì)接Grafana等可視化方案
5.智能:SLS提供了各種AIOps算法,例如多周期估算、預(yù)測(cè)、異常檢測(cè)、時(shí)序分類(lèi)等各類(lèi)時(shí)序算法,可以基于這些算法快速構(gòu)建適應(yīng)于公司業(yè)務(wù)的智能報(bào)警、診斷平臺(tái)實(shí)時(shí)數(shù)據(jù)分析

查詢(xún)分析提供關(guān)鍵詞、SQL92、AIOps函數(shù)等多種方式,支持面向文本 結(jié)構(gòu)化數(shù)據(jù)實(shí)時(shí)查詢(xún)分析,異常巡檢與智能分析。主要特點(diǎn)如下:
1.高性能:秒級(jí)分析十億級(jí)數(shù)據(jù),且完整支持SQL、PromQL等分析接口,HTTP、Kafka、JDBC、Prometheus等協(xié)議
2.穩(wěn)定可靠:企業(yè)級(jí)設(shè)計(jì),多租戶(hù)隔離,PB級(jí)容量設(shè)計(jì),數(shù)萬(wàn)企業(yè)用戶(hù)選擇
3.智能:經(jīng)過(guò)阿里經(jīng)濟(jì)體實(shí)踐的AIOps能力,支持智能異常巡檢與根因分析數(shù)據(jù)加工

數(shù)據(jù)加工通過(guò)靈活語(yǔ)法,在不編寫(xiě)代碼情況下支持各種復(fù)雜數(shù)據(jù)提取、解析、富化、分發(fā)等需求,支持結(jié)構(gòu)化分析。數(shù)據(jù)加工的主要特點(diǎn)如下:
1.靈活:提供豐富算子、開(kāi)箱即用的場(chǎng)景化UDF(Syslog、非標(biāo)準(zhǔn)json、AccessLog UA/URI/IP解析等)。可擴(kuò)展語(yǔ)法應(yīng)對(duì)各種復(fù)雜格式
2.免運(yùn)維:全托管云上服務(wù),無(wú)須投入額外運(yùn)維資源。支持自動(dòng)根據(jù)流量彈性伸縮
3.可擴(kuò)展:支持多層嵌套、分流等邏輯,支持復(fù)雜的數(shù)據(jù)分派與編排需求在云原生時(shí)代,數(shù)字化正在各行業(yè)推動(dòng)業(yè)務(wù)創(chuàng)新。只有提升用戶(hù)體驗(yàn)、加速創(chuàng)新、更新基礎(chǔ)設(shè)施與架構(gòu)、利用好多樣化的數(shù)據(jù),才能在整體大環(huán)境中脫穎而出。阿里云推出的智能運(yùn)維平臺(tái),不僅僅是要幫助工程師減少工作量,更多的是希望讓運(yùn)維工程師們從各種機(jī)械化的工作中解脫。我們將會(huì)包攬所有的“臟活累活”,讓故障的時(shí)間大幅縮小,讓運(yùn)維人將更多創(chuàng)造力,放在數(shù)字創(chuàng)新以及企業(yè)業(yè)務(wù)創(chuàng)新上,為企業(yè)提供提供更優(yōu)的競(jìng)爭(zhēng)力。





