上海阿里云代理商:阿里云 ACK 容器服務(wù)生產(chǎn)級(jí)可觀測(cè)體系建設(shè)實(shí)踐
【聚搜云】(www.gzjcsc123.com)是上海聚搜信息技術(shù)有限公司旗下品牌,坐落于魔都上海,服務(wù)于全球、2019年成為阿里云代理商生態(tài)合作伙伴。與阿里云代理商、騰訊云、華為云、西部數(shù)碼、美橙互聯(lián)、AWS亞馬遜云國(guó)際站代理商、聚搜云,長(zhǎng)期戰(zhàn)略合作的計(jì)劃!阿里云國(guó)際站代理商專業(yè)的云服務(wù)商!
作者:馮詩(shī)淳(行疾)
ACK 可觀測(cè)體系介紹
全景概要介紹
上圖為 ACK 可觀測(cè)體系全景圖金字塔,從上至下可分為四層:
最上層是最接近用戶業(yè)務(wù)的 Business Monitoring,包括用戶業(yè)務(wù)的前端的流量、PV、前端性能、JS 響應(yīng)速度等監(jiān)控。通過(guò)容器服務(wù)的 IngressDashboard 來(lái)監(jiān)測(cè) Ingress 的請(qǐng)求量以及請(qǐng)求的狀態(tài),用戶可以定制業(yè)務(wù)日志,通過(guò)容器服務(wù)的日志監(jiān)控來(lái)實(shí)現(xiàn)業(yè)務(wù)的自定義監(jiān)控。
第二層是 Application Performance Monitoring,包括用戶的應(yīng)用監(jiān)控,由 ARMS APM 產(chǎn)品提供用戶Java Profiling 和 Tracing等能力,也支持 OpenTracing和 OpenTelemetric 協(xié)議的多語(yǔ)言監(jiān)控方案。
第三層是 Container Monitoring,包括容器的集群資源、容器 runtime 層、容器引擎以及容器集群的穩(wěn)定性。使用阿里云 Prometheus 在一張 Global view 的大盤(pán)中展示不同集群層面的資源應(yīng)用,包括性能、水位、云資源,也包括事件體系和日志體系,由事件中心和日志中心覆蓋。
最下層是 Infrastructure Monitoring,包括不同的云資源、虛擬化層、操作系統(tǒng)內(nèi)核層等。容器層和基礎(chǔ)架構(gòu)層都可以使用基于 eBPF 的無(wú)侵入式架構(gòu)和 K8s 監(jiān)控能力做網(wǎng)絡(luò)和調(diào)用的 tracing。
可觀測(cè)體系的每一層都和可觀測(cè)的三大支柱 Logging、Tracing、Metrics 有不同程度的映射。
場(chǎng)景一:異常診斷場(chǎng)景的可觀測(cè)能力實(shí)踐
用戶的異常診斷案例
早上 9 點(diǎn)多業(yè)務(wù)流量激增時(shí)出現(xiàn)了異常診斷,收到容器報(bào)警提示某 Pod Down 影響業(yè)務(wù)流量。用戶收到報(bào)警后快速反應(yīng),對(duì)核心業(yè)務(wù)的 Pod 進(jìn)行重啟或擴(kuò)容,查找問(wèn)題根因。首先通過(guò) IngressDashboard 從入口流量自上而下分析,發(fā)現(xiàn)對(duì)外業(yè)務(wù)的訪問(wèn)成功率下降以及出現(xiàn) 4XX 返回碼的請(qǐng)求,說(shuō)明這次異常影響了用戶業(yè)務(wù)。再?gòu)馁Y源以及負(fù)載層面分析,可以發(fā)現(xiàn)是由于朝九晚五的流量導(dǎo)致水位負(fù)載,在當(dāng)天早上 9 點(diǎn)時(shí)存在與故障對(duì)齊的明顯水位飆升,這也是故障所在。
系統(tǒng)第一時(shí)間報(bào)警核心業(yè)務(wù)的 Pod 定位,結(jié)合業(yè)務(wù)日志進(jìn)行分析,加上 ARMS Java 的 APM 應(yīng)用監(jiān)控,定位到產(chǎn)生緩存 bug 是由于早上 9 點(diǎn)鐘業(yè)務(wù)流量飆升引發(fā)了 bug 最后造成頻繁的數(shù)據(jù)庫(kù)讀寫(xiě),調(diào)用鏈也反映可能出現(xiàn)了數(shù)據(jù)庫(kù)的慢查詢,最后通過(guò)修復(fù) bug 徹底閉環(huán)整個(gè)異常。
上述流程是非常典型的貫穿了整個(gè) ACK 可觀測(cè)不同能力異常診斷的排查過(guò)程,能夠幫助我們更好地理解 ACK 可觀測(cè)體系如何相互協(xié)調(diào)完成工作。
事件體系介紹
社區(qū)的 K8s 中包含了非常成熟的事件體系,提供了應(yīng)用層的事件以及 runtime 層的事件。ACK 可觀測(cè)體系在社區(qū)的事件體系之上,從表層到底層都進(jìn)行了覆蓋和增強(qiáng),做到了可觀測(cè)事件體系的全覆蓋。
? 應(yīng)用異常:對(duì)于 K8s 的應(yīng)用事件提供了用戶灰度發(fā)布以及 HPA 等異常行為的事件監(jiān)控。
? 管控操作事件:增加了集群的管控事件、用戶對(duì)集群的異常操作以及重要變更,甚至包括成本和預(yù)算超標(biāo)等。
? 集群核心組件異常:集群的穩(wěn)定性很大一部分由集群核心組件的健康來(lái)保證。對(duì)于集群核心組件包括 API server、ETCD、Scheduler、CCM 等都做了異常事件的增強(qiáng),出現(xiàn)異常事件能夠第一時(shí)間進(jìn)行觸達(dá)。此外,還包括用戶側(cè)核心組件 addon 事件,比如 Terway、存儲(chǔ)等。
? 集群容器引擎層異常:對(duì)集群容器引擎層做了增強(qiáng),包括了 Container Runtime、Kubelet、Cgroup 等異常。
? 節(jié)點(diǎn)異常:包括 OS/內(nèi)核層異常,比如操作系統(tǒng)內(nèi)核宕機(jī)、操作系統(tǒng)配置的異常等,也包括資源層異常比如網(wǎng)絡(luò)資源異常、存儲(chǔ)資源異常、其他云資源異常等,為容器服務(wù)的運(yùn)維保障及功能更強(qiáng)的覆蓋提供了支持。
ACK 提供了開(kāi)箱即用的事件中心能力,一鍵開(kāi)啟事件中心,即可享受復(fù)雜的事件體系帶來(lái)的強(qiáng)大功能。它提供了預(yù)置的試驗(yàn)中心大盤(pán),能夠?qū)χ匾氖录M(jìn)行突出以及統(tǒng)計(jì),也提供了強(qiáng)大、靈活易用的數(shù)據(jù)分析能力,為后面基于事件驅(qū)動(dòng)的 OPS 體系提供了基礎(chǔ)。ACK K8s 集群更多的是對(duì)資源的生命周期進(jìn)行管控,事件中心也提供了以事件為錨點(diǎn)的資源生命周期的管控能力??梢詫?duì)生命周期中最重要的幾個(gè)時(shí)間點(diǎn)進(jìn)行性能的調(diào)試優(yōu)化以及對(duì)異常 Pod 狀態(tài)快速反應(yīng)。
日志體系介紹
Logging 在 K8s 中的第一個(gè)使用場(chǎng)景是重要流量,如 Ingress 等。ACK 的日志中心默認(rèn)提供了 Ingress 等重要場(chǎng)景的大盤(pán),一鍵接入 Ingress 大盤(pán)后即可快速查看集群 Ingress 流量,此外還包括 PV、UV、應(yīng)用的異常狀態(tài)以及統(tǒng)計(jì),快速清晰,易于應(yīng)用。
第二個(gè)日志使用場(chǎng)景是審計(jì)。集群中的資源經(jīng)常被不同的賬號(hào)訪問(wèn)使用,集群的安全也迫切需要重點(diǎn)關(guān)注。我們提供了審計(jì)日志大盤(pán),可以快速分析集群資源的訪問(wèn)和使用軌跡,針對(duì)未被授權(quán)的訪問(wèn)可進(jìn)行報(bào)警和預(yù)警,為集群提供更安全的環(huán)境。
我們提供了云原生無(wú)侵入式的日志獲取方式,用戶只需通過(guò)簡(jiǎn)單的 CRD 或在 Pod 上打 annotation ,即可將日志采集到日志中心,并享受日志中心多維、強(qiáng)大的分析能力。
Metric 體系介紹
Metrics 體系是做穩(wěn)定性保障和性能調(diào)優(yōu)時(shí)最常用的體系,水位等關(guān)鍵指標(biāo)都能通過(guò)大盤(pán)進(jìn)行直觀展示。產(chǎn)品側(cè)預(yù)置了 ARMS Prometheus 大盤(pán)產(chǎn)品,購(gòu)買(mǎi)了 ACK K8s 集群后,可以一鍵開(kāi)啟 Prometheus 大盤(pán)。此外,體系內(nèi)預(yù)置了重要場(chǎng)景的 Prometheus 大盤(pán),都是經(jīng)過(guò) K8s 上業(yè)務(wù)運(yùn)維成熟經(jīng)驗(yàn)的沉淀。Prometheus 方案涉及到不同的服務(wù),不僅包括容器服務(wù)側(cè)最核心的 K8s 應(yīng)用、網(wǎng)絡(luò)、核心控制面指標(biāo),還包括比如 AI 場(chǎng)景、 GPU 指標(biāo)以及存儲(chǔ) CSI 等外部存儲(chǔ)場(chǎng)景,以及資源的優(yōu)化或成本的優(yōu)化指標(biāo)。
使用統(tǒng)一的 Prometheus 數(shù)據(jù)鏈路方案,不進(jìn)能夠支持容器場(chǎng)景的指標(biāo),也支持不同云產(chǎn)品的指標(biāo)以及云產(chǎn)品上不同中間件的指標(biāo),可以將所有層級(jí)指標(biāo)都在 Prometheus 數(shù)據(jù)鏈路中進(jìn)行統(tǒng)一展示。
ACK 集群控制面的核心組件 API Server、ETCD 、scheduler 、CCM 等也做了指標(biāo)加強(qiáng)。Pro 集群不只負(fù)責(zé)托管這部分核心組件、維護(hù)其 SLA,同時(shí)也會(huì)將透明指標(biāo)性能暴露給用戶,讓用戶使用安心。
? 場(chǎng)景二:穩(wěn)定性保障 - 2022 冬奧會(huì) ACK 助力圓滿平穩(wěn)舉行
指標(biāo)場(chǎng)景是穩(wěn)定性保障的重要支持能力。ACK 非常榮幸地為 2022 年的冬奧會(huì)服務(wù),助力冬奧系統(tǒng)圓滿平穩(wěn)運(yùn)行。
ACK 集群中部署了冬奧會(huì)多個(gè)核心業(yè)務(wù)系統(tǒng),包括冬奧的國(guó)際官網(wǎng)、比賽場(chǎng)館、票務(wù)系統(tǒng)等,為多個(gè)核心系統(tǒng)保駕護(hù)航。核心系統(tǒng)多為 Java 系微服務(wù)架構(gòu),實(shí)際使用時(shí)有近千個(gè) Deployment 實(shí)例。我們通過(guò)引入壓測(cè)的方式進(jìn)行容量評(píng)估,同時(shí)配合為冬奧定制的首屏運(yùn)維大盤(pán),實(shí)時(shí)進(jìn)行應(yīng)用和集群穩(wěn)定性的保障,保證了冬奧訪系統(tǒng)訪問(wèn)的順滑。
? 場(chǎng)景三:生產(chǎn)級(jí)規(guī)模集群穩(wěn)定性保障實(shí)踐
很多用戶的生產(chǎn)系統(tǒng)規(guī)模很大,到達(dá)千級(jí)別節(jié)點(diǎn)的集群規(guī)模后,用戶在集群上會(huì)進(jìn)行密集、大規(guī)模的集群資源訪問(wèn),極易出現(xiàn)集群穩(wěn)定性問(wèn)題。
比如,用戶在大規(guī)模集群中頻繁密集地訪問(wèn)集群資源,首先會(huì)使 API Server 的請(qǐng)求數(shù)較高,API ServerMutating 請(qǐng)求數(shù)也會(huì)處于高位。API Server 負(fù)載過(guò)高會(huì)導(dǎo)致出現(xiàn)丟棄請(qǐng)求的情況,這也是 API Server 的降級(jí)特性,會(huì)影響用戶業(yè)務(wù)的發(fā)布或用戶的變更。
再比如,密集的集群資源訪問(wèn)也可能打滿 API Server 帶寬,API Server 的請(qǐng)求延時(shí) RT 會(huì)升至高位,一次 API 的訪問(wèn)可能需要幾十秒,會(huì)嚴(yán)重影響用戶的業(yè)務(wù),API Server 的只讀請(qǐng)求數(shù)也會(huì)飆升。
我們提供了 control plane 核心組件的監(jiān)控大盤(pán),可以快速發(fā)現(xiàn) API Server 的水位和請(qǐng)求響應(yīng)時(shí)間的延時(shí)問(wèn)題,然后根據(jù) API Server 的訪問(wèn)日志快速定位是哪個(gè)應(yīng)用的什么動(dòng)作導(dǎo)致 API Server 的水位和資源請(qǐng)求高,最終找到具體應(yīng)用進(jìn)行止血,解決問(wèn)題。
Prometheus For ACK Pro
阿里云近期推出了 Prometheus for ACK Pro ,它是 Prometheus 的升級(jí)服務(wù),能夠在同一張大盤(pán)上看到多個(gè)數(shù)據(jù)源,包括集群事件日志、基于 eBPF 的無(wú)侵入式的應(yīng)用指標(biāo)、網(wǎng)絡(luò)指標(biāo)等,提供一致性的體驗(yàn)。用戶可以通過(guò)一張大盤(pán)的關(guān)聯(lián)分析邏輯,從總覽到細(xì)節(jié),通過(guò)多數(shù)據(jù)源、多角度的可觀測(cè)能力進(jìn)行不同角度的排查。
Tracing 體系介紹
? 應(yīng)用層 Trace
在 ACK 可觀測(cè)體系里, Tracing 體系提供了最終定位根因的能力,它分為兩部分:
第一部分是應(yīng)用層的 Tracing,提供 ARMS APM 能力,支持 OpenTracing、OpenTelemetric 協(xié)議,可以支持多種語(yǔ)言的應(yīng)用。針對(duì) Java 也提供了無(wú)侵入式的 APM 能力,只需要在 Pod 上打上 annotation, Java 應(yīng)用的 Pod 即可享受實(shí)時(shí)的監(jiān)控?cái)?shù)據(jù)服務(wù),可以查看實(shí)時(shí)的應(yīng)用水位、 JVM 的性能指標(biāo)、應(yīng)用上下游分布式和微服務(wù)的全局調(diào)用 top 圖等,也支持 Profiling 以及代碼堆棧級(jí)的調(diào)用監(jiān)控能力。不同語(yǔ)言可以匯聚成同一張分布式調(diào)用追蹤大圖,自上而下地查看一次分布式調(diào)用,從而定位、診斷問(wèn)題。
? 集群網(wǎng)絡(luò)、調(diào)用 Trace
第二部分是集群網(wǎng)絡(luò)和調(diào)用 Trace。
近期我們推出了基于 eBPF 網(wǎng)絡(luò)層面的 Tracing 能力。通過(guò) eBPF 插樁技術(shù),在內(nèi)核層面實(shí)現(xiàn)了零代碼改動(dòng)且非常低性能消耗的網(wǎng)絡(luò) Tracing 能力。提供了全局拓?fù)?、快速定位?wèn)題調(diào)用鏈的網(wǎng)絡(luò)拓?fù)湔故疽约百Y源層面展示,也支持在統(tǒng)一的全局架構(gòu)視圖中集合 Metrics、Tracing 和 Logging 多個(gè)角度進(jìn)行可觀測(cè)能力觀察。
基于 ACK 可觀測(cè)能力建設(shè) AIOps體系
事件驅(qū)動(dòng)的 AIOps 體系,用戶可以將事件作為統(tǒng)一的驅(qū)動(dòng)數(shù)據(jù)源進(jìn)行問(wèn)題的發(fā)現(xiàn)、觸達(dá)以及 AI 智能化運(yùn)維操作的橋梁。以 ACK 事件中心為核心,構(gòu)造了統(tǒng)一的事件格式規(guī)范,K8s 的事件會(huì)以統(tǒng)一的事件配置格式提供給用戶,最后以事件中心為核心,通過(guò)統(tǒng)一的事件處理流提供給用戶。用戶可以通過(guò)訂閱事件做事件的智能化運(yùn)維以及構(gòu)建其體系。用戶可以通過(guò)某個(gè)應(yīng)用的業(yè)務(wù)進(jìn)行業(yè)務(wù)事件推送,并對(duì)業(yè)務(wù)事件進(jìn)行智能化運(yùn)維處理,比如智能的擴(kuò)容或縮容等。
此外,我們也提供了 ACK 報(bào)警中心,通過(guò)統(tǒng)一的報(bào)警配置為用戶構(gòu)建 AIOps 的體系,幫助用戶快速建立運(yùn)維的訂閱、收發(fā)和問(wèn)題排障、處理體系。
報(bào)警中心會(huì)為用戶提供統(tǒng)一的配置,幫助用戶快速建立 ACK 場(chǎng)景上異常診斷的異常規(guī)則集。ACK 報(bào)警中心提供了開(kāi)箱即用的報(bào)警能力,沉淀了常用的容器場(chǎng)景異常規(guī)則集,開(kāi)箱即用。其次,可以通過(guò)報(bào)警消息的細(xì)粒度訂閱關(guān)系構(gòu)建 ITOps 體系,不同的異??梢酝ㄟ^(guò)報(bào)警中心的訂閱配置關(guān)系投遞到真正能夠解決異常的人手里。ACK 也沉淀了標(biāo)準(zhǔn)的異常以及對(duì)應(yīng)標(biāo)準(zhǔn)異常處理的 SOP 手冊(cè),發(fā)現(xiàn)報(bào)警時(shí),會(huì)提示異常類型,以及為用戶提供處理異常的標(biāo)準(zhǔn) SOP 修復(fù)流程。
基于 ACK 可觀測(cè)能力建設(shè) FinOps 體系
越來(lái)越多的用戶面臨了上云階段或上云后治理階段的降本增效問(wèn)題,主要存在以下幾個(gè)方面的痛點(diǎn):
? 上云之前——如何上云,難規(guī)劃;
? 上云之后——云產(chǎn)品種類豐富,集群資源類型也豐富,計(jì)費(fèi)難;
? 高度 SaaS 化的應(yīng)用部署在同一個(gè)集群中進(jìn)行共享,成本分賬難;
? 每年都會(huì)有新的業(yè)務(wù)生成和下線,集群和資源的使用關(guān)系是動(dòng)態(tài)的,難以進(jìn)行持續(xù)的優(yōu)化和治理;
? 此前一般使用 Excel 表對(duì)能力進(jìn)行管理,在云原生的場(chǎng)景下有豐富的用戶應(yīng)用和有豐富的賬單資源類型,難以管理。
ACK 提供了云原生企業(yè) IT 成本治理方案,通過(guò)多維度的成本分?jǐn)偤凸浪隳P?,為集群的資源進(jìn)行成本估算和分?jǐn)偂?梢酝ㄟ^(guò)根因的下鉆和趨勢(shì)的預(yù)測(cè)進(jìn)行成本洞察,集群上多個(gè)應(yīng)用業(yè)務(wù)的成本可以細(xì)粒度下鉆,進(jìn)行成本拆分。對(duì)多集群場(chǎng)景上的成本提供了成熟的解決方案覆蓋,以及提供企業(yè)云原生 IT 成本治理的專家服務(wù)。
此外,我們還推出了內(nèi)置的應(yīng)用資源畫(huà)像以及應(yīng)用資源的智能推薦,可以為資源推薦合適的成本以及進(jìn)行預(yù)算控制,最后會(huì)根據(jù)不同的場(chǎng)景進(jìn)行成本優(yōu)化,如大數(shù)據(jù)、AI、游戲等。
最后,支持多樣化場(chǎng)景,包括多云和混合云等都能在統(tǒng)一的平面進(jìn)行展示和管理。
客戶案例
中華財(cái)險(xiǎn)作為互聯(lián)網(wǎng)金融的頭部公司,有千核級(jí)別的集群規(guī)模,同時(shí)管理運(yùn)維多個(gè) SaaS 化線上業(yè)務(wù),具有高度多租化、對(duì)業(yè)務(wù)穩(wěn)定性要求高、對(duì)業(yè)務(wù)資源/成本趨勢(shì)敏感度高等行業(yè)特點(diǎn)。
中華財(cái)險(xiǎn)從傳統(tǒng) IT 架構(gòu)到云原生化的過(guò)程中,面臨著容量規(guī)劃難、算清成本難、閑置資源難發(fā)現(xiàn)以及成本優(yōu)化和業(yè)務(wù)穩(wěn)定性難以平衡的挑戰(zhàn)。
我們通過(guò) ACK 的成本治理解決方案為它進(jìn)行了壓測(cè)、容量規(guī)劃,通過(guò) ACK 成本分析進(jìn)行業(yè)務(wù)分賬的賬單管理和分析,解決了閑置資源的優(yōu)化,為其提供了分配資源的優(yōu)化策略,最后通過(guò)容器服務(wù)提供了細(xì)粒度的容器部署以及彈性策略等優(yōu)化手段。
上云前,客戶集群的資源分配閑置率高達(dá) 30%+,而通過(guò)我們提供的成本治理方案,閑置率降至 10% 以下,為行業(yè)領(lǐng)先水平。
