溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

發(fā)布時(shí)間:2022-01-05 18:02:09 來(lái)源:億速云 閱讀:124 作者:柒染 欄目:云計(jì)算

這篇文章將為大家詳細(xì)講解有關(guān)SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

前言

在應(yīng)用發(fā)布上線(xiàn)的時(shí)候我們最擔(dān)心的莫過(guò)于因?yàn)榇a的 bug 引發(fā)業(yè)務(wù)的問(wèn)題,雖然我們可以通過(guò)灰度的方式分批發(fā)布減小影響范圍,但是如果能夠在發(fā)布的過(guò)程中從實(shí)時(shí)監(jiān)控中快速的發(fā)現(xiàn)問(wèn)題進(jìn)行回滾,那么就能縮短業(yè)務(wù)受影響的時(shí)間。因此我們可以看到灰度、監(jiān)控、回滾是整個(gè)發(fā)布過(guò)程中不可或缺的三大利器,有了這三大利器后,我們能夠做到隨時(shí)發(fā)布,從而加快業(yè)務(wù)的迭代和上線(xiàn)速度。而監(jiān)控作為基礎(chǔ)設(shè)施的一個(gè)重要環(huán)節(jié),是保障生產(chǎn)環(huán)境服務(wù)穩(wěn)定不可或缺的一部分,目前 EDAS 提供了非常豐富的監(jiān)控能力,下面我們從不同的場(chǎng)景來(lái)詳細(xì)介紹一下這些監(jiān)控能力。

體系化監(jiān)控能力搭建

監(jiān)控體系,最怕的就是有覆蓋不到的地方,一個(gè)覆蓋全面的監(jiān)控應(yīng)該是從基礎(chǔ)設(shè)施到上層應(yīng)用均有對(duì)應(yīng)的手段去覆蓋:

  • 首先,如果故障產(chǎn)生時(shí),最先感知到的其實(shí)是業(yè)務(wù)的受損,如交易量下跌、登陸的 UV 下跌等等;

  • 而如果繼續(xù)往下鉆,如果業(yè)務(wù)集群很大的時(shí)候,我們最先需要定位到某一個(gè)服務(wù)或者某一臺(tái)機(jī)器,這個(gè)過(guò)程如果沒(méi)有相應(yīng)的工具相佐猶如大海撈針,所以一個(gè)分布式鏈路級(jí)別的應(yīng)用監(jiān)控會(huì)是建設(shè) Spring Cloud 應(yīng)用的很好的配搭;

  • 等到我們找到了相應(yīng)的服務(wù)要開(kāi)始進(jìn)行定位分析的時(shí)候,根據(jù)問(wèn)題類(lèi)型(是錯(cuò)是慢?)接下來(lái)需要開(kāi)始分析 JVM、內(nèi)存、CPU 等維度的指標(biāo);  

  • 最后我們可能會(huì)發(fā)現(xiàn)這個(gè)問(wèn)題是由于業(yè)務(wù)代碼引起,也有可能由于基礎(chǔ)設(shè)施引起,而在 K8s 中,Prometheus 目前是屬于容器領(lǐng)域基礎(chǔ)監(jiān)控最厲害的軍刀。

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

如上圖所示,目前 EDAS 結(jié)合阿里云上的某些云產(chǎn)品,完全能夠滿(mǎn)足日常的運(yùn)維的需要并幫忙業(yè)務(wù)開(kāi)發(fā)的同學(xué)快速的定位線(xiàn)上問(wèn)題。

EDAS 常規(guī)監(jiān)控能力

1. 系統(tǒng)監(jiān)控

應(yīng)用實(shí)例的基礎(chǔ)監(jiān)控信息:

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

上圖功能提供了以應(yīng)用實(shí)例的維度來(lái)查看每個(gè)實(shí)例的監(jiān)控信息,提供的 JVM / CPU / Load / 內(nèi)存等的監(jiān)控信息也是我們經(jīng)常需要關(guān)注的,當(dāng)發(fā)現(xiàn)內(nèi)存占用高,并且有頻繁的 FullGCC 的情況時(shí),我們可以通過(guò)創(chuàng)建內(nèi)存快照進(jìn)行分析來(lái)快速定位問(wèn)題。SQL 分析的能力也能快速幫助我們定位到慢查詢(xún)用來(lái)排查問(wèn)題。

2. 應(yīng)用服務(wù)監(jiān)控

應(yīng)用服務(wù)接口監(jiān)控信息:

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

這里提供了以接口維度的監(jiān)控信息,可以詳細(xì)的看到接口在最近一段時(shí)間的請(qǐng)求信息,這里重點(diǎn)介紹一下接口快照功能,通過(guò)接口快照我們可以看到該接口的請(qǐng)求耗時(shí),以及請(qǐng)求的 TraceId,根據(jù)這個(gè) TraceId 我們可以詳細(xì)的看到本次請(qǐng)求的調(diào)用鏈以及調(diào)用的方法棧。

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

調(diào)用鏈路的追蹤在分布式系統(tǒng)下是一個(gè)必不可少的工具,尤其是在排查上下游依賴(lài)中究竟是哪個(gè)系統(tǒng)拖慢了整個(gè)請(qǐng)求非常有用,在調(diào)用的方法棧中可以直觀(guān)的追蹤到調(diào)用出錯(cuò)的地方。

3. 應(yīng)用業(yè)務(wù)監(jiān)控

在 EDAS 中我們支持應(yīng)用自定義業(yè)務(wù)監(jiān)控,這需要我們開(kāi)啟高級(jí)監(jiān)控的能力。從業(yè)務(wù)的視角來(lái)衡量應(yīng)用的性能和穩(wěn)定性,可以通過(guò)自定義來(lái)采集業(yè)務(wù)信息,來(lái)實(shí)時(shí)展現(xiàn)業(yè)務(wù)指標(biāo),幫助業(yè)務(wù)進(jìn)一步完善監(jiān)控信息。詳細(xì)的監(jiān)控配置可以參考 ARMS 業(yè)務(wù)監(jiān)控。

4. Prometheus 監(jiān)控

監(jiān)控產(chǎn)品的歷史由來(lái)已久,但是隨著云原生技術(shù)的持續(xù)火熱,Prometheus 作為新生代的開(kāi)源監(jiān)控系統(tǒng),慢慢成為了云原生體系的事實(shí)標(biāo)準(zhǔn)。而在 EDAS 中的高級(jí)監(jiān)控產(chǎn)品 ARMS 已經(jīng)全面對(duì)接開(kāi)源 Prometheus 生態(tài),支持類(lèi)型豐富的組件監(jiān)控,提供多種開(kāi)箱即用的預(yù)置監(jiān)控大盤(pán),且提供全面托管的 Prometheus 服務(wù),更多的詳細(xì)內(nèi)容可以參考 ARMS Prometheus。

通過(guò)以上這些監(jiān)控能力,可以大大縮短線(xiàn)上問(wèn)題從發(fā)現(xiàn)到定位再到解決的時(shí)間,提高開(kāi)發(fā)和運(yùn)維人員排查和解決問(wèn)題的效率。

EDAS 應(yīng)用發(fā)布場(chǎng)景中的監(jiān)控

以阿里巴巴集團(tuán)的經(jīng)驗(yàn)舉例子,超一半以上的大故障都是在發(fā)布過(guò)程中產(chǎn)生,EDAS 針對(duì)發(fā)布這一場(chǎng)景結(jié)合 Kubernetes 的能力做了結(jié)合,其中的精髓內(nèi)容總結(jié)三個(gè)詞:先發(fā)、再看、再發(fā)。通俗的解釋就是可以利用 EDAS 中分批(灰度)發(fā)布能力,同時(shí)在發(fā)布視圖中,確保相關(guān)的指標(biāo)回歸正常之后,再開(kāi)始下一批發(fā)布了。

目前 EDAS 能夠提供在三個(gè)維度上的指標(biāo)監(jiān)控?cái)?shù)據(jù),用來(lái)判斷發(fā)布是否正常,列舉如下:

1. 應(yīng)用業(yè)務(wù)指標(biāo)

目前 EDAS 以接口的維度提供了每個(gè)接口在發(fā)布前后的總的請(qǐng)求數(shù)對(duì)比以及請(qǐng)求該比例的圖例,并且還能夠詳細(xì)的看到在發(fā)布前后該接口的錯(cuò)誤數(shù)、響應(yīng)時(shí)間以及單機(jī)的請(qǐng)求數(shù)對(duì)比,如下圖所示:

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

通過(guò)上圖,我們可以直觀(guān)的看到,當(dāng)我們發(fā)布后應(yīng)用的接口請(qǐng)求是否正常,以此來(lái)判斷是否會(huì)對(duì)業(yè)務(wù)產(chǎn)生影響。

2. 應(yīng)用異常

在發(fā)布的過(guò)程中,我們也需要時(shí)刻的關(guān)注在發(fā)布中是不是有新的異常產(chǎn)生,我們想要有地方能夠看到異常信息,避免直接登錄到機(jī)器上去看業(yè)務(wù)日志,我們的發(fā)布監(jiān)控提供了日志聚合分析的能力,可以在發(fā)布的過(guò)程提供實(shí)時(shí)的異常日志分析展示,如下圖所以:

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

3. 系統(tǒng)指標(biāo)

在新的業(yè)務(wù)功能上線(xiàn)的時(shí)候,我們除了對(duì)業(yè)務(wù)本身的一些異常和指標(biāo)進(jìn)行關(guān)注外,還需要關(guān)注系統(tǒng)的指標(biāo),這關(guān)系到我們需要評(píng)估現(xiàn)有的機(jī)器是否能夠支撐我們的所有流量,是否需要進(jìn)行水平擴(kuò)容來(lái)更好的支持業(yè)務(wù),我們的發(fā)布監(jiān)控系統(tǒng)同樣集成了系統(tǒng)的監(jiān)控的能力,為我們的發(fā)布過(guò)程來(lái)保駕護(hù)航,詳細(xì)的監(jiān)控如下圖所示:

SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的

以上內(nèi)容我們通過(guò)三個(gè)維度為大家展示了在整個(gè)發(fā)布的過(guò)程中 EDAS 為我們提供的完備的監(jiān)控能力,通過(guò)這個(gè)能力可以讓我們的每一次發(fā)布都能做到不慌不忙,心中有數(shù),每一次發(fā)布都能平滑讓業(yè)務(wù)進(jìn)行升級(jí)。同時(shí)我們也提供了查看發(fā)布報(bào)告的功能,將發(fā)布監(jiān)控信息形成了一份清晰的可視化分析報(bào)告供分享他人。

關(guān)于SpringCloud應(yīng)用在Kubernetes上的最佳實(shí)踐是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI