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