2020-04-24 14:15:27分類(lèi):云服務(wù)端開(kāi)發(fā)5976
這是因為我們在一個(gè)系統復雜且分布在多個(gè)微服務(wù)之間的時(shí)代工作。例如,即使是簡(jiǎn)單的電子商務(wù)應用程序也可能具有訂購,產(chǎn)品目錄和運輸服務(wù)。我們的工具和實(shí)踐有時(shí)難以跟上這種復雜性。
它使我想起音樂(lè )和視頻游戲。在視頻游戲的早期,很多音樂(lè )都以MIDI文件的形式出現。這些文件只能播放一組音符,這使音樂(lè )感覺(jué)平坦?,F在,音樂(lè )可以充實(shí)了。我們聽(tīng)見(jiàn)每一種樂(lè )器,都在交響樂(lè )中演奏。節奏和樂(lè )器的結合使音樂(lè )比它們本身更優(yōu)美。
一次只有一個(gè)系統?
在軟件中,我們練習一次監視一個(gè)系統。當我們需要查看其他系統時(shí),我們切換到其他屏幕或工具。但是微服務(wù)就像交響樂(lè )中的樂(lè )器。我們需要一種看待它們的方法,一眼就能看到它們產(chǎn)生的音樂(lè )。
在本文中,我們將探討您可以采取的五個(gè)步驟,以確保您可以監視微服務(wù)以查看它們是否和諧地協(xié)同工作。這也使您可以修復可能會(huì )導致工作不協(xié)調的地方。
微服務(wù)是什么意思?
微服務(wù)是可自主部署的,以業(yè)務(wù)為中心的單元。并非所有部署工件都是單獨的服務(wù)。例如,我可能有一個(gè)微服務(wù),該微服務(wù)具有運行時(shí)組件和ETL組件。我想將它們一起部署,因為它們緊密耦合。在大多數情況下,我也希望將這些作為一項服務(wù)進(jìn)行監視。對于微服務(wù),我希望將它們視為獨立的服務(wù),但還要評估它們之間的相互關(guān)系。
現在,讓我們看看監視微服務(wù)時(shí)需要執行的五個(gè)步驟。
1.確定只需啟動(dòng)幾個(gè)服務(wù)
在實(shí)施或學(xué)習新東西時(shí),嘗試一次性安裝并運行所有精彩功能可能很誘人。在軟件開(kāi)發(fā)中,我們稱(chēng)此為“閃亮工具綜合癥”。我們陷入了無(wú)限的可能性,以至于我們可能會(huì )因為設置事物的復雜性而迷失了自己。
為了避免這種情況,請限制為微服務(wù)監控設置的內容。選擇兩個(gè)或三個(gè)服務(wù)以連接到新的監視工具。然后為每個(gè)重復步驟2至5(請參閱下文)。
您應該選擇哪些服務(wù)?
要從這篇文章的開(kāi)頭繼續進(jìn)行比較,請選擇您的交響樂(lè )中響度最高的樂(lè )器。哪些服務(wù)對您的業(yè)務(wù)最具戰略意義?選擇最具戰略意義的服務(wù)將為您帶來(lái)最大的價(jià)值。
您可能無(wú)法選擇最具有戰略意義的服務(wù)。也許其中一些是舊版應用程序,可能無(wú)法在較新的工具上很好地發(fā)揮作用,或者沒(méi)有使您輕松重新配置它們的測試。在這種情況下,請選擇您認為最安全的幾項服務(wù),并且可以在本地運行,以確保正確連接。
總體目標是將注意力集中在僅提供幾個(gè)服務(wù)上,而無(wú)論您選擇哪種服務(wù)。
2.確定首先要衡量的事情
與限制注意力的想法一致,您需要熟悉要衡量的最重要的一到三個(gè)最重要的指標。一些工具具有許多功能。例如,Retrace可以執行性能指標,警報,集中式日志記錄和錯誤跟蹤。如果您尚未選擇監視工具,那么審查所有功能可能會(huì )令人生畏。
相反,僅查看您最重要的指標中的一到三個(gè),將使您避開(kāi)這種分析癱瘓。這樣一來(lái),您便可以更快地進(jìn)行第3步的操作,而不必試圖一次了解所有內容。
您應該關(guān)注哪些指標?
要弄清楚要關(guān)注哪些指標,了解您的業(yè)務(wù)需求很重要。大多數客戶(hù)或運營(yíng)投訴來(lái)自哪里?是因為服務(wù)關(guān)閉過(guò)多或請求太慢?可能是由于在高負載期間彈出了太多數據庫錯誤。
您對業(yè)務(wù)的了解越深,就越容易選擇適合的指標。而且,為老板提供所需的預算會(huì )更容易,因為您可以購買(mǎi)工具。
如果您發(fā)現自己處于孤立狀態(tài)(與其他小組或部門(mén)分開(kāi)),或者不知該對您的業(yè)務(wù)最重要怎么辦?從四個(gè)黃金信號開(kāi)始。這些信號是一種行之有效的方式,可以從監視服務(wù)中獲得即時(shí)價(jià)值。它們幾乎對所有企業(yè)都通用。Retrace開(kāi)箱即用地支持這些功能,并具有智能默認值,具體取決于您要監視的服務(wù)類(lèi)型。
3.調試APM和記錄軟件
現在,您已經(jīng)完成家庭作業(yè),可以選擇監視工具。使用一到三個(gè)重要指標來(lái)指導您如何看待一個(gè)指標。如果他們有一個(gè)演示實(shí)例,那么您可以盡情地研究?jì)热?,以了解其?shí)際工作原理。這是理想的體驗,因為屏幕截圖只能帶您到現在為止。
無(wú)論指標如何,您都希望在監視工具中看到一些信息。首先,您需要輕松地概述整個(gè)系統。這不僅包括您的運行時(shí)服務(wù),還包括您的數據庫和其他后端組件。這樣一來(lái),您就可以輕松感受到整個(gè)系統的節奏,就像聽(tīng)到一首所有樂(lè )器一起工作的歌曲一樣。
您還需要儀表板,使您可以跨服務(wù)關(guān)聯(lián)。這些可能會(huì )揭示在代碼中不容易看到的關(guān)系。(如果您按照下面列出的步驟5進(jìn)行操作,則可以從這些日志快速跳轉到集中式日志,以查看發(fā)生了什么。)
該工具應該做什么
最后,該工具應使您可以輕松地將概述分為系統的特定服務(wù)和部分。您應該可以切成幾個(gè)不同的尺寸。該工具應該完成查明潛在問(wèn)題的大部分艱苦工作。具有智能默認設置的工具將使此操作變得容易,因為它將以多種粒度設置所需的顯示器組合。
您不僅應查看用于監視的工具,還應查看用于集中日志記錄的工具。我提出集中式日志記錄也是因為監視器總是以某種方式聚合。他們擅長(cháng)顯示趨勢和整體健康狀況。但是在某些時(shí)候,您需要深入挖掘到底發(fā)生了什么。您無(wú)需訪(fǎng)問(wèn)多個(gè)日志字段即可查看跨多個(gè)微服務(wù)的請求的故事。相反,您應該能夠在一處查看來(lái)自多個(gè)服務(wù)的日志。
Retrace具有監視和集中記錄功能,但這不是必需的。監控工具可以與日志記錄工具分開(kāi),只要您可以將日志與在監視器中看到的內容相關(guān)聯(lián)即可,例如,應用程序ID和時(shí)間戳。(在第5步中,我們將討論如何創(chuàng )建強相關(guān)ID。)
4.擴展點(diǎn)的儀器指標
一個(gè)好的工具將具有某種自動(dòng)檢測服務(wù)的方式。通常,這意味著(zhù)您必須添加一個(gè)庫并配置一些屬性才能連接到正確的服務(wù)器。確保該工具支持所選語(yǔ)言和框架的檢測。否則,您將必須在框架的請求生命周期中找到接縫以進(jìn)行自我檢測。一些框架(例如Spring Boot)內置了監視擴展。
即使使用自動(dòng)樂(lè )器,大多數工具也應允許您自定義。這樣一來(lái),您就可以進(jìn)入應用程序中由于不理想的情況而演變而來(lái)的那些怪異的地方。
進(jìn)行檢測和配置后,請在本地運行服務(wù),指向監視器服務(wù)器。確保數據實(shí)際上已從服務(wù)進(jìn)入您的工具。如果您使用的是Retrace,這是一篇很棒的文章,描述了如何驗證應用程序是否正常運行。
5.儀器追蹤到您的日志
即使一切都已連接并開(kāi)始運行,我仍然建議您做一件事。我之前提到過(guò)集中式日志記錄,以及最終找出問(wèn)題的重要性。使用微服務(wù),可能很難跟蹤系統中事件的蹤跡。這使得跨服務(wù)的錯誤幾乎找不到。
我建議在每個(gè)服務(wù)中實(shí)現跟蹤ID。您需要以一種標準的方式在整個(gè)服務(wù)中執行此操作,以便一個(gè)跟蹤ID可以在整個(gè)系統中流動(dòng)。OpenTracing標準是實(shí)現此目標的好方法,并且許多框架都有支持它的工具庫。有了此功能,您將能夠輕松查詢(xún)跨多個(gè)服務(wù)的日志,并探究問(wèn)題如何在您的軟件中泛濫。
結論
監視微服務(wù)就像監視大多數系統一樣,但是只有幾步曲折。您將需要一個(gè)可以同時(shí)監視多個(gè)服務(wù)的工具。您還需要向每個(gè)服務(wù)添加跟蹤信息,以便您了解它們之間的交互方式。有了這些,您將擁有美麗的服務(wù)交響樂(lè ),隨時(shí)隨地提供見(jiàn)解,使您能夠就我們的擴展和架構做出明智的決策。