可觀察性:如何讓集成開發(fā)環(huán)境(IDE)進行調(diào)試
譯文【51CTO.com快譯】新冠疫情為許多企業(yè)帶來了更大的推動力,以擴展云原生和分布式環(huán)境的運營。為了生存和發(fā)展,企業(yè)現(xiàn)在必須認真研究易于使用的云原生技術(shù)(例如API管理和集成解決方案、云原生產(chǎn)品、集成平臺即服務(wù)以及低代碼平臺),加快上市時間,并實現(xiàn)重復(fù)使用和共享。然而由于具有的分布式特性,這些云原生應(yīng)用程序在管理方面更加復(fù)雜,并且隨著它們的擴展而增加。
將可觀察性構(gòu)建到應(yīng)用程序中允許企業(yè)的團隊自動收集和分析數(shù)據(jù),以優(yōu)化應(yīng)用程序,并解決可能影響用戶的潛在問題。此外,它顯著減少了應(yīng)用程序在運行時出現(xiàn)問題的調(diào)試時間。這使開發(fā)人員可以更多地專注于生產(chǎn)任務(wù),例如開發(fā)新功能。
可觀察性具有三個關(guān)鍵組件:日志、度量、跟蹤。為了全面了解系統(tǒng)的行為,有必要收集這三個組件,而只有一兩個組件不足以調(diào)試應(yīng)用程序的復(fù)雜行為。
本文將討論可觀察性的重要性,還將研究Choreo(用于云原生工程的集成平臺即服務(wù))如何使開發(fā)人員能夠使用深度可觀察性功能來觀察應(yīng)用程序的性能、識別異常和解決問題。
1.自動可觀察性
如果想在生產(chǎn)中收集日志、度量、跟蹤的數(shù)據(jù)而不影響應(yīng)用程序性能,那么在應(yīng)用程序中構(gòu)建可觀察性需要付出巨大的努力。確??捎^察性對性能的影響達到最小是開發(fā)可觀察性框架時面臨的主要挑戰(zhàn)之一。如果要跟蹤所有請求,那么就會帶來很大的性能開銷。
為了使應(yīng)用程序具有可觀察性,開發(fā)人員需要編寫性能優(yōu)化的可觀察性代碼,并使用自適應(yīng)采樣等算法,這些算法可以在不同的流量條件下動態(tài)控制性能開銷。不幸的是,許多應(yīng)用程序開發(fā)人員沒有實現(xiàn)收集所有三個可觀察性支柱的代碼。
這有兩個原因:首先,許多開發(fā)人員不具備所需的專業(yè)知識水平。其次,所需的工作量很大,使其成為一項代價高昂的工作。
而將可觀察性集成到應(yīng)用程序中需要多輪優(yōu)化和廣泛的測試,以確保沒有顯著的性能開銷。
2.Choreo如何提供幫助
Choreo的設(shè)計方式使開發(fā)人員不必自己開發(fā)具有可觀察性的應(yīng)用程序。Ballerina是Choreo的底層編程語言,具有強大的可觀察性框架,使用Ballerina編寫的程序可以實現(xiàn)完全的可觀察性。Choreo使用Ballerina的可觀察性框架為其服務(wù)收集可觀察性數(shù)據(jù)。
由于Ballerina的可觀察性框架經(jīng)過精心設(shè)計以確保最小的性能開銷,因此Choreo應(yīng)用程序可以在打開可觀察性的情況下在生產(chǎn)環(huán)境中運行??捎^察性數(shù)據(jù)以各種形式的可視化呈現(xiàn)給用戶。用戶可以使用這些可視化功能來優(yōu)化應(yīng)用程序,然后識別和解決可能對用戶體驗產(chǎn)生不利影響的問題。圖1顯示了Choreo應(yīng)用程序的主要可觀察性頁面。
圖1 Choreo中的可觀察性的主頁
(1)使用平均值調(diào)試高響應(yīng)時間
響應(yīng)時間是一個關(guān)鍵的性能指標,對用戶體驗有著直接影響。高響應(yīng)時間可能會導(dǎo)致用戶體驗不佳,從而導(dǎo)致用戶流失。不幸的是,開發(fā)人員在開發(fā)應(yīng)用程序時并沒有過多關(guān)注應(yīng)用程序的響應(yīng)時間(延遲)。只有在生產(chǎn)中部署應(yīng)用程序之后,他們才會發(fā)現(xiàn)此類問題。
即使在開發(fā)人員優(yōu)化響應(yīng)時間的情況下,工作負載條件也會隨時間變化,從而導(dǎo)致響應(yīng)時間異常。Choreo在不同點收集應(yīng)用程序的延遲,這使用戶能夠立即識別其代碼中的瓶頸。響應(yīng)時間過長可能是由于代碼中的問題,或者可能與調(diào)用外部端點的延遲有關(guān)。而在Choreo中,開發(fā)人員可以識別并解決這些問題,而無需花費大量時間進行調(diào)試。圖2顯示了在Choreo中開發(fā)的應(yīng)用程序的延遲細分情況。需要注意的是,不同的外部(連接器)調(diào)用將如何影響總延遲。
圖2在Choreo中開發(fā)的應(yīng)用程序的延遲細分情況
(2)調(diào)試單個請求延遲
雖然可以使用指標調(diào)試某些延遲行為,但與延遲相關(guān)的更復(fù)雜問題無法使用圖2顯示的平均延遲值進行調(diào)試。此類問題的示例包括響應(yīng)時間的逐漸增加、平均響應(yīng)時間的突然下降或峰值(稱為水平偏移),以及在隨機時間點出現(xiàn)的延遲峰值等。
Choreo允許開發(fā)人員更精細地挖掘數(shù)據(jù)以檢測此類問題。例如,Choreo可觀察性收集的跟蹤數(shù)據(jù)允許開發(fā)人員通過調(diào)查單個請求的延遲細分來調(diào)試延遲峰值。圖3顯示了在Choreo中開發(fā)的應(yīng)用程序的吞吐量和延遲行為。
圖3在Choreo中開發(fā)的應(yīng)用程序的吞吐量和延遲行為
在此假設(shè)用戶了解特定請求的延遲??梢酝ㄟ^點擊圖表中的特定點來實現(xiàn)。當單擊一個點時,就可以獲得單個請求的延遲和延遲細分(Choeo顯示請求在請求路徑中花費時間最多的位置)。圖4對此進行了說明。
圖4 查看請求在請求路徑中花費時間最多的位置
(3)調(diào)試復(fù)雜問題
雖然可以通過分析延遲數(shù)據(jù)來解決大量問題(例如后端緩慢),但有些問題需要更詳細的分析。此類分析要求在統(tǒng)一視圖中查看多個指標和日志。這些指標包括系統(tǒng)指標(例如CPU和內(nèi)存)和應(yīng)用指標(例如吞吐量、延遲和錯誤率)。Choreo的診斷視圖有助于實現(xiàn)這一點。它允許開發(fā)人員深入和調(diào)試諸如高CPU使用率之類的行為,并將高CPU使用率與另一個性能指標的變化(例如延遲的增加)聯(lián)系起來。圖5顯示了Choreo可觀察性的診斷視圖。
圖5 Choreo可觀察性的診斷視圖
(4)在配置較低環(huán)境中調(diào)試
由于引入新功能和錯誤修復(fù)等各種原因,開發(fā)人員經(jīng)常需要編寫新代碼或修改現(xiàn)有代碼。在發(fā)生這種情況時,可能會將與性能相關(guān)的錯誤引入應(yīng)用程序。Choreo允許在配置較低的環(huán)境中及早發(fā)現(xiàn)此類問題。開發(fā)人員可以在配置較低的環(huán)境中測試他們的應(yīng)用程序,并將其性能行為與以前版本的性能行為進行比較。如果發(fā)現(xiàn)問題,可以在新版本部署到生產(chǎn)中之前解決這些問題。即使是全新的應(yīng)用程序,開發(fā)者仍然可以通過提供示例的測試數(shù)據(jù)/案例在配置較低的環(huán)境中測試應(yīng)用程序。
(5)性能異常警報
持續(xù)監(jiān)控可觀察性儀表板以識別應(yīng)用程序中的異常行為是不切實際的。因此,很多系統(tǒng)都有自動檢測性能異常并提醒相關(guān)方的方法。許多警報系統(tǒng)使用基于閾值的方法向用戶發(fā)送警報。例如,如果CPU利用率高于80%,則會生成并發(fā)出警報。基于閾值的方法具有已知的局限性。首先,它們在確定閾值時需要人工配置和專業(yè)知識。其次,基于閾值的方法由于無法檢測應(yīng)用程序中的復(fù)雜異常模式而具有較低的準確性。
Choreo擁有復(fù)雜的異常檢測框架,該框架使用先進的機器學(xué)習(xí)和異常檢測算法來檢測Choreo用戶應(yīng)用程序中的性能異常。它使用從以前的應(yīng)用程序收集的可觀察性數(shù)據(jù)來訓(xùn)練這些機器學(xué)習(xí)模型。
結(jié)語
雖然服務(wù)網(wǎng)格試圖通過收集服務(wù)可觀察性數(shù)據(jù)的Sidecar微服務(wù)提供可觀察性的解決方案,但默認情況下通過這些Sidecar收集的數(shù)據(jù)不足以執(zhí)行云原生應(yīng)用程序的深度調(diào)試。這種調(diào)試需要在服務(wù)內(nèi)更細粒度的級別收集數(shù)據(jù)(例如,在服務(wù)內(nèi)的不同點對特定請求的延遲進行細分)。
Choreo擁有一個強大的可觀察性框架,可以解決服務(wù)網(wǎng)格中的問題。Choreo還收集了其應(yīng)用程序的所有三個可觀察性支柱,而對應(yīng)用程序性能的影響最小。它以一種可以輕松調(diào)試和檢測應(yīng)用程序性能異常的形式向用戶呈現(xiàn)這些數(shù)據(jù)。此外,Choreo擁有先進的基于機器學(xué)習(xí)的異常檢測技術(shù),可以準確檢測Choreo應(yīng)用程序的性能異常。
原文標題:Observability: Let Your IDE Debug for You,作者:Malith Jayasinghe
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】