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







































