天天看點

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦

作者 | 骐羽  阿裡巴巴技術專家

導讀:本篇是“SpringCloud 應用在 Kubernetes 上的最佳實踐”系列文章的第六篇,主要介紹了如何保障生産環境服務穩定,做到随時釋出,進而加快業務的疊代和上線速度。

相關文章推薦:

前言

在應用釋出上線的時候我們最擔心的莫過于因為代碼的 bug 引發業務的問題,雖然我們可以通過灰階的方式分批釋出減小影響範圍,但是如果能夠在釋出的過程中從實時監控中快速的發現問題進行復原,那麼就能縮短業務受影響的時間。是以我們可以看到灰階、監控、復原是整個釋出過程中不可或缺的三大利器,有了這三大利器後,我們能夠做到随時釋出,進而加快業務的疊代和上線速度。而監控作為基礎設施的一個重要環節,是保障生産環境服務穩定不可或缺的一部分,目前 EDAS 提供了非常豐富的監控能力,下面我們從不同的場景來詳細介紹一下這些監控能力。

體系化監控能力搭建

監控體系,最怕的就是有覆寫不到的地方,一個覆寫全面的監控應該是從基礎設施到上層應用均有對應的手段去覆寫:

  • 首先,如果故障産生時,最先感覺到的其實是業務的受損,如交易量下跌、登陸的 UV 下跌等等;
  • 而如果繼續往下鑽,如果業務叢集很大的時候,我們最先需要定位到某一個服務或者某一台機器,這個過程如果沒有相應的工具相佐猶如大海撈針,是以一個分布式鍊路級别的應用監控會是建設 Spring Cloud 應用的很好的配搭;
  • 等到我們找到了相應的服務要開始進行定位分析的時候,根據問題類型(是錯是慢?)接下來需要開始分析 JVM、記憶體、CPU 等次元的名額;
  • 最後我們可能會發現這個問題是由于業務代碼引起,也有可能由于基礎設施引起,而在 K8s 中,Prometheus 目前是屬于容器領域基礎監控最厲害的軍刀。
SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦

如上圖所示,目前 EDAS 結合阿裡雲上的某些雲産品,完全能夠滿足日常的運維的需要并幫忙業務開發的同學快速的定位線上問題。

EDAS 正常監控能力

1. 系統監控

應用執行個體的基礎監控資訊:

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦

上圖功能提供了以應用執行個體的次元來檢視每個執行個體的監控資訊,提供的 JVM / CPU / Load / 記憶體等的監控資訊也是我們經常需要關注的,當發現記憶體占用高,并且有頻繁的 FullGCC 的情況時,我們可以通過建立記憶體快照進行分析來快速定位問題。SQL 分析的能力也能快速幫助我們定位到慢查詢用來排查問題。

2. 應用服務監控

應用服務接口監控資訊:

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦

這裡提供了以接口次元的監控資訊,可以詳細的看到接口在最近一段時間的請求資訊,這裡重點介紹一下接口快照功能,通過接口快照我們可以看到該接口的請求耗時,以及請求的 TraceId,根據這個 TraceId 我們可以詳細的看到本次請求的調用鍊以及調用的方法棧。

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦
SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦
SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦

調用鍊路的追蹤在分布式系統下是一個必不可少的工具,尤其是在排查上下遊依賴中究竟是哪個系統拖慢了整個請求非常有用,在調用的方法棧中可以直覺的追蹤到調用出錯的地方。

3. 應用業務監控

在 EDAS 中我們支援應用自定義業務監控,這需要我們開啟進階監控的能力。從業務的視角來衡量應用的性能和穩定性,可以通過自定義來采集業務資訊,來實時展現業務名額,幫助業務進一步完善監控資訊。詳細的監控配置可以參考 ARMS 業務監控。

4. Prometheus 監控

監控産品的曆史由來已久,但是随着雲原生技術的持續火熱,Prometheus 作為新生代的開源監控系統,慢慢成為了雲原生體系的事實标準。而在 EDAS 中的進階監控産品 ARMS 已經全面對接開源 Prometheus 生态,支援類型豐富的元件監控,提供多種開箱即用的預置監控大盤,且提供全面托管的 Prometheus 服務,更多的詳細内容可以參考 ARMS Prometheus。

通過以上這些監控能力,可以大大縮短線上問題從發現到定位再到解決的時間,提高開發和運維人員排查和解決問題的效率。

EDAS 應用釋出場景中的監控

以阿裡巴巴集團的經驗舉例子,超一半以上的大故障都是在釋出過程中産生,EDAS 針對釋出這一場景結合 Kubernetes 的能力做了結合,其中的精髓内容總結三個詞:先發、再看、再發。通俗的解釋就是可以利用 EDAS 中分批(灰階)釋出能力,同時在釋出視圖中,確定相關的名額回歸正常之後,再開始下一批釋出了。

目前 EDAS 能夠提供在三個次元上的名額監控資料,用來判斷釋出是否正常,列舉如下:

1. 應用業務名額

目前 EDAS 以接口的次元提供了每個接口在釋出前後的總的請求數對比以及請求該比例的圖例,并且還能夠詳細的看到在釋出前後該接口的錯誤數、響應時間以及單機的請求數對比,如下圖所示:

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦

通過上圖,我們可以直覺的看到,當我們釋出後應用的接口請求是否正常,以此來判斷是否會對業務産生影響。

2. 應用異常

在釋出的過程中,我們也需要時刻的關注在釋出中是不是有新的異常産生,我們想要有地方能夠看到異常資訊,避免直接登入到機器上去看業務日志,我們的釋出監控提供了日志聚合分析的能力,可以在釋出的過程提供實時的異常日志分析展示,如下圖是以:

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦

3. 系統名額

在新的業務功能上線的時候,我們除了對業務本身的一些異常和名額進行關注外,還需要關注系統的名額,這關系到我們需要評估現有的機器是否能夠支撐我們的所有流量,是否需要進行水準擴容來更好的支援業務,我們的釋出監控系統同樣內建了系統的監控的能力,為我們的釋出過程來保駕護航,詳細的監控如下圖所示:

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 線上釋出(可監控)前言體系化監控能力搭建EDAS 正常監控能力EDAS 應用釋出場景中的監控後續及結語課程推薦

以上内容我們通過三個次元為大家展示了在整個釋出的過程中 EDAS 為我們提供的完備的監控能力,通過這個能力可以讓我們的每一次釋出都能做到不慌不忙,心中有數,每一次釋出都能平滑讓業務進行更新。同時我們也提供了檢視釋出報告的功能,将釋出監控資訊形成了一份清晰的可視化分析報告供分享他人。

後續及結語

本章我們介紹了 EDAS 中提供的監控能力以及如何對 EDAS Kubernetes 叢集上的 Spring Cloud 應用在釋出的過程中如何看監控發現異常資訊,但是如果出現異常了該怎麼辦呢?接下來的文章我們将繼續介紹,當出現問題後我們如何對已經釋出的應用進行快速的復原。

課程推薦

去年,CNCF 與 阿裡雲聯合釋出了《雲原生技術公開課》已經成為了 Kubernetes 開發者的一門“必修課”。今天,阿裡雲再次集結多位具有豐富雲原生實踐經驗的技術專家,正式推出《雲原生技術實踐公開課》。課程内容由淺入深,專注講解“ 落地實踐”。還為學習者打造了真實、可操作的實驗場景,友善驗證學習成果,也為之後的實踐應用打下堅實基礎。

點選連結即可免費觀看:

https://developer.aliyun.com/learning/roadmap/cloudnative2020
阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公衆号。”