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